SlideShare uma empresa Scribd logo
1 de 26
Чем Python плох для стартапа?
Александр Сапронов:
a@sapronov.me
ru.linkedin.com/in/alexsapronov
Хто я такой?
- Пишу код за деньги в Welltory.com
- В основном на Python
- Делаю Python Дайджест
- Организую встречи PyNSK
- Делал конференцию
PyCon Siberia 2016
- Люблю делать всякую движуху 2
Очемэто Как живет проект в первый год
Почему в первый год не важен язык?
Почему Python подходит для бизнеса?
Почему менять стэк разработки больно?
Почему вы захотите поменять Python?
P.S. Доклад несерьезный 3
Доклад про Welltory
4
Что такое Welltory
● Стартап
● Активная разработка началась ~1 год назад
● Собираем данные о жизни пользователя
● Обрабатываем данные - чистим, сжимаем
● Анализируем - строим корреляции
● Строим рекомендации - сообщаем юзеру о проблемах здоровья
Welltory - персональный аналитик здоровья
5
6
Чух-чух
7
Почему Tornado
вам не надо?
Ситуация #1
Программист
Не знаю какие данные будем хранить,
Не знаю сколько юзеров ждем.
Не хочу переписывать много раз
А что если….
Не взять MongoDB и Tornado!?
Они же быстрые и масштабируются, их
используют в продакшене
9
MongoDB для стартапа
- Можно сваливать в БД
данные и не думать
- Не надо админа, чтобы
начать работать
- Легко масштабировать
- Модно, чо
- Нет хорошей системы
constraints. Загадите базу
- Аналитик знает SQL, но не
знает монгу
- Без JSON Schema вы
запутаетесь в коллекциях
+ -
10
Tornado для стартапа
- Работает быстро
- Гибкий
- Живой проект
- Асинхронщина
- Не популярен как Django
- Нет CRUDL админки
- Хочешь <что-то>? Пиши
сам
+ -
11
В итоге
- Но ни разу не масштабировали ее
- Писали валидацию данных руками
- Стали использовать JSON Schema,
потому что структура нужна же
- Использовали дополнительно
PostgreSQL и конвертировали
данные туда, потому что SAAS’ы
Выбрали MongoDB
- Но ни разу даже 10rps не было
- Пришлось писать Oauth2 с нуля
- Пришлось писать механизм сессий
самим
- Написали асинхронные клиенты для
популярных API
Выбрали Tornado
12
В итоге
Удалось переписать за 3 недели * 2 программиста
Скорость разработки увеличилась в 4 раза
На самом деле:
13
А вы верите в TypeError?
Ситуация #2
Типизация в Python
- Гибкость в разработке
- Скорость разработки
- Читаемые ошибки
- Легкая в освоении
- Вы ловите ошибки в продакшене
- Вы точно(!) сложите None и set
- Медленней чем C
- Без культуры разработки - вы
+ -
Динамическая сильная неявная
15
Не любите тесты?
А, значит любите ValueError?
Ситуация #3
Программист
У меня нет времени на тесты
Зачем тесты? Есть же тестировщики
Я не делаю ошибок
*лять, на дворе воскресенье, а я
правлю 100500-ую ошибку из Sentry
17
Тесты для стартапа
- Дешевое регресс
тестирование
- Меньше дурацких багов
- МОЖНО БОЛЬШЕ ФИЧ
- Где найти время?
- Где найти денег?
- НУЖНО БОЛЬШЕ ФИЧ
+ -
18
В итоге
- Тесты - часть разработки
- Тесты “проданы” бизнесу (бизнес одобряет)
- Пацан накодил - пацан протестил (видео)
- Баг - пишешь сначала тест
- Цепочка dev -> qa > dev -> qa -> dev…
сократилась в 3 раза
Results (95.02s):
1091 passed
19
А что он тормозит?
Давай перепишем на * ?
Ситуация #4
Команда маркетинга
Мы хотим нагнать дофигилиард юзеров,
мы не упадем?
Мы опять упали, программисты - *?№!
Почему так медленно
данные считаются?!
Сделайте что-нибудь, емае!
Мы не можем продавать.
21
Программист №1 Программист №2
Добавим кэш! И серверов
еще!
А давай... А давай...
Перепишем на * ?
22
В итоге
- Не переписали проект на другой язык
- Но мы:
- Добавили еще тестов
- Начали делать нагрузочные тесты
- Пересмотрели архитектуру системы
- Привлекли крутого админа для настройки
мониторингов
- Начали экспериментировать с языками на JVM
23
Чему же мы научились сегодня?
24
Python - язык, который позволяет
разрабатывать быстро и качественно.
Но сначала надо выстроить процессы.
25
a@sapronov.me
@sapronovalex92
ru.linkedin.com/in/alexsapronov
Питоны кончились…
Вопросы?
26

