Недавно со мной связался один старый приятель, у него было ко мне предложение.
«Привет, я слышал, ты программист! Это отлично, потому что у меня и моего друга есть одна идея для бизнеса. Со всем важным мы разобрались, и нам просто нужен программист, чтобы соединить всё это вместе».
Поначалу кажется, что в этом заявлении нет ничего странного. Эти ребята знают, чего хотят от приложения, им «просто» нужны технические знания для его реализации. Поэтому подавив своё желание сказать нечто жёсткое, я придумал разумный ответ.
«Сейчас у меня есть несколько других проектов, но я всегда с радостью готов изучить что-то новое и посмотреть, подойдёт ли это мне. Если ты хочешь, чтобы это был просто обмен денег на труд, то чтобы заинтересовать меня, нужно примерно $X в час. С другой стороны, если у тебя нет капитала для стартапа и ты хочешь оплатить работу долей в бизнесе, то я хочу примерно X% от компании (и этот вариант, разумеется, будет зависеть от того, покажется ли мне бизнес жизнеспособным и интересным для моих вложений)».
На самом деле я не ожидал, что его заинтересуют подобные условия, но думал, что он сделает контроффер или, по крайней мере, покажет, что ему больше нравится сумма/доля Y, а не X. Однако его ответ меня немного удивил.
«Слушай, ну мы вообще-то не готовы платить. Там ничего особо серьёзного, просто веб-сайт с базой данных, я надеялся, что ты сделаешь это в качестве одолжения. Но всё равно спасибо».
Я подумал над этим около минуты и понял, что в этой беседе неявно подразумевается множество допущений (или, точнее, того, что большинством считается «истинами») о ремесле разработки ПО.
1)
«Там ничего особо серьёзного» =
«ПО очень легко писать»
2)
«Со всем важным мы разобрались» =
«в бизнесе само ПО — это лишь вишенка на торте»
3)
«Нам просто нужен программист» =
«разработчики ПО — шестерёнки в механизме или заменяемые детали сборочного конвейера»
Я задался вопросом: популярны ли эти допущения в отрасли разработки ПО и, что важнее, действительно ли они истинны?
Допущение 1:
разработка ПО — это просто
Я уже привык к такому мнению, и уверен, что многие из вас тоже сталкивались с ним:
«Это не бином Ньютона, нам просто нужна программа, делающая [сложную фичу]». К сожалению, иллюзия, что разработка ПО в десять раз проще, чем на самом деле, крайне распространена. Это можно понять: для нетехнического пользователя программой является пользовательский интерфейс, поэтому он и воспринимает только десятую часть от всего приложения. На основании этого вполне логично сделать вывод, что нет ничего сложного в том, чтобы добавить ещё одну кнопочку внизу формы, которая совершенно меняет процесс работы приложения. Это недопонимание отрасли разработки ПО, на мой взгляд, совершенно точно можно устранить: разработка ПО — это сложно. У нас есть инструменты для снижения серьёзности этой проблемы; существуют хорошие методологии разработки, помогающие сосредоточиться на самом важном, и хорошие инструменты, повышающие нашу продуктивность, но в конечном итоге создать хорошее и простое ПО трудно.
Допущение 2:
ПО — это чепуха по сравнению с бизнесом.
С этим мнением я тоже сталкивался несколько раз, и опять-таки, на первый взгляд это утверждение кажется логичным. В конце концов, ПО можно заставить делать, что угодно (в рамках разумного), поэтому мы продаём не ПО, а концепцию бизнеса. Деньги зарабатывает не код, а продукт или сервис. В каком-то смысле, это абсолютно верно: отличное ПО, которое не имеет практической ценности, наверно, и не так великолепно. Однако к этому заявлению нельзя подойти с другой стороны, сказав, что прекрасная бизнес-идея добьётся успеха вне зависимости от ПО, служащего её носителем. Если вы продуктовая или сервисная компания, ПО рассказывает вашу историю, и бизнес БУДУТ судить по простоте его использования и качеству работы. Даже самый лучший бизнес на земле не сможет выиграть, если на его шее ярмом будет висеть плохое ПО. Непонимание этого вредно.
Допущение 3:
программисты — взаимозаменяемые сменные механизмы. Я программист, поэтому, разумеется, заинтересован в том, чтобы это не было правдой.
Тем не менее, в поисках работы я часто встречал подобное мнение. Компания не поспевает выполнять задачи по графику, поэтому «очевидным» решением будет найм ещё пяти программистов. Чем больше рабочих рук, тем быстрее прогресс, правда? Я могу быть предвзят, но мне кажется, не все программисты равны. Многие блогеры писали по теме программистов-рок-звёзд, мифических сверхпродуктивных героев, способных тянуть на своих плечах весь проект, но я не совсем уверен, что такие люди существуют. Тем не менее, я думаю, что от подбора подходящих людей на должности разработчиков ПО в проекте результат может разниться на порядок величин. То, что среднестатистический кодер сделает за десять часов, у нужного человека займёт всего час, и если это так, то мы уверенно можем развенчать допущение.
А вы что думаете? Изменилась ли отрасль разработки ПО настолько, что перечисленные мной допущения становятся более правдивыми? Или это просто мнение потенциальных клиентов о создании ПО меняются из-за повсеместного распространения технологий?