SlideShare a Scribd company logo
О чем стоит подумать, приступая к разработке высоконагруженной системы.  Артем Вольфтруб
У нас есть своя IT команда, но она сильно загружена в ближайшие три месяца.  Мы рассчитываем, что за это время вы напишите первую версию системы, которую мы будем развивать своими силами. 1
Цикл разработки интернет-проекта разработка аналитика тестирование t 1
Важно понимать, что Три месяца – минимальный цикл разработки интернет системы К моменту релиза требования поменяются процентов на 40 Если  N  разработчиков сделают систему за три месяца, то 2 *N разработчиков сделают систему за …  Основная работа начинается после релиза три месяца 1
Передача проекта другой команде Передавать код другой команде сразу после релиза –  плохая идея Передавать код в виде дампа  svn -  очень плохая идея Личное  VS  профессиональное 1
Чтобы не было мучительно больно Решение о передаче проекта не должно быть спонтанным Решение должно быть известно заранее Привлекайте разработчиков к процессу Приготовьтесь заплатить дважды 1
Способы облегчить процесс Совместная работа над проектом Постепенный ввод новой команды 1
В первую версию системы должно войти N фич.  У нас есть еще несколько минорных пожеланий, но их можно будет реализовать после выпуска первой версии. 2
Формирование требований Анализ рынка Формирование ключевых пользовательских групп Формирование стратегии Интервьюирование ключевых пользователей Прототипирование Тестирование, получение обратной связи Коррекция ТАК НЕ БЫВАЕТ 2
Формирование требований Наличие аналогичного продукта или сервиса Видение системы, изложенное на листе А4 Идея в голове начальника ТАК БЫВАЕТ 2
Из опыта На момент релиза, востребованными оказываются около 60% фич 40% фич, которые оказались не востребованными – самые сложные с точки зрения реализации Наиболее ценные фичи не попадают в первую версию 2
Рамки проекта Старайтесь включать в первую версию только то, без чего реально нельзя жить. Экономьте время! Основной источник требований – пользователь Бета-версия – главный инструмент аналитика Бета-версия – полностью функциональный  продукт, а не «отмазка» для разработчиков  Разработка не заканчивается релизом 2
Система должна быть масштабируемой. Нам нужен подробный план того, как мы будем справляться с нагрузками, когда система вырастет со 100 000 пользователей до 10 000 000. 3
Цели планирования План для начальства или план для разработчиков Узкие места возникают совершенно не там, где это предполагалось А кто будет писать? 3
Анализ нагрузки Оцениваем трафик Оцениваем объем данных  Фантазируем («если – то») 3
Слайд не для менеджеров! У «Веселого фермера» тоже был первый пользователь Когда у вас будет 10 000 000 пользователей, у вас будут деньги, чтобы все переписать 3
Производительность системы будет проверяться проведением полноценного нагрузочного тестирования перед сдачей проекта. 4
Проблемы нагрузочного тестирования Смоделировать реальные действия пользователя очень сложно Влияние внешних компонентов Тепличные условия тестирования Заказчик считает, что нагрузочное тестирование позволит  оценить качество системы 4
Хроники нагрузочного тестирования  4
Хроники нагрузочного тестирования 4
Хроники нагрузочного тестирования 4
Хроники нагрузочного тестирования  4
Обобщаем Другое железо Другой объем данных Другой канал Влияние окружения на работу приложения Интерполяция не работает 4
Выводы Нагрузочное тестирование инструмент анализа, а не  критерий приемки Проверять лучше отдельные сценарии, а не полноценную работу приложения 4
Что значит приемлемый уровень отказоустойчивости?  Система должна работать  безотказно! 5
Виды простоев Отказ в результате выхода из строя Остановка на плановое обслуживание 5
Оценка отказоустойчивости Внешние зависимости Прагматичный подход (99.99% - это 1 час в год) Выделение критических компонентов 5
Кому нужна отказоустойчивость Компоненты, которые используются внешними системами Компоненты, от которых зависит бизнес компании Компоненты, простой которых связан с репутационными потерями компании 5
Зачем нам система мониторинга? Если система сломается, это и так все увидят! 6
Проблемы Мониторинг не является частью проекта Систему мониторинга должен кто-то эксплуатировать Запуск высокнагруженной системы без мониторинга не имеет смысла! 6
Что дает мониторинг Прогнозирование нагрузки Диагностика проблем на ранней стадии Выявление типовых проблем  разработка универсальных  решений Может использоваться, как инструмент аналитика 6
Виды мониторинга Физический уровень  (сеть, доступность сервера,  CPU , место на  диске, память,  IO) Уровень приложения  (HTTP Errors, Response time, Exceptions) Бизнес уровень  ( основан на бизнес критериях) 6
Методы измерений Критериальная система Тренды 6
Система мониторинга 6
Согласно последним обзорам, производительность фреймворка XYZ выше, чем ZYX.  Давайте разрабатывать систему  с использованием XYZ 7
Причины ограничения выбора   Корпоративный стандарт Расширения существующей системы Собственная команда разработчиков 7
Сравнение фреймворков   Самый быстрый фреймворк - это тот, которым умеют  пользоваться разработчики  Программа « Hello world » всегда работает быстро 7
7
Как выбирать Исходите из текущих задач и задач на ближайшую  перспективу (время написания первой версии + поддержка) Смотреть на профиль команды 7
Наши IT-шники не разбираются в вашей системе. Напишите нам максимально подробную пошаговую инструкцию, как ее устанавливать и поддерживать. 8
Откуда растут ноги Конфиденциальная информация Корпоративные стандарт безопасности Нежелание разбираться в новых системах 9
Разделение ответственности Человек, который отвечает за систему, должен иметь всю полноту власти Можно разделить роли, но не обязанности Коллективной ответственности не бывает. Коллективной бывает только безответственность  (Валерий Лобановский) 9
Мы нашли баг в системе, вы можете прислать нам последнюю версию, мы выложим ее сегодня ночью 9
Очень важно Сложность исправления бага определяют разработчики Тестирование может занимать намного больше, чем сам фикс Может потребоваться значительное обновление системы 9
Обновление системы План работ Сценарий проверки План В (если все плохо) Сценарий проверки плана В 9
Формальные процедуры Версионность Разные ветки для активной разработки и релиза Разделение уровней допуска Процедуры утверждения релизов 9
Зачем переписывать код, который был написан всего пару месяцев назад. У нас еще куча фич, которые нужно реализовать. 10
Типичные ситуации Программисты всегда занимаются бессмысленным  украшательством, система и так неплохо работает  Улучшение кода это замечательно, но у нас пока есть более важная работа 10
Важно Расставить приоритеты на каждый этап проекта Убедиться, что все разработчики правильно понимают  приоритеты каждого из этапов Понимать, что рефакторинг – неотъемлемая часть любой разработки Доверять разработчикам 10
Вопросы? [email_address]

