Почему «сайт на коленке» лучший вариант, если не уверен в успехе проекта?

Здравствуйте, сегодня я расскажу о некоторых хитростях, которые помогут экономить деньги и время в процессе разработки сайта.

Что значит «сайт на коленке»?

Это сайт с минимальным необходимым функционалом и наименьшей придирчивостью к архитектуре кода.

Есть два способа решения задач, которые стоят перед программистом:

  • сделать всё "правильно", как пишут в умных книгах
  • сделать всё эффективно и приносить максимум пользы бизнесу

Несколько лет назад на собеседовании у меня спросили, как я буду решать одну банальную задачу. Задача состоялась в следующем — подключаться к API погоды, оттуда тянуть данные, обрабатывать и выводить.

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

Вариант интервьюера достаточно правильный. Давайте разберемся для чего он нужен.

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

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

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

Почему я привел этот пример? Этим примером я хочу показать, что не всегда нужно делать "правильно", а отталкиваться нужно от конкретной ситуации. Лишний перфекционизм порой может навредить, а не приносить пользу. Порой программистам не хватает пластичности мышления, чтобы выбрать технологии и методы решения задач отталкиваясь от конкретной ситуации, не брав в расчет какие-то общие случаи.

Если непонятно "выстрелит" ли сайт

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

Если это стартап, у которого не понятно, какие перспективы, думаю, не стоит сильно заморачиваться над структурой кода. Нужно создать MVP с урезанным функционалом и тестировать на аудитории. Зависимо от того, как зайдет проект людям, нужно задумываться о будущем развитии сайта.

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

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

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

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

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

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

11
8 комментариев

Почему-то все считают, что самому быстренько собрать сайт на CMS, чтоб он не выглядел, как дерьмо, навыки той же вёрстки совсем не нужны. Не каждый бизнесмен программист. Или можно 3 месяца только команду под приложение собирать, когда железо надо ковать прям сейчас, пока конкуренты спят. А уж сколько суперпроектов от программистов, которые тут на vc постоянно обсераюся, зная как писать. Пишут вылизанный проект по пол года, а он потом никому не нужен.

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

1
Ответить

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

MVP тоже бывают разные, для какого-то проекта это неделя, для какого-то несколько месяцев. Всё зависит от объема проекта.

И я не имею в виду, что нужно делать совсем грубые ошибки, например, функции называть func1, func2, как делают новички. Просто не стоит применить сложные инструменты и подходы на первых порах, когда ещё ничего не ясно.

1
Ответить

Что вы выберете:
- сделать «правильный» сайт или
- вечная блокировка телеграмм в России

Вода водой, в голове порядок наведите. Сайт «на коленке» в 99.9% случаях выброс денег, такой сайт лучше делать самому на конструкторе, зачем для этого нанимать говнокодера? Чем плох «сайт на коленке»:
- так как это говносайт и через некоторое время даже автору надоест это мракобесие поддерживать и он сольётся и нового будет найти нереально, все скажут давайте делать с нуля и такая ситуации случается в 95% случаях ещё до запуска сайта
- это творение прекрасно работает на машине разработчика и при демонстрации, а когда вы его выложили на общее обозрение и дали рекламу он стал нещадно тормозить и падать, а хостер начал блокировать аккаунт за нагрузку
- со временем простейшая задача выливается в недельные, а то и месячные реализации, а каждая выкатка багов плодит их больше чем исправляет

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

Ответить

А если вы потратите время и деньги заказчика, сделайте идеальную архитектуру кода, примените, например, подход DDD (а для этого нужно больше времени) и сайт просто никому не будет нужен после запуска? Что вы после этого скажете?

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

Клиенту выгоднее потерять 500 тыс, если вдруг стартап не выстрелить, чем миллион и оставаться с дохлым продуктом, который имеет хороший код.

1
Ответить