浏览代码

Merge branch 'master' of http://213.155.192.79:3001/ypv/ISRPO

ypv 1 年之前
父节点
当前提交
c5ad3bb73b

二进制
Лекции/Плохие практики разработки в стартапах/1.png


二进制
Лекции/Плохие практики разработки в стартапах/2.png


+ 63 - 0
Лекции/Плохие практики разработки в стартапах/Плохиепрактикиразработкивстартапах.md

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