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