Mais conteúdo relacionado

Mais procurados

Тестирование Локализации и Интернализации
Тестирование Локализации и ИнтернализацииТестирование Локализации и Интернализации
Тестирование Локализации и Интернализации
Lilia Gorbachik
 
Тёмная сторона продуктовой разработки
Тёмная сторона продуктовой разработкиТёмная сторона продуктовой разработки
Тёмная сторона продуктовой разработки
Артём Кудзев
 
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid them
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid themIce Age Testing. Mistakes that testers do since Ice Age and how to avoid them
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid them
Gleb Rybalko
 
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rmsflag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
Kristina Pomozova
 

Mais procurados (18)

Тестирование Локализации и Интернализации
Тестирование Локализации и ИнтернализацииТестирование Локализации и Интернализации
Тестирование Локализации и Интернализации
 
Python, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системыPython, Django и корпоративные информационные системы
Python, Django и корпоративные информационные системы
 
Maksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a jobMaksym Antipov Hardware development as a hobby and a job
Maksym Antipov Hardware development as a hobby and a job
 
Slides
SlidesSlides
Slides
 
Контроль за стилем кода — Кирилл Борисов
Контроль за стилем кода — Кирилл БорисовКонтроль за стилем кода — Кирилл Борисов
Контроль за стилем кода — Кирилл Борисов
 
Тёмная сторона продуктовой разработки
Тёмная сторона продуктовой разработкиТёмная сторона продуктовой разработки
Тёмная сторона продуктовой разработки
 
Ice Age Testing
Ice Age TestingIce Age Testing
Ice Age Testing
 
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid them
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid themIce Age Testing. Mistakes that testers do since Ice Age and how to avoid them
Ice Age Testing. Mistakes that testers do since Ice Age and how to avoid them
 
Зачем нужно уметь программировать?
Зачем нужно уметь программировать?Зачем нужно уметь программировать?
Зачем нужно уметь программировать?
 
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rmsflag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
flag{жив_ли_CTF_в _Казахстане?} (@fuzzyf10w && @n0z3r0) CTF Team: b1n4ry4rms
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7
 
эмпирическая разработка Agile days
эмпирическая разработка   Agile daysэмпирическая разработка   Agile days
эмпирическая разработка Agile days
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
 
Why does code style matter?
Why does code style matter?Why does code style matter?
Why does code style matter?
 
разработка dspotapov.ru
разработка dspotapov.ruразработка dspotapov.ru
разработка dspotapov.ru
 
Serhii Ruskykh "Can be code quality measured via 'testability'?"
Serhii Ruskykh "Can be code quality measured via 'testability'?"Serhii Ruskykh "Can be code quality measured via 'testability'?"
Serhii Ruskykh "Can be code quality measured via 'testability'?"
 
#1 Chatbots Academy Meetup
#1 Chatbots Academy Meetup#1 Chatbots Academy Meetup
#1 Chatbots Academy Meetup
 
First byte - участник #1 Global Chatbots Hackathon with Webinar.ru
First byte - участник #1 Global Chatbots Hackathon with Webinar.ruFirst byte - участник #1 Global Chatbots Hackathon with Webinar.ru
First byte - участник #1 Global Chatbots Hackathon with Webinar.ru
 

Destaque

Destaque (20)

Интерфейсы в Python
Интерфейсы в PythonИнтерфейсы в Python
Интерфейсы в Python
 
Мир Python функционалим с помощью библиотек
Мир Python  функционалим с помощью библиотекМир Python  функционалим с помощью библиотек
Мир Python функционалим с помощью библиотек
 
Получаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работаетПолучаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работает
 
