Выбираем правильный стек технологий для проекта

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

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

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

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

Перед написанием статьи, мы опросили разработчиков о чем они думают перед тем, как приступить к работе.

Результаты разделили на 3 блока:

  • понимание проекта (бизнес-перспектива),
  • выбор стека (техническая перспектива)
  • перспектива развития.

Понимание проекта

Разработчик должен понимать концепцию продукта, изучить бизнес клиента и узнать временные рамки проекта.

Какой масштаб, бюджет и сроки проекта?

Клиент хочет добавить новую фичу за две недели или ему нужна ERP и это будет долгосрочный проект?

Вы должны знать:

  • Когда проект должен быть завершен?
  • Какая будет оплата за час работы?
  • Какой результат ожидают получить заказчики?

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

Это краткосрочный или долгосрочный проект?

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

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

Важна ли техническая составляющая?

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

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

Насколько это должно быть безопасно?

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

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

"Я уверен, что российские хакеры, которых я видел по телевизору, украдут список контактов нашего ресторана.”

Нет, дорогой клиент. Им это не интересно.

Я справлюсь с проектом?

Если захотите работать на проекте, уровень которого выше ваших умений, приготовьтесь к хаосу.

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

Выбираем правильный стек

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

Как упростить задачу?

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

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

Не выходите за рамки разумного

Клиент планирует продавать футболки через небольшой онлайн магазин?

С другой стороны, попытка сбить быка рогаткой не очень эффективна. Вам не понадобится высокодоступнный, load balanced, кэшированный no-SQL механизм, готовый поддержать миллион пользователей одновременно.

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

Выбирайте правильные инструменты для работы.

Являются ли технологии современными?

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

Представьте ситуацию, у вас возникла проблема и вы не знаете, как её решить. Начинаете гуглить и находите 3 ссылки с бесполезными советами. Чувство беспомощности и недовольный клиент вам обеспечены.

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

Сможет ли заказчик найти разработчиков для работы с вашим стеком?

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

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

Будут ли у них деньги на оплату таких разработчиков?

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

Не забывайте о “человеческих отношениях” и думайте о будущем клиента.

Заключение

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

2 комментария

Фундаментальная тема проектирования в такой маленькой и тщедушной статейке. Вот, примерно, как надо - https://vc.ru/design/46608-primenenie-navigacii-modulnoy-setki-tipografiki-i-cvetovoy-palitry-v-interfeysnyh-modelyah

2

«Выбираем правильный стэк»:
- вы должны слушать клиента
- не беритесь если вы не готовы
- подберите стэк для задачи клиента

Вам нужно как то пересмотреть название статьи