|
@@ -0,0 +1,63 @@
|
|
|
+# Плохие практики разработки в стартапах
|
|
|
+
|
|
|
+
|
|
|
+## Отсутствие Git и разработка на продакшн-сервере
|
|
|
+Часто стартапы сталкиваются с неправильной организацией разработки. Одной из таких негативных практик является отсутствие использования системы контроля версий Git и выполнение всех изменений на продакшн-сервере.
|
|
|
+
|
|
|
+Типичная ситуация:
|
|
|
+Разработчик, который выполняет свои задачи, загружает изменения по FTP, проводит тестирование и вносит исправления непосредственно на проде (сервере). Позже, при расширении бизнеса, нанимаются новые разработчики, и в это время происходит неожиданная ситуация. Один из этих новых разработчиков, который работал без использования Git, случайно удаляет несколько дней работы своего коллеги. В результате пришлось восстанавливать их заново.
|
|
|
+Поэтому иметь систему контроля версий git, в стартапе является крайне важным для обеспечения более успешной организации разработки.
|
|
|
+
|
|
|
+<center></center>
|
|
|
+
|
|
|
+## Отсутствие ревью кода
|
|
|
+В основе бизнеса лежит CRM (Customer Relationship Management – ПО, которое помогает автоматизировать бизнес-процессы), но процессы замедляются из-за недостатка ревью кода. Ситуация требует решения, но менеджмент давит на разработчиков. Вместо того, чтобы следовать стандартным процессам, разработчик принимает решение проигнорировать код-ревью, тестирование и запуск автотестов, и сразу пушит изменения в Git для релиза.
|
|
|
+
|
|
|
+В результате CRM полностью падает. Оказалось, что в условиях стресса, когда есть огромное давление, человек допустил ошибку в коде. Было бы гораздо безопаснее, если бы кто-то другой просмотрел и проанализировал коммиты. В критических ситуациях можно бы проигнорировать автотесты, если они требуют много времени для выполнения. Однако, игнорирование код-ревью не является допустимым решением.
|
|
|
+
|
|
|
+## Нет прозрачного процесса постановки задач
|
|
|
+Отсутствие прозрачного процесса постановки задач часто становится источником различных проблем и потерь в стартапе. Когда задачи ставятся через неформальные каналы связи, такие как чат или личная переписка, и обращаются только к одному разработчику, это может привести к серьезным ошибкам и недоразумениям. Вместо того, чтобы иметь четкую систему и ясные инструкции, команда оказывается в ситуации, где каждый разработчик трактует задачи по-своему, что сильно затрудняет сотрудничество и координацию работы.
|
|
|
+
|
|
|
+В итоге, стартап сталкивается с неэффективностью, задержками в выполнении задач и возможными финансовыми потерями. Чтобы избежать подобных проблем, необходимо установить четкий и прозрачный процесс постановки задач, где каждая задача будет описана подробно, а ответственность за ее выполнение ясно распределена между всей командой.
|
|
|
+
|
|
|
+## Нет правила "1 задача=1 ветка в коде"
|
|
|
+Одним из важных правил является разделение каждой задачи на отдельную ветку в коде. Это означает, что каждое изменение или новая функциональность должна быть реализована в отдельной ветке, которая впоследствии будет объединена с основной веткой разработки.
|
|
|
+
|
|
|
+Это правило помогает обеспечить более четкую и упорядоченную работу, улучшает управляемость кода и упрощает процесс ревью и тестирования. Каждая задача имеет свою собственную ветку, что позволяет независимо работать над разными фрагментами функциональности и избежать конфликтов при параллельной работе нескольких разработчиков.
|
|
|
+
|
|
|
+## Отсутствие внедрения автотестов по мере роста стартапа
|
|
|
+Автотесты позволяют автоматизировать проверку функциональности и качества кода, что помогает обнаруживать ошибки и проблемы на ранних этапах разработки. Это особенно важно при наличии большого количества кода и сложной архитектуры.
|
|
|
+
|
|
|
+Основные преимущества внедрения автотестов
|
|
|
+
|
|
|
+1. Упрощение процесса разработки
|
|
|
+Автоматизированные тесты позволяют разработчикам быстрее и эффективнее проверять работу своего кода. Это сокращает время, затрачиваемое на ручное тестирование, и увеличивает скорость разработки нового функционала.
|
|
|
+
|
|
|
+2. Уверенность в качестве продукта
|
|
|
+Автотесты помогают убедиться в том, что новая функциональность или изменения в коде не влияют на работу других компонентов системы. Это дает уверенность в стабильности и надежности продукта, что особенно важно для привлечения и удержания клиентов.
|
|
|
+
|
|
|
+3. Улучшение поддержки и масштабирования
|
|
|
+Автотесты обеспечивают более простое и надежное поддержание и расширение системы. При добавлении нового функционала или модификации кода, автотесты позволяют быстро протестировать его работу и убедиться, что изменения не вызывают нежелательных эффектов в других частях системы.
|
|
|
+
|
|
|
+## Отсутствие мониторинга ошибок
|
|
|
+Отсутствие мониторинга ошибок означает, что система или программное обеспечение не осуществляет постоянное отслеживание возникновения ошибок или проблем. Мониторинг ошибок включает в себя наблюдение за работой системы и обнаружение любых неожиданных сбоев, ошибок или неисправностей.
|
|
|
+
|
|
|
+Отсутствие мониторинга ошибок приводит к следующим проблемам
|
|
|
+
|
|
|
+1. Медленное обнаружение и реагирование на ошибки, что может привести к простоям и потере производительности.
|
|
|
+
|
|
|
+2. Ухудшение пользовательского опыта из-за отсутствия обратной связи и поддержки при возникновении ошибок.
|
|
|
+
|
|
|
+3. Возможность потери данных и нарушения безопасности.
|
|
|
+
|
|
|
+Мониторинг ошибок поможет обнаруживать проблемы быстрее и повысить эффективность устранения ошибок в программном коде. Поэтому важно внедрить инструменты мониторинга ошибок, предоставляемые веб-серверами и программными фреймворками. Например: Sentry, BagHerd и Jira Software.
|
|
|
+
|
|
|
+## Заключение
|
|
|
+В итоге выделяются две основные проблемы, которые необходимо решить
|
|
|
+
|
|
|
+1. Недостаточное взаимодействие и коммуникация с сотрудниками.
|
|
|
+
|
|
|
+2. Недостаточная автоматизация.
|
|
|
+Для достижения эффективности и качества работы, необходимо внедрить проверенные временем инструменты, такие как git и код-ревью, а также автоматизировать процессы, которые можно подвергнуть автоматическим проверкам.
|
|
|
+
|
|
|
+Решение этих проблем может стать хорошей базой для последующих улучшений, таких как оптимизация процессов и настройка мониторинга.
|