Python инструменты решения типичных задач
Python  инструменты решения типичных задачPython  инструменты решения типичных задач
Python инструменты решения типичных задач
 
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
Commit ускоривший python 2.7.11 на 30% и новое в python 3.5
 
Как и зачем можно создать DSL на Python
Как и зачем можно создать DSL на PythonКак и зачем можно создать DSL на Python
Как и зачем можно создать DSL на Python
 
Snakes on the Web
Snakes on the WebSnakes on the Web
Snakes on the Web
 
Python and the Web
Python and the WebPython and the Web
Python and the Web
 
Introduction to Python and Web Programming
Introduction to Python and Web ProgrammingIntroduction to Python and Web Programming
Introduction to Python and Web Programming
 
Why Python Web Frameworks Are Changing the Web
Why Python Web Frameworks Are Changing the WebWhy Python Web Frameworks Are Changing the Web
Why Python Web Frameworks Are Changing the Web
 
Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)Спецификация WSGI (PEP-333)
Спецификация WSGI (PEP-333)
 
An Introduction to Twisted
An Introduction to TwistedAn Introduction to Twisted
An Introduction to Twisted
 
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис ЛебедевВстреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
 
Зоопарк python веб-фреймворков
Зоопарк python веб-фреймворковЗоопарк python веб-фреймворков
Зоопарк python веб-фреймворков
 
Python talk web frameworks
Python talk web frameworksPython talk web frameworks
Python talk web frameworks
 
Asynchronous Python with Twisted
Asynchronous Python with TwistedAsynchronous Python with Twisted
Asynchronous Python with Twisted
 
Framework Battle: Django vs Flask vs Chalice
Framework Battle: Django vs Flask vs ChaliceFramework Battle: Django vs Flask vs Chalice
Framework Battle: Django vs Flask vs Chalice
 
LvivPy - Flask in details
LvivPy - Flask in detailsLvivPy - Flask in details
LvivPy - Flask in details
 
Async Web Frameworks in Python
Async Web Frameworks in PythonAsync Web Frameworks in Python
Async Web Frameworks in Python
 
Web Scraping with Python
Web Scraping with PythonWeb Scraping with Python
Web Scraping with Python
 

Semelhante a Чем Python плох для стартапа?

Александр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софтаАлександр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софта
Дмитрий Шахов
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
Омские ИТ-субботники
 
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Ontico
 
Важность аналитики в SEO - доклад на 8p
Важность аналитики в SEO - доклад на 8pВажность аналитики в SEO - доклад на 8p
Важность аналитики в SEO - доклад на 8p
SeoProfy Presentations
 
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
SQALab
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
WRider
 

Semelhante a Чем Python плох для стартапа? (20)

Александр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софтаАлександр Алаев. Сколько можно заработать на разработке прикладного софта
Александр Алаев. Сколько можно заработать на разработке прикладного софта
 
Экстремальное проектирование: как делать хорошие продукты, когда всё катится ...
Экстремальное проектирование: как делать хорошие продукты, когда всё катится ...Экстремальное проектирование: как делать хорошие продукты, когда всё катится ...
Экстремальное проектирование: как делать хорошие продукты, когда всё катится ...
 
"Практика переходу з фрілансу в офіс для аутсорсингової компанії" Олена Прихнич
"Практика переходу з фрілансу в офіс для аутсорсингової компанії" Олена Прихнич"Практика переходу з фрілансу в офіс для аутсорсингової компанії" Олена Прихнич
"Практика переходу з фрілансу в офіс для аутсорсингової компанії" Олена Прихнич
 
"ТОП 3 кроки для швидкого старту кар'єри Project Manager в IT компанії"
"ТОП 3 кроки для швидкого старту кар'єри Project Manager в IT компанії""ТОП 3 кроки для швидкого старту кар'єри Project Manager в IT компанії"
"ТОП 3 кроки для швидкого старту кар'єри Project Manager в IT компанії"
 
Григорий Ситнин, Лэндинги для стартапа (I)
Григорий Ситнин, Лэндинги для стартапа (I)Григорий Ситнин, Лэндинги для стартапа (I)
Григорий Ситнин, Лэндинги для стартапа (I)
 
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
2013-03-02 02 Дмитрий Пашкевич. Код на стероидах
 