More Related Content

PDF
AgileDays 2016. Внедрение Agile в Банке
Михаил Кононов
 
PPTX
организация и проведение тестирования
Igor Pozumentov
 
PPTX
Скандалы, расследования, тестирование
SQALab
 
PPT
SecDevOps. Разработка, DevOps и безопасность.
Valery Boronin
 
PPTX
Подход и инструменты измерения эффективности процесса разработки или как держ...
HOWWEDOIT
 
PPT
Методологии разработки по
JaneKozmina
 
PPTX
SDL/SSDL для руководителей
Valery Boronin
 
PPTX
от каждого по потребностям, каждому — по Agile
Alexey Deryushkin
 
AgileDays 2016. Внедрение Agile в Банке
Михаил Кононов
 
организация и проведение тестирования
Igor Pozumentov
 
Скандалы, расследования, тестирование
SQALab
 
SecDevOps. Разработка, DevOps и безопасность.
Valery Boronin
 
Подход и инструменты измерения эффективности процесса разработки или как держ...
HOWWEDOIT
 
Методологии разработки по
JaneKozmina
 
SDL/SSDL для руководителей
Valery Boronin
 
от каждого по потребностям, каждому — по Agile
Alexey Deryushkin
 

What's hot (20)

PPT
Quality assurance
Michael Karpov
 
PPTX
Agile Vector - внедрение agile разработки в Райффайзенбанке
Alexey Deryushkin
 
PDF
Построение процесса безопасной разработки
Positive Development User Group
 
PDF
Построение процесса безопасной разработки - Стачка 2016
Valery Boronin
 
PPT
Роль ретроспектив в создании эффективного процесса разработки
Dmitry Lobasev
 
PDF
Теория ограничений в Agile команде
yiiconf
 
PPTX
Безопасная разработка для руководителей
Positive Development User Group
 
PPTX
Cемь смертных грехов в управлении проектами
Boris Volfson
 
PPTX
Управление highload-проектами 24 на 7
ADV/web-engineering
 
PDF
андрей дмитриев взгляд со стороны разработчика
Alexei Lupan
 
PPTX
пылаева дана, шоколад лего-скрам
Magneta AI
 
PPTX
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
LuxoftTraining
 
PPT
некоторые правила управления проектами. часть I
prigarov
 
PPTX
кузнецов Dual-track agile.pptx
Magneta AI
 
PPT
QA как драйвер трансформации
SQALab
 
PDF
Контроль над распределенной командой
ISS Art, LLC
 
PPTX
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
ScrumTrek
 
PDF
Оценка проектов тестирования
Rina Uzhevko
 
PPT
Приемочные тесты на огурце
Alexander Byndyu
 
PPTX
Как развить отдел тестирования от палки-копалки до CI
CEE-SEC(R)
 
Quality assurance
Michael Karpov
 
Agile Vector - внедрение agile разработки в Райффайзенбанке
Alexey Deryushkin
 
Построение процесса безопасной разработки
Positive Development User Group
 
Построение процесса безопасной разработки - Стачка 2016
Valery Boronin
 
Роль ретроспектив в создании эффективного процесса разработки
Dmitry Lobasev
 
Теория ограничений в Agile команде
yiiconf
 
Безопасная разработка для руководителей
Positive Development User Group
 
Cемь смертных грехов в управлении проектами
Boris Volfson
 
Управление highload-проектами 24 на 7
ADV/web-engineering
 
андрей дмитриев взгляд со стороны разработчика
Alexei Lupan
 
пылаева дана, шоколад лего-скрам
Magneta AI
 
Лучшие практики исполнения проекта в соответствии с методологией IBM Rational
LuxoftTraining
 
некоторые правила управления проектами. часть I
prigarov
 
кузнецов Dual-track agile.pptx
Magneta AI
 
QA как драйвер трансформации
SQALab
 
Контроль над распределенной командой
ISS Art, LLC
 
Кирилл Толкачев, Александр Тарасов, Хипстеры в энтерпрайзе. Шагаем в ногу со ...
ScrumTrek
 
Оценка проектов тестирования
Rina Uzhevko
 
Приемочные тесты на огурце
Alexander Byndyu
 
Как развить отдел тестирования от палки-копалки до CI
CEE-SEC(R)
 
Ad

Viewers also liked (19)

PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
What is philosophy
Delia Ronda Aguilar
 
PPT
тест
deer_oleg
 
PDF
Gm tutorial adding depth tutorial by game maker
Jin Toples
 
PPTX
Barcelona Global Energy Challenges 2015
Pau Fonseca
 
PPTX
Microsoft outlook 2010
ematz0209
 
PPT
Simpulan bahasa topik 8
wktD041290
 
PPT
What is philosophy
Delia Ronda Aguilar
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
What is philosophy
Delia Ronda Aguilar
 
тест
deer_oleg
 
Gm tutorial adding depth tutorial by game maker
Jin Toples
 
Barcelona Global Energy Challenges 2015
Pau Fonseca
 
Microsoft outlook 2010
ematz0209
 
Simpulan bahasa topik 8
wktD041290
 
What is philosophy
Delia Ronda Aguilar
 
Ad

Similar to 123 (20)

PPT
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
CodeFest
 
PPT
О чем стоит подумать, приступая к разработке высоконагруженных систем
Artem Volftrub
 
PDF
Dmitry Zavalishin. Successful it-project - where can it fail
Andrew Mayorov
 
PDF
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Yandex
 
PDF
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Yandex
 
PDF
TechLeads meetup: Макс Лапшин, Erlyvideo
Badoo Development
 
PPT
Управление изменениями в сложных информационных системах
Valery Bychkov
 
PPTX
Developmentmanage1.0
HighLoad2009
 
PPTX
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
RIF-Technology
 
PPTX
Всему своё время Highload Junior 2016
Roman Ivliev
 
PDF
Всему своё время / Роман Ивлиев (Банки.ру)
Ontico
 
PDF
Разработка веб-сервисов осень 2013 лекция 9
Technopark
 
PPTX
Игорь Колосов «ТРЕБОВАНИЯ К ПРОИЗВОДИТЕЛЬНОСТИ ПО — КАК БЫТЬ ВОЛКОМ-ОДИНОЧКОЙ»
DataArt
 
ODP
Гибкие требования и приоритезация
Anton Nepomnyaschih
 
PPTX
определение и реализация требований к ИТ продукту
Danil Dintsis, Ph. D., PgMP
 
PPTX
"Опыт создания системы управления сборкой и тестированием" (полная)
SPB SQA Group
 
PPTX
Developmentmanage3.0
WRider
 
PDF
Юрий Соболев. Проблемы и решения Scrum на практике
ScrumTrek
 
PDF
CodeFest 2010. Платов А. — Производство ПО для разработчиков
CodeFest
 
PPTX
Req Labs'2011. Коммуникация нефункциональных требований
Alexander Kalouguine
 
Codefest 2011. Вольфтруб А. — О чем стоит подумать, приступая к разработке вы...
CodeFest
 
О чем стоит подумать, приступая к разработке высоконагруженных систем
Artem Volftrub
 
Dmitry Zavalishin. Successful it-project - where can it fail
Andrew Mayorov
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Yandex
 
TechLeads meetup: Макс Лапшин, Erlyvideo
Badoo Development
 
Управление изменениями в сложных информационных системах
Valery Bychkov
 
Developmentmanage1.0
HighLoad2009
 
Сергей Смирнов (Altair Engineering Inc.) | Организация работы распределенной ...
RIF-Technology
 
Всему своё время Highload Junior 2016
Roman Ivliev
 
Всему своё время / Роман Ивлиев (Банки.ру)
Ontico
 
Разработка веб-сервисов осень 2013 лекция 9
Technopark
 
Игорь Колосов «ТРЕБОВАНИЯ К ПРОИЗВОДИТЕЛЬНОСТИ ПО — КАК БЫТЬ ВОЛКОМ-ОДИНОЧКОЙ»
DataArt
 
Гибкие требования и приоритезация
Anton Nepomnyaschih
 
определение и реализация требований к ИТ продукту
Danil Dintsis, Ph. D., PgMP
 
"Опыт создания системы управления сборкой и тестированием" (полная)
SPB SQA Group
 
Developmentmanage3.0
WRider
 
Юрий Соболев. Проблемы и решения Scrum на практике
ScrumTrek
 
CodeFest 2010. Платов А. — Производство ПО для разработчиков
CodeFest
 
Req Labs'2011. Коммуникация нефункциональных требований
Alexander Kalouguine
 

More from deer_oleg (20)

PDF
Круглый стол по Фейсбук
deer_oleg
 
PDF
Круглый стол по Фейсбук
deer_oleg
 
PDF
Круглый стол по Фейсбук
deer_oleg
 
PDF
Круглый стол по Фейсбук
deer_oleg
 
PDF
Круглый стол по Фейсбук
deer_oleg
 
PDF
Круглый стол по Фейсбук
deer_oleg
 
PDF
Круглый стол по Фейсбук
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
PPT
тест
deer_oleg
 
Круглый стол по Фейсбук
deer_oleg
 
Круглый стол по Фейсбук
deer_oleg
 
Круглый стол по Фейсбук
deer_oleg
 
Круглый стол по Фейсбук
deer_oleg
 
Круглый стол по Фейсбук
deer_oleg
 
Круглый стол по Фейсбук
deer_oleg
 
Круглый стол по Фейсбук
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 
тест
deer_oleg
 

123

  • 1. О чем стоит подумать, приступая к разработке высоконагруженной системы. Артем Вольфтруб
  • 2. У нас есть своя IT команда, но она сильно загружена в ближайшие три месяца. Мы рассчитываем, что за это время вы напишите первую версию системы, которую мы будем развивать своими силами. 1
  • 3. Цикл разработки интернет-проекта разработка аналитика тестирование t 1
  • 4. Важно понимать, что Три месяца – минимальный цикл разработки интернет системы К моменту релиза требования поменяются процентов на 40 Если N разработчиков сделают систему за три месяца, то 2 *N разработчиков сделают систему за … Основная работа начинается после релиза три месяца 1
  • 5. Передача проекта другой команде Передавать код другой команде сразу после релиза – плохая идея Передавать код в виде дампа svn - очень плохая идея Личное VS профессиональное 1
  • 6. Чтобы не было мучительно больно Решение о передаче проекта не должно быть спонтанным Решение должно быть известно заранее Привлекайте разработчиков к процессу Приготовьтесь заплатить дважды 1
  • 7. Способы облегчить процесс Совместная работа над проектом Постепенный ввод новой команды 1
  • 8. В первую версию системы должно войти N фич. У нас есть еще несколько минорных пожеланий, но их можно будет реализовать после выпуска первой версии. 2
  • 9. Формирование требований Анализ рынка Формирование ключевых пользовательских групп Формирование стратегии Интервьюирование ключевых пользователей Прототипирование Тестирование, получение обратной связи Коррекция ТАК НЕ БЫВАЕТ 2
  • 10. Формирование требований Наличие аналогичного продукта или сервиса Видение системы, изложенное на листе А4 Идея в голове начальника ТАК БЫВАЕТ 2
  • 11. Из опыта На момент релиза, востребованными оказываются около 60% фич 40% фич, которые оказались не востребованными – самые сложные с точки зрения реализации Наиболее ценные фичи не попадают в первую версию 2
  • 12. Рамки проекта Старайтесь включать в первую версию только то, без чего реально нельзя жить. Экономьте время! Основной источник требований – пользователь Бета-версия – главный инструмент аналитика Бета-версия – полностью функциональный продукт, а не «отмазка» для разработчиков Разработка не заканчивается релизом 2
  • 13. Система должна быть масштабируемой. Нам нужен подробный план того, как мы будем справляться с нагрузками, когда система вырастет со 100 000 пользователей до 10 000 000. 3
  • 14. Цели планирования План для начальства или план для разработчиков Узкие места возникают совершенно не там, где это предполагалось А кто будет писать? 3
  • 15. Анализ нагрузки Оцениваем трафик Оцениваем объем данных Фантазируем («если – то») 3
  • 16. Слайд не для менеджеров! У «Веселого фермера» тоже был первый пользователь Когда у вас будет 10 000 000 пользователей, у вас будут деньги, чтобы все переписать 3
  • 17. Производительность системы будет проверяться проведением полноценного нагрузочного тестирования перед сдачей проекта. 4
  • 18. Проблемы нагрузочного тестирования Смоделировать реальные действия пользователя очень сложно Влияние внешних компонентов Тепличные условия тестирования Заказчик считает, что нагрузочное тестирование позволит оценить качество системы 4
  • 23. Обобщаем Другое железо Другой объем данных Другой канал Влияние окружения на работу приложения Интерполяция не работает 4
  • 24. Выводы Нагрузочное тестирование инструмент анализа, а не критерий приемки Проверять лучше отдельные сценарии, а не полноценную работу приложения 4
  • 25. Что значит приемлемый уровень отказоустойчивости? Система должна работать безотказно! 5
  • 26. Виды простоев Отказ в результате выхода из строя Остановка на плановое обслуживание 5
  • 27. Оценка отказоустойчивости Внешние зависимости Прагматичный подход (99.99% - это 1 час в год) Выделение критических компонентов 5
  • 28. Кому нужна отказоустойчивость Компоненты, которые используются внешними системами Компоненты, от которых зависит бизнес компании Компоненты, простой которых связан с репутационными потерями компании 5
  • 29. Зачем нам система мониторинга? Если система сломается, это и так все увидят! 6
  • 30. Проблемы Мониторинг не является частью проекта Систему мониторинга должен кто-то эксплуатировать Запуск высокнагруженной системы без мониторинга не имеет смысла! 6
  • 31. Что дает мониторинг Прогнозирование нагрузки Диагностика проблем на ранней стадии Выявление типовых проблем разработка универсальных решений Может использоваться, как инструмент аналитика 6
  • 32. Виды мониторинга Физический уровень (сеть, доступность сервера, CPU , место на диске, память, IO) Уровень приложения (HTTP Errors, Response time, Exceptions) Бизнес уровень ( основан на бизнес критериях) 6
  • 35. Согласно последним обзорам, производительность фреймворка XYZ выше, чем ZYX. Давайте разрабатывать систему с использованием XYZ 7
  • 36. Причины ограничения выбора Корпоративный стандарт Расширения существующей системы Собственная команда разработчиков 7
  • 37. Сравнение фреймворков Самый быстрый фреймворк - это тот, которым умеют пользоваться разработчики Программа « Hello world » всегда работает быстро 7
  • 38. 7
  • 39. Как выбирать Исходите из текущих задач и задач на ближайшую перспективу (время написания первой версии + поддержка) Смотреть на профиль команды 7
  • 40. Наши IT-шники не разбираются в вашей системе. Напишите нам максимально подробную пошаговую инструкцию, как ее устанавливать и поддерживать. 8
  • 41. Откуда растут ноги Конфиденциальная информация Корпоративные стандарт безопасности Нежелание разбираться в новых системах 9
  • 42. Разделение ответственности Человек, который отвечает за систему, должен иметь всю полноту власти Можно разделить роли, но не обязанности Коллективной ответственности не бывает. Коллективной бывает только безответственность (Валерий Лобановский) 9
  • 43. Мы нашли баг в системе, вы можете прислать нам последнюю версию, мы выложим ее сегодня ночью 9
  • 44. Очень важно Сложность исправления бага определяют разработчики Тестирование может занимать намного больше, чем сам фикс Может потребоваться значительное обновление системы 9
  • 45. Обновление системы План работ Сценарий проверки План В (если все плохо) Сценарий проверки плана В 9
  • 46. Формальные процедуры Версионность Разные ветки для активной разработки и релиза Разделение уровней допуска Процедуры утверждения релизов 9
  • 47. Зачем переписывать код, который был написан всего пару месяцев назад. У нас еще куча фич, которые нужно реализовать. 10
  • 48. Типичные ситуации Программисты всегда занимаются бессмысленным украшательством, система и так неплохо работает Улучшение кода это замечательно, но у нас пока есть более важная работа 10
  • 49. Важно Расставить приоритеты на каждый этап проекта Убедиться, что все разработчики правильно понимают приоритеты каждого из этапов Понимать, что рефакторинг – неотъемлемая часть любой разработки Доверять разработчикам 10