Каково минимальное подмножество лучших / известных практик в разработке программного обеспечения для программиста-соло? [закрыто]

16

Я был одиноким программистом в моей работе довольно долгое время. Обычно я читал статьи и посты о

  • Системы контроля версий
  • Непрерывная интеграция / доставка
  • Методологии разработки: Scrum, Waterfall, V-Model, Agile, XP и др.
  • Управление проектами программного обеспечения

Но почти все они, кажется, сосредоточены на КОМАНДАХ. Я не команда, так какой будет минимальный набор практик только для одного программиста? Рассмотрим следующие условия:

  • У меня нет конфликтов с чужим кодом.
  • Мне не нужно поддерживать файлы / каталоги, моя среда разработки заботится о версиях сама по себе (разработка на основе изображений).
  • Официальных требований нет, мои пользователи не знают, чего хотят, и с этим все в порядке.
  • Единственный, кто может быть заинтересован в доставке релиза или документации, это я, в основном заказчик хочет РЕЗУЛЬТАТОВ и не заботится о методологиях программного обеспечения и т. Д.

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

user869097
источник
Сколько выпусков у вас в дикой природе, для чего вам нужно исправить ошибки?

Ответы:

17

Там нет правильного ответа на этот вопрос, потому что это зависит от каждого человека. Если вы используете iPad для выполнения всей своей работы, и ваши клиенты довольны вами, у вас нет никаких причин для изменений.

Однако, если бы я был на вашем месте, я бы настоятельно рекомендовал следующее:

  • Система управления версиями. Хотя вы можете подумать, что система разработки на основе образов выполняет обычные операции резервного копирования и тому подобное, у вас нет места для экспериментальных функций, в которых обычно используется ветвь . У вас также нет возможности сохранить важную версию проекта ( тегирование ). Если вы когда-нибудь выйдете за пределы себя, разработчики, которые присоединятся, будут думать, что они в аду.
  • Agile - этот метод чрезвычайно применим для клиентов, которые не знают, чего хотят. Рано или поздно они поймут, что не хотят тратить деньги на преследование - они захотят увидеть прогресс.
  • Инструмент управления проектами - это обязательно. Это очень грозно - иметь возможность хранить все в своей голове, но это не обязательно. Будучи дисциплинированным и используя инструмент управления проектами (например, Redmine ), вы сможете разделить свои задачи и легко просматривать историю своей работы. Это будет очень важно, когда вы начнете заряжать в час.
JK
источник
+2 к Agile и управлению проектами. Однако для экспериментальных функций я обычно разветвляю виртуальный образ (который будет эквивалентен ветвлению) и в конечном итоге открываю другой экземпляр моей среды. Спасибо за ваш хороший ответ.
user869097
16

Контроль версий является абсолютной необходимостью для любого программиста, даже одинокого. Это означает, что вы можете просто и быстро восстанавливаться из удаленных файлов и сложных неправильных изменений.

В основном это спасает вас от глупого дерьма, которое вы делаете, когда вы идете на работу, нависшей.

Том Сквайрс
источник
1
Это не единственное преимущество. Одним из основных преимуществ является возможность воспроизведения более ранней версии программного обеспечения. И это полезно при попытке воспроизвести проблему и / или определить, когда проблема была введена.
Марьян Венема
2
Плюс 1, потому что он спас мой похмельный мозг так много раз.
Николас Смит
1
Также филиалы. Много раз я сталкивался с такой ситуацией, когда начинал серьезное изменение, и мне звонили, чтобы сделать релиз с замененной графикой или другими незначительными вещами. С ветками это было чрезвычайно легко сделать, просто переключившись на мою главную ветку и собрав программное обеспечение. Без этого? Я бы выдернул свои волосы, чтобы либо закончить ломаное изменение, либо вернуть их обратно, чтобы иметь возможность стабильного выпуска.
Тамас Селеи
1
Предполагая, что вы пишете полезные комментарии для регистрации, это также дает вам отличный способ вернуться во времени, чтобы ответить на вопрос «О чем я думал, когда писал эту кучу мусора?»
Нед
1
@ user869097, часть сайтов SE состоит в том, чтобы вопросы и ответы были полезны не только для первоначального вопроса. В то время как ваши необычные требования могут сделать управление версиями непрактичным (и я должен сказать, что я не совсем убежден, потому что ваша методология ветвления не допускает слияний), большинство разработчиков, не использующих управление версиями, должны это делать.
Питер Тейлор
6

Как говорят другие, контроль версий или управление исходным кодом чрезвычайно важны. Используйте DVCS и узнайте все об этом. Неважно, какой это, но вам может быть полезно, если вы выберете популярный: git или mercurial.

Еще одна вещь, о которой я не упомянул, - это пошаговый скрипт сборки . Это не прямая непрерывная интеграция (на мой взгляд, эта фраза склонна к BS), а очень полезный инструмент. Всякий раз, когда вам нужно сделать экстренное обновление, вы можете просто запустить скрипт и покончить с ним. При приближении к концу проекта также бывает, что требуется несколько сборок в день. Мой опыт показывает, что это окупается очень сильно, даже если процесс сборки не слишком сложен. Вы даже можете добавить возможности загрузки по ftp, отчеты по электронной почте, запуск модульных тестов, сборку инсталляторов, подписывание и т. Д. Сценарий, написанный с самого начала, легко поддерживать и расширять с помощью дополнительных шагов по мере продвижения проекта.

Тамас Селеи
источник
2

Я просто отвечу один: контроль версий чрезвычайно важен для любого проекта, а не только для команды. Когда вы используете его, требуется очень небольшое дополнительное время, но он предоставляет богатую историю, к которой вы можете прибегнуть, это не серебряная пуля, но, конечно, приятно иметь возможность вернуться к рабочей копии, если это действительно Экспериментальная функция сломала большую часть приложения.

Николас Смит
источник
2

Контроль версий абсолютно необходим. Не только из-за сохранения источника в порядке, но и из-за археологии источника. Год от того, что вы сможете проверить, как развивается класс или процедура, может сэкономить много боли, если вы попытаетесь «исправить» какой-то странный код.

Для методологий - я настоятельно рекомендую манифест программистов . Обычно это дает отличные результаты в небольших группах из-за отсутствия накладных расходов и отсутствия необходимости думать о том, как работает куча инфраструктур контейнеров приложений веб-службы CMS на основе ролей JMS-совместимых JSREE на основе ролей .

Даниэль Янков
источник