Вечный конфликт интересов. Заказчики vs подрядчики. Почему заказчику не нужен твой профессионализм?

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

Пока что я так и не дочитал книгу Роберта Мартина "Идеальный программист", по причине нехватки времени. Но из первых глав успел понять, что дядюшка Боб сторонник того, чтобы программисты на себя взяли большую часть ответственности за проект.

Программист отвечает за качество кода и за не нарушение дедлайнов. Это звучит очень правильно и идеально, но...

Что делать, если на тебя давят?

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

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

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

Нужен ли заказчикам хороший код?

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

Несомненно, это так, чистый код помогает в дальнейшем с легкостью расширять проект.

Но кто сказал, что в дальнейшем проект будет развиваться?

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

Заказчики в большинстве своем не понимают, что такое хороший код. Им нужен результат и как можно быстрее.

А профессиональный программист всегда заинтересован в хорошем коде. Так как последствия плохого кода потом будет грести он сам.

Какой сайт выберет заказчик?

Представьте, вы предлагаете два варианта реализации одного и того же проекта — за 100 000 рублей и за месяц, но с плохим кодом, и за 200 000 рублей, за два месяца, но с хорошим кодом. Какой вариант выберет заказчик? Конечно, всё зависит от требования бизнеса, но, думаю, большинство выберет первый вариант.

В этом случае, как продавать хороший код заказчику, если он не готов за него платить?

Очень часто заказчикам не нужен твой профессионализм, им нужен быстрый результат и, чтобы всё работало.

Мы не такие, это бизнес такой

Чаще всего требование заказчика быстро закончить проект зависит от требования бизнеса. Заказчику хочется, как можно быстрее закончить, чтобы проверить гипотезу успеха своего проекта.

Такие заказчики не соглашаются на более длинные сроки. Что делать, жертвовать профессионализмом или не соглашаться на такую авантюру?

Деньги, деньги и опять деньги

Бизнес делает деньги и обеспечивает бюджет для новых проектов. Соответственно, хотели мы или нет, требования бизнеса всегда в приоритете. Так как без решения приоритетных задач, бизнес не сможет существовать. В начинающих кампаниях весь упор делается на быстрое допиливание функционала. В таких случаях могут жертвовать профессионализмом в пользу быстроты.

Сложно найти какую-то золотую середину между требованием бизнеса и профессионализмом.

Резюме

Много заказчиков требуют быстрые сроки и низкий бюджет. Понятное дело, если ты делаешь дёшево и быстро, от этого страдает качество кода. Но объяснить заказчику важность хорошего кода очень сложно. Для него в приоритете задачи собственного бизнеса.

Ему проще найти новичка, который за месяц закончит проект, чем возиться с нудным профессионалом, который задает вопросы и ещё сопротивляется.

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

В сообществе Code Guru в ВК вы найдете больше интересных и полезных статей о веб-разработке. Подпишитесь, чтобы не пропустить новые материалы.

22
9 комментариев

Я за время своей работы понял следующее. Самый идеальный баланс между заказчиком и прогером достигается тогда, когда пилится софт (веб-ресурс, приложение, не важно) именно по задумкам сегодняшнего дня. Без каких бы то ни было: "а вот вдруг в дальнейшем захотят масштабироваться...". Всего все равно не предугадаешь, а на эти предугадывания и создание "идеального поддерживаемого" код уходят месяцы, в связи с чем и бюджеты раздуты, а на деле это никому не надо. Единицы будут пользоваться текущим софтом и пытаться его модернизировать. Большая часть тупо забросит или будет и так пользоваться, остальная же часть все равно лет так через 3-4-5-6-7 захочет сделать принципильно новое, на новом фреймворке\языке\платформе и все равно придется все переписывать. Поэтому лично я для себя сделал вывод, что лучше обойтись без всей этой чуши, если вы не пилите какой-то мегакрупный проект, который 146% будет дорабатываться, масштабироваться, видоизменяться, но никак не переписываться, забрасываться. А такая уверенность бывает исключительно в крупных компаниях\государственных. Но большинство прогеров не в таких компаниях работает, поэтому нафига?! Особенно веселит, когда фрилансеры (я один из них) пытаются по всем канонам Мартина запилить мега крутой сайт, где продумано "не только лишь ВСЁ". А нафига? Если клиент готов столько ждать или платить - пожалуйста, но в конечном итоге скорей всего ты его просто нае**л. Поэтому важно проговорить с клиентом, и уточнить планы и цели. Конечно он расскажет, что не сегодня-завтра будет финансирование на миллионы-миллиарды, поэтому приложение пилите на 1005000 лет вперед, точно будет востребовано. Но лучше объяснить разницу между обычным проектом и мега продуманным, заодно указать цены\сроки. Скорей всего заказчик поймет, что ему это не нужно.

2
Ответить

У этого подхода есть один минус — в итоге получается очень зависимый код. Если вдруг захотят масштабировать, придется всё переписать.
А так, да, на фрилансе часто все делают всё на тяп-ляп, главное, чтобы работало.

Ответить

Ну вот опять мыслим в категориях продуктовой разработки, когда "заказчику надо проверить гипотезу". Далеко не весь софт разрабатывается в контексте какой-то "гипотезы".
Если у вас именно такой стартаперский (экспериментальный) проект, то и обсуждать нечего. В идеале обойтись no code, коробочным решением слегка допиленным, на худой конец готовыми библиотеками и UI, либо вообще fake it till you make it. И не надо никому продавать свои тесты и чистую архитектуру. Пожалейте своё время и ресурс.

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

Ответить

"Переписать корпоративный софт" — значит изначально говнокодили?)

Ответить