Как избежать проблемы «проще переписать»?

Планирую заказать веб приложение, проект будет развиваться, возможно, поменяется программист, т.к. по моему опыту со временем некоторым надоедает вести один проект. В общем, опасаюсь проблемы, когда при смене программиста, новому «проще переписать». Если делать на фраймворке Yii, можно не опасаться смены программиста? Или еще нужно на GitHub вести его? С GitHub пока не хочется разбираться, можно ли потом залить проект туда?

Вообще я не раз уже заказывал программы на фрилансе, но всегда стояла эта проблема, проблема версий и т.п. Хотелось бы, начиная новый проект организовать все правильно.
  • Вопрос задан
  • 5163 просмотра
Пригласить эксперта
Ответы на вопрос 9
@egorinsk
> В общем, опасаюсь проблемы, когда при смене программиста, новому «проще переписать».

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

Проблема (некоторых) программистов в том, что они смотрят с точки зрения «как бы написать идеальный по моему мнению код», а не «как получить максимум прибыли с минимумом затрат».

Переписывание кода — это потеря денег с неизвестным результатом, где гарантия что третий, четвертый и т.д. программисты не захотят переписать еще раз? Я вам советую этого избегать.

По хорошему, вам бы надо консультироваться с опытным разработчиком по поводу каких-то важных архитектурных решений (чтобы он сразу указал вам на грабли, на которые вы можете наткнуться), а также надо установить определенные требования, например, чтобы программист комментировал код и документировал принятые решения. Чтобы в репозиторий добавлялись все нужные файлы, чтобы проект всегда можно было передать кому-то еще.

> Если делать на фраймворке Yii, можно не опасаться смены программиста?

Это зависит от программиста, Yii не запрещает гнать кривой код, хотя изучение фреймворка чуть-чуть выпрямляет мозги программисту (и повышает ваши шансы получить что-то нормально работающее).
Ответ написан
@avorobiev
Есть только один способ — нанимать правильных людей.
Ответ написан
Mx21
@Mx21
Software engineer
>Если делать на фраймворке Yii, можно не опасаться смены программиста?

Использование фреймворка, ещё не означает отсутствие говнокода. В данном случае Yii, заставит придерживаться определенных правил и это хорошо, но попадаются люди, которые могут так извратится над функционалом фреймворка, что аж страшно становится. Тут многое зависит от уровня программиста. Если, он грамотно использует возможности Yii и ООП, то особых проблем вникнуть в проект не возникнет.

>Или еще нужно на GitHub вести его?

Не помешает. Например, на github или bitbucket.
Ответ написан
Crank
@Crank
Yii хороший выбор, если программист будет придерживаться общепринятых правил проблем не возникнет. Для серьезных проектов использование систем контроля версий является скорее суровой необходимостью чем пожеланием, так что не ленитесь разобраться перед тем как делать выбор.
Ответ написан
Комментировать
deadkrolik
@deadkrolik
Мое скромное мнение состоит в том, что единственный способ избежать такой ситуации — покрывать код тестами.

А так, затея делать все на системе контроля версий очень правильная, но надо делать сразу, ибо потом будет куча отговорок. И тот же bitbucket позволяет делать бесплатные закрытые репозитарии.
Ответ написан
Комментировать
В некоторых случаях всё таки «проще переписать».

Проблема кроется не в выборе средств, а в подходах написания кода. Если код дописывать по принципу «тут чуть-чуть, там чуть-чуть», то естественно через некоторое время даже из понятного кода получиться говнокод. Если же код чётко разделять на отдельные функции или классы с адекватными комментариями, то проблем как правило не появляется.
Ответ написан
Комментировать
frostosx
@frostosx
Если бюджет позволяет, то иногда заводят отдел контроля качества и тестирования. Если у вас не от случай, то поддержу egorinsk
Ответ написан
Комментировать
hell0w0rd
@hell0w0rd
Просто разработчик
Мне кажется по каждому пункту конечных возможностей приложения должна быть реализована система модульности. Тогда все изменения будут вноситься относительно легко.
И почему именно yii?
Ответ написан
Комментировать
copist
@copist
Empower people to give
Очень неоднозначный вопрос, на который невозможно дать простой ответ.

Если вам так важен этот продукт, постарайтесь удержать внимание к проекту хотя бы одного разработчика. Я прикинул в голове такой вариант: когда понадобится привлечь нового программиста к проекту, оплатить старому программисту время, которое уйдёт на передачу тайных знаний по проекту этому новому программисту - и скажу, что о технических деталях недавно выполненного проекта уже даже через 3 месяца я помню только в общих чертах. Найдите способ удержать внимание старого программиста к проекту, но не полное время - пусть в основное время занимается тем, что ему интересно. Или вот так: поделитесь с ним бизнесом и возможно он сам захочет, чтобы ошибок, уменьшающих доход, было меньше, а значит будет заниматься проектом и не забудет его.

Никогда не нанимайте одного разработчика. Пусть работают в группе. Это теоретически приведёт к тому, что код будет написан так, чтобы его понимал ещё кто-нибудь. Не факт, что код будет ровный и красивый, но если двое-трое его понимают, значит и четвёртый разберётся.

Как подавить желание "всё переделать" ? Никогда не принимайте работу в состоянии "почти готово". У вас есть техническое задание? Если нет, закажите технических писателей - пусть составят ТЗ до начала работы программистов. А по окончании работ проверяйте все пункты ТЗ на реалиацию. Проверяйте на тестовом сервере, на боевом сервере. Несколько раз проверьте, чтобы убедиться, что что-нибудь не сломается само по себе через месяц. Закажите специально тестировщиков, которые смогут проверить проект на соответствие ТЗ. Тогда сработает первое правило программистов - "работает - не трожь". Новый три раза подумает, прежде чем что-то сломать.

А может быть через год действительно надо будет всё переделать. Пусть новенький обоснует. Проведёт code review и найдёт неисправимые уязвимости в безопасности, докажет низкую производительность. Пусть устроит usability test, обоснует редизайн и изменение в функциональности сайта. Пусть устроит A/B тестирование и поможет повысить конверсию и продажи.

Вот как то так. Бред, конечно, зато от сердца.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы