Во-первых, общие ответы:
Теперь подробности:
Неспособность спланировать - значит отказаться план на случай отказа
Ваша среда, потребности в программном обеспечении, целевая аудитория, персонал службы поддержки сети, бюджет и множество других факторов сильно повлияют на предлагаемые вами решения. Например, в среде, для которой я кодирую, я обычно использую ограниченный набор инструментов для доставки продуктов, и они, вероятно, будут различаться для вашей среды:
Я могу использовать одну или несколько из этих технологий для своего решения полностью в зависимости от того, что от меня требуется. Ключ к пониманию того, что актуально для данной ситуации, и использование только того, что необходимо. Например, не пишите полномасштабное веб-приложение, если утилиту командной строки может легко использовать один пользователь, не пишите приложение Windows, если многим пользователям нужен доступ к приложению, которое нелегко установить на их машины. из-за ограничений пользователей и ограниченного персонала системной поддержки. Не пишите утилиту командной строки для пользователей, которые с трудом перемещаются по окнам с помощью мыши и не ожидают, что эксперт Microsoft поддержит вашу систему на основе * nix.
Предоставьте диаграммы и документацию, которые упрощают диагностику проблем, чтобы, когда проблемы обнаружены [а они будут ], пользователи / сотрудники службы поддержки могут легко сузить проблему до конкретный компонент в системе. Это упростит вам жизнь, потому что они либо смогут исправить это сами, либо предоставят вам достаточно информации, чтобы решить проблему быстро и просто.
Изменить : в ответ на ваш комментарий относительно UML, который отлично подходит для цель, но еще раз вы должны знать свою целевую аудиторию. Если вы программист-одиночка, который разрабатывает системы для небольшого клиента, персонал которого не понимает UML, вам следует предоставить обычную блок-схему, украшенную простым английским языком. Если вашей целевой аудиторией является консалтинговая компания, занимающаяся разработкой программного обеспечения, то, безусловно, UML - отличный инструмент, особенно с некоторыми инструментами UML, вы можете заставить его автоматически генерировать ваши классы / методы-заглушки, чтобы вы могли автоматизировать некоторые из них. обработать. Я обычно работаю в небольших командах для небольших компаний, поэтому я не использую UML так часто, как мне бы хотелось, и, вероятно, не понимаю его так хорошо, как должен, но это не означает, что если бы я был необходим, я бы не стал Не освежаюсь. Это отличный инструмент, который нужно иметь в своем арсенале, но не используйте его только ради него. Все, что вы используете при проектировании / архитектуре / разработке вашего решения, должно использоваться по объективной причине - не используйте / изучайте его вслепую, потому что кто-то говорит: «вам следует использовать это, потому что это здорово».
Ключ к хорошей архитектуре заключается в следующем:
И самое главное:
Помните о следующем:
Итеративное проектирование и кодирование с кем-то, кто просматривает или делится вашими идеями, очень важно. У вас будут слепые зоны. Попробуйте даже парное программирование.
Тесты имеют решающее значение в долгосрочной перспективе. Они защищают вашу спину и дают вам свободу меняться без страха. Страх - это сила, которая ведет к дублированию, раздуванию и нечистоте.
На мой взгляд, чтение книг, статей или блогов очень важно. но этого не достаточно. Попробуйте найти опытного разработчика / архитектора, который поможет вам. Переход от кодировщика к архитектору займет много времени, а опыт - это самое главное.
Постарайтесь получить проекты, в которых вы можете исследовать и изучать новые технологии. Но, действительно, попробуйте найти наставника.
Шаг первый: спросите хороших людей в Stack Overflow.
хорошо, хорошее начало
Другие шаги: Прошу прощения, что это не прямые ответы на ваши вопросы, но, надеюсь, они помогут вам их найти.
Если вы находитесь рядом с университетом или техническим колледжем, посмотрите, есть ли у них курс программной инженерии, который вы могли бы пройти, это может быть больше времени, то вы и ваша компания можете себе позволить, но у таких профессоров обычно есть хороший совет.
Так что вы - один человек, а? контроль версий это кусок пирога, да? Вы больше не должны понимать, что система управления версиями - это ваш лучший друг во всем мире, а не ваша жена, не ваша собака, это ваше приложение для управления версиями.
Наймите хороших программистов! разница от одного программиста к другому огромна, наличие посредственного или плохого программиста в вашей команде - огромная проблема. Во время интервью задавайте им действительно сложные вопросы, и вы, вероятно, облажаетесь в этой экономике, у вас должно быть из чего выбирать, поэтому убедитесь, что вы гений.
в предыдущем ответе говорилось, что нужно найти наставника, вместо этого прочтите Джоэл о программном обеспечении.