Работа с требованиями в Интернет стартапе
Работа с требованиями в Интернет стартапеРабота с требованиями в Интернет стартапе
Работа с требованиями в Интернет стартапе
 
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
Работа с требованиями в Интернет-стартапе / Александр Байкин (UML2.ru)
 
5 правил успешной разработки приложений для бренда
5 правил успешной разработки приложений для бренда 5 правил успешной разработки приложений для бренда
5 правил успешной разработки приложений для бренда
 
Важность аналитики в SEO - доклад на 8p
Важность аналитики в SEO - доклад на 8pВажность аналитики в SEO - доклад на 8p
Важность аналитики в SEO - доклад на 8p
 
15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках15 шагов к быстрым сделкам на тендерных площадках
15 шагов к быстрым сделкам на тендерных площадках
 
Работа с рисками в Scrum проектах
Работа с рисками в Scrum проектахРабота с рисками в Scrum проектах
Работа с рисками в Scrum проектах
 
О пользе Open Source
О пользе Open SourceО пользе Open Source
О пользе Open Source
 
Опыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseRОпыт разработки SEO софта на примере FastTrust и ComparseR
Опыт разработки SEO софта на примере FastTrust и ComparseR
 
Python & Web: От простого к сложному
Python & Web: От простого к сложномуPython & Web: От простого к сложному
Python & Web: От простого к сложному
 
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
Тестирование по жесткой схеме! Или 27 + 2 фишки в построении процесса тестиро...
 
Как заводить баги понятно всем
Как заводить баги понятно всемКак заводить баги понятно всем
Как заводить баги понятно всем
 
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажатьИнструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
Инструкция для SEO-специалиста: как расти, зарабатывать больше и не лажать
 
вебинар воронюк
вебинар воронюквебинар воронюк
вебинар воронюк
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 

Mais de PyNSK

Mais de PyNSK (20)

Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1Нейронные сети и Keras. Часть 1
Нейронные сети и Keras. Часть 1
 
Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2
 
Asyncio для процессинга распределенной базы данных
Asyncio для процессинга  распределенной базы данныхAsyncio для процессинга  распределенной базы данных
Asyncio для процессинга распределенной базы данных
 
Python для GameDev
Python для GameDevPython для GameDev
Python для GameDev
 
Python инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестированияPython инструменты для нагрузочного тестирования
Python инструменты для нагрузочного тестирования
 
Настрой контент под пользователя!
Настрой контент под пользователя!Настрой контент под пользователя!
Настрой контент под пользователя!
 
Питон в малине
Питон в малинеПитон в малине
Питон в малине
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!
 
Во внутренности Kivy
Во внутренности KivyВо внутренности Kivy
Во внутренности Kivy
 
Как Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикойКак Python Дайджест работает с внешней статикой
Как Python Дайджест работает с внешней статикой
 
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектовПрименение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
 
Ctypes в игровых приложениях на python
Ctypes в игровых приложениях на pythonCtypes в игровых приложениях на python
Ctypes в игровых приложениях на python
 
Оптимизация производительности Python
Оптимизация производительности PythonОптимизация производительности Python
Оптимизация производительности Python
 
JSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобенJSON-RPC или когда rest неудобен
JSON-RPC или когда rest неудобен
 
TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.TestRail. Некоторые возможности интеграции.
TestRail. Некоторые возможности интеграции.
 
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST""Модифицируй это!" или "Больше магии Python с помощью изменения AST"
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"
 
Быстрый старт в gDrive API
Быстрый старт в gDrive APIБыстрый старт в gDrive API
Быстрый старт в gDrive API
 
Магия в Python: Дескрипторы. Что это?
Магия в Python: Дескрипторы. Что это?Магия в Python: Дескрипторы. Что это?
Магия в Python: Дескрипторы. Что это?
 
Python + GPGPU
Python + GPGPUPython + GPGPU
Python + GPGPU
 
Азбука вежливости
Азбука вежливостиАзбука вежливости
Азбука вежливости
 

Чем Python плох для стартапа?

  • 1. Чем Python плох для стартапа? Александр Сапронов: a@sapronov.me ru.linkedin.com/in/alexsapronov
  • 2. Хто я такой? - Пишу код за деньги в Welltory.com - В основном на Python - Делаю Python Дайджест - Организую встречи PyNSK - Делал конференцию PyCon Siberia 2016 - Люблю делать всякую движуху 2
  • 3. Очемэто Как живет проект в первый год Почему в первый год не важен язык? Почему Python подходит для бизнеса? Почему менять стэк разработки больно? Почему вы захотите поменять Python? P.S. Доклад несерьезный 3
  • 5. Что такое Welltory ● Стартап ● Активная разработка началась ~1 год назад ● Собираем данные о жизни пользователя ● Обрабатываем данные - чистим, сжимаем ● Анализируем - строим корреляции ● Строим рекомендации - сообщаем юзеру о проблемах здоровья Welltory - персональный аналитик здоровья 5
  • 6. 6
  • 8. Почему Tornado вам не надо? Ситуация #1
  • 9. Программист Не знаю какие данные будем хранить, Не знаю сколько юзеров ждем. Не хочу переписывать много раз А что если…. Не взять MongoDB и Tornado!? Они же быстрые и масштабируются, их используют в продакшене 9
  • 10. MongoDB для стартапа - Можно сваливать в БД данные и не думать - Не надо админа, чтобы начать работать - Легко масштабировать - Модно, чо - Нет хорошей системы constraints. Загадите базу - Аналитик знает SQL, но не знает монгу - Без JSON Schema вы запутаетесь в коллекциях + - 10
  • 11. Tornado для стартапа - Работает быстро - Гибкий - Живой проект - Асинхронщина - Не популярен как Django - Нет CRUDL админки - Хочешь <что-то>? Пиши сам + - 11
  • 12. В итоге - Но ни разу не масштабировали ее - Писали валидацию данных руками - Стали использовать JSON Schema, потому что структура нужна же - Использовали дополнительно PostgreSQL и конвертировали данные туда, потому что SAAS’ы Выбрали MongoDB - Но ни разу даже 10rps не было - Пришлось писать Oauth2 с нуля - Пришлось писать механизм сессий самим - Написали асинхронные клиенты для популярных API Выбрали Tornado 12
  • 13. В итоге Удалось переписать за 3 недели * 2 программиста Скорость разработки увеличилась в 4 раза На самом деле: 13
  • 14. А вы верите в TypeError? Ситуация #2
  • 15. Типизация в Python - Гибкость в разработке - Скорость разработки - Читаемые ошибки - Легкая в освоении - Вы ловите ошибки в продакшене - Вы точно(!) сложите None и set - Медленней чем C - Без культуры разработки - вы + - Динамическая сильная неявная 15
  • 16. Не любите тесты? А, значит любите ValueError? Ситуация #3
  • 17. Программист У меня нет времени на тесты Зачем тесты? Есть же тестировщики Я не делаю ошибок *лять, на дворе воскресенье, а я правлю 100500-ую ошибку из Sentry 17
  • 18. Тесты для стартапа - Дешевое регресс тестирование - Меньше дурацких багов - МОЖНО БОЛЬШЕ ФИЧ - Где найти время? - Где найти денег? - НУЖНО БОЛЬШЕ ФИЧ + - 18
  • 19. В итоге - Тесты - часть разработки - Тесты “проданы” бизнесу (бизнес одобряет) - Пацан накодил - пацан протестил (видео) - Баг - пишешь сначала тест - Цепочка dev -> qa > dev -> qa -> dev… сократилась в 3 раза Results (95.02s): 1091 passed 19
  • 20. А что он тормозит? Давай перепишем на * ? Ситуация #4
  • 21. Команда маркетинга Мы хотим нагнать дофигилиард юзеров, мы не упадем? Мы опять упали, программисты - *?№! Почему так медленно данные считаются?! Сделайте что-нибудь, емае! Мы не можем продавать. 21
  • 22. Программист №1 Программист №2 Добавим кэш! И серверов еще! А давай... А давай... Перепишем на * ? 22
  • 23. В итоге - Не переписали проект на другой язык - Но мы: - Добавили еще тестов - Начали делать нагрузочные тесты - Пересмотрели архитектуру системы - Привлекли крутого админа для настройки мониторингов - Начали экспериментировать с языками на JVM 23
  • 24. Чему же мы научились сегодня? 24
  • 25. Python - язык, который позволяет разрабатывать быстро и качественно. Но сначала надо выстроить процессы. 25