Представьте, вы предлагаете два варианта реализации одного и того же проекта — за 100 000 рублей и за месяц, но с плохим кодом, и за 200 000 рублей, за два месяца, но с хорошим кодом. Какой вариант выберет заказчик? Конечно, всё зависит от требования бизнеса, но, думаю, большинство выберет первый вариант.
В этом случае, как продавать хороший код заказчику, если он не готов за него платить?
Я за время своей работы понял следующее. Самый идеальный баланс между заказчиком и прогером достигается тогда, когда пилится софт (веб-ресурс, приложение, не важно) именно по задумкам сегодняшнего дня. Без каких бы то ни было: "а вот вдруг в дальнейшем захотят масштабироваться...". Всего все равно не предугадаешь, а на эти предугадывания и создание "идеального поддерживаемого" код уходят месяцы, в связи с чем и бюджеты раздуты, а на деле это никому не надо. Единицы будут пользоваться текущим софтом и пытаться его модернизировать. Большая часть тупо забросит или будет и так пользоваться, остальная же часть все равно лет так через 3-4-5-6-7 захочет сделать принципильно новое, на новом фреймворке\языке\платформе и все равно придется все переписывать. Поэтому лично я для себя сделал вывод, что лучше обойтись без всей этой чуши, если вы не пилите какой-то мегакрупный проект, который 146% будет дорабатываться, масштабироваться, видоизменяться, но никак не переписываться, забрасываться. А такая уверенность бывает исключительно в крупных компаниях\государственных. Но большинство прогеров не в таких компаниях работает, поэтому нафига?! Особенно веселит, когда фрилансеры (я один из них) пытаются по всем канонам Мартина запилить мега крутой сайт, где продумано "не только лишь ВСЁ". А нафига? Если клиент готов столько ждать или платить - пожалуйста, но в конечном итоге скорей всего ты его просто нае**л. Поэтому важно проговорить с клиентом, и уточнить планы и цели. Конечно он расскажет, что не сегодня-завтра будет финансирование на миллионы-миллиарды, поэтому приложение пилите на 1005000 лет вперед, точно будет востребовано. Но лучше объяснить разницу между обычным проектом и мега продуманным, заодно указать цены\сроки. Скорей всего заказчик поймет, что ему это не нужно.
У этого подхода есть один минус — в итоге получается очень зависимый код. Если вдруг захотят масштабировать, придется всё переписать.
А так, да, на фрилансе часто все делают всё на тяп-ляп, главное, чтобы работало.
Ну вот опять мыслим в категориях продуктовой разработки, когда "заказчику надо проверить гипотезу". Далеко не весь софт разрабатывается в контексте какой-то "гипотезы".
Если у вас именно такой стартаперский (экспериментальный) проект, то и обсуждать нечего. В идеале обойтись no code, коробочным решением слегка допиленным, на худой конец готовыми библиотеками и UI, либо вообще fake it till you make it. И не надо никому продавать свои тесты и чистую архитектуру. Пожалейте своё время и ресурс.
Другое дело, когда ваши задачи как раз долгосрочные. Переписать корпоративный софт, сделать информационную систему для госзаказчика и т.д. К сожалению, в такие проекты эффективные менеджеры (и программисты) также пытаются пихать аджайл, MVP иже с ним, превращая разработку в предприятие по производству говнокода.
В таких проектах, заказчику необходимо тщательно донести концепцию технического долга и масштабируемой архитектуры.
"Переписать корпоративный софт" — значит изначально говнокодили?)