Задать вопрос

Как не переборщить с желанием все спроектировать прежде чем писать код?

Я работаю в относительно небольшой компании (два человека на бэкэнде, два фронта, два разработчика мобильных приложений)
Но проект достаточно большой и сложный

И сейчас планируется разработка большого куска проекта (он чуть ли не сравним по объему с тем, что уже написано за три года - новая услуга на сервисе)

С коллегой разделились во мнениях
Я говорю, что нужно все продумать
Он говорит: "Давай декомпозируем на задачи и начнем делать. По ходу реализации разберемся"


Я к проекту присоединился позже своего напарника и мне, честно говоря, (буду краток) не нравится как он написан. И мне не хочется усугублять, я хочу сделать качественно, чтобы не поддерживать говнокод следующие два года

Но я боюсь, что проектирование слишком затянется и не получится ли так, что это время потрачено впустую. Я даже хочу нарисовать UML-диаграмму для будущих классов (ну вообще надо бы, ситуация на проекте так себе)

Хотелось бы собрать плюсы и минусы обоих подходов и узнать не подхватил ли я "UML-головного-мозга" и не перегибаю ли я палку с желанием продумать все от и до перед началом написания кода
  • Вопрос задан
  • 307 просмотров
Подписаться 5 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 5
angrySCV
@angrySCV
machine learning, programming, startuping
>не нравится как он написан
пффф а ты что думал, в сказку попал? тебе и не должно нравиться, это для бизнеса где-то на 25 месте находится.
-----
чесно говоря я вообще не слышал чтоб реально на практике УМЛ использовали, для проектирования (хотя тема когда-то и была на хайпе).
Ну да на черновиках набрасывают общие идеи, сам код также может быть тем черновиком для идей, но это всего-лишь черновик.
=======
>"Давай декомпозируем на задачи и начнем делать. По ходу реализации разберемся"
очень грамотный, взвешенный подход. Основная проблема не опытных людей, попытка сразу выдать идеальный результат в вакууме, люди которые поопытнее знают что это сделать не возможно, а попытка идеальной проектировки приведет только к переусложнению и ухудшит разработку и вместо того чтоб гибко подгонять решение под постепенные уточнения, вы будете стремится все подогнать под рамки какой-то первой "идеальной" идеи реализации, на основе первого восприятия задачи (которое часто ошибочно).
Ответ написан
Комментировать
t-alexashka
@t-alexashka
Сразу пишу legacy код
Проектирование полезно. Особенно больших модулей. Не жалейте на него времени, это ускорит в дальнейшем разработку, и внедрение новых фич, когда вы уже наглядно будете видеть могут быть с этой фичей какие-то проблемы или нет. Да и после проектирования уже видно что на какие куски разбить при разработке.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Проектирование даёт "карту самого быстрого наступления" к первому релизу.
А именно: возможность грамотно спланировать весь процесс разработки и своевременно его корректировать (дополнять, реструктурировать архитектуру и т.д.): какие блоки сделать сейчас, какие можно доделать потом; что можно выполнять параллельно, а что - только последовательно и т.д.

Здесь основные этапы проектирования, без которых сложные проекты не смогут долго существовать и поддерживаться.
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
2 часа на проектирование, опционально 2 часа на обсуждение, а дальше делать.
Вопросы и уточнения в любом случае появятся в процессе.

Декомпозировать - это хорошо. Вопрос лишь в том, КАК декомпозировать. Это по сути и есть общая архитектура, которую стоит продумать заранее.
Ответ написан
trofProg
@trofProg
Fullstack developer (Typescript / Python)
Не стоит углубляться сильно в планирование и проектирование. Очень важно спроектировать архитектуру, выделить какие-то основные модули, рассмотреть разные кейсы и возможные подводные камни. Можно схематично нарисовать структуру проекта с точки зрения кода. И не затягивать с написанием самого проекта, что-то переделывать и рефакторить придется в любом случае, нужно как можно скорее выкатить mvp. лучше разбить на возможный функционал, и постепенно выкатывать и смотреть, чего упустили, и приступать к следующему функционалу. а проблемы в любом коде найдутся, всегда есть, что улучшить
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы