Найти тему
TeamStarter

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

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

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

Backend & Frontend

Обычно сервисы состоят из двух частей:

  • Backend - это приложение, которое запущено на сервере. Оно принимает запросы от браузера, обрабатывает, взаимодействует с базой данных и отдает ответ обратно браузеру.
  • Frontend - это приложение, которое работает непосредственно в браузере. Оно отправляет запросы на backend, получает результат и реагирует на него (например отображает его или показывает/скрывает какие-то блоки на страничке)

Язык программирования backend

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

Java

+ Строго типизированный язык, что положительно влияет на качество кода
+ Очень развитая инфраструктура. Для любой задачи можно найти готовое решение
+ Огромное сообщество. Любую проблему уже сто раз решили и выложили на stackoverflow.com
- Очень дорогие разработчики. В условиях ограниченного бюджета Java-разработчики вам будут не по карману
- Сложен и многословен. В условиях ограниченных сроков задачи на Java в среднем будут решаться дольше, чем на любом другом языке
- Требователен к ресурсам. Придется доплатить за хорошие серваки

PHP

+ Очень развитая инфраструктура. Для любой задачи можно найти готовое решение
+ Огромное сообщество. Любую проблему так же уже сто раз решили и выложили на stackoverflow.com
+ Относительно дешевые разработчики, можно собрать команду не потратив за месяц годовой бюджет :-)
+ Седьмая версия языка, действительно очень быстро работает. Не начинайте проект на версии ниже чем 7.1
+ Высокая скорость разработки. В отличие от большинства других языков, PHP создавался как язык для разработки интернет-сервисов
- В среднем, качество PHP программистов хуже, чем в JAVA. Есть шанс совершить роковую ошибку на старте проекта
- Код не такой качественный и надежный по сравнению с JAVA

JavaScript (NodeJs)

+ Скорость разработки еще выше, чем на PHP
+ Большинство программистов fullstack (разрабатывают и backend и frontend)
- За счет неоднозначности многих моментов реализации языка, качество кода хуже, чем на PHP
- При этом программисты стоят дороже чем в PHP, но все еще дешевле Java

Golang

+ Очень быстро набирает популярность и продвигается многими известными программистами. Golang в списке используемых компанией технологий может поднять привлекательность вашего стартапа в глазах потенциальных сотрудников и инвесторов
+ Строго типизированный язык. Значит более качественный и надежный код. При этом скорость и удобство разработки гораздо выше, чем у Java.
- Самый молодой из всех представленных языков. Что означает меньше крутых профессионалов и почти полное отсутствие инфраструктуры вокруг языка.

Python

+ Очень приятный и удобный язык. Программисты на Python обычно гораздо счастливее Джавистов
+ Низкий порог вхождения. При желании можно нанимать PHP или JavaScript программистов и быстро переучивать
- В последнее время потерял популярность в web и остался уделом devops и data scientists
- Огромная инфраструктура для работы с данными, но для web по сравнению с PHP и Java - скудновата

Язык программирования frontend

Чаще всего фронт бывает двух типов: мобильный и web (браузер). В свою очередь мобильный делится на iOs и Android.

Мобильный front

  • iOs приложения раньше писали на Objective-C. Потом компания Apple выпустила свой язык программирования Swift и все сообщество дружно (но не быстро) мигрировало на него. Сейчас начинать новый проект на Objective-C не имеет никакого смысла.
  • Android всегда писали на Java. Однако после нескольких судебных разбирательств о патентах между Google (Android) и Oracle (Java), компания Google заявила, что рекомендует для разработки под Android язык Kotlin. Который, между прочим, пилят очень крутые ребята из Петербургской компании JetBrains. В общем я, как и Google, советую вам смотреть в сторону Kotlin.

Web front

C web тоже все не так просто как кажется. Тут везде JavaScript, однако фронт бывает SPA, а бывает шаблонизатор+jQuery.

  • SPA, он же Single Page Application. В этом случае фронт - это отдельное приложение, которое запускается отдельно от Бэкэнда и только обменивается с ним короткими сообщениями. Пишут SPA на React, Vue.js или Angular. Большой разницы между этими технологиями нет. Лично мне больше по душе Vue.js, он просто понятнее. Но если вы не планируете лезть в код - то подойдет любая.
  • Шаблонизатор + jQuery - значит, что фронт генерируется на сервере (на Бэке). С точки зрения эстетики и универсальности, этот вариант хуже, но гораздо дешевле. Даже не нужно нанимать специального программиста, любой опытный Backend разработчик умеет верстать и работать с jQuery. Они это, честно говоря, очень не любят, но здесь уже вопрос мотивации.

База данных

-2

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

Существуют две основные модели хранения данных: реляционная (от слова Relation - связь) и документоориентированная.

  • Реляционная модель подразумевает, что ваши сущности (например, пользователь, продукт или статья) разбиты на несколько таблиц и связаны между собой. Например, имя пользователя и пароль лежат в одной таблице, а ФИО и страна проживания - в другой. Такая модель подразумевает строго определенную структуру данных и высокую степень целостности. В общем, реляционная модель - это надежно. Базы данных, реализующие такую модель: Mysql и PostgreSQL
  • Документоориентированная модель подразумевает хранение всей сущности в одном документе в одном месте. Обычно в виде JSON объекта. Здесь нет строго определенной структуры и каждый документ может содержать или не содержать любые поля. Такие базы более наглядны и не требуют знания языка запросов SQL для доступа к информации. Самая популярная документная БД: MongoDB

Таск-менеджер

-3

Итак, спасибо http://teamstarter.ru, программиста вы нашли. Теперь нужно где-то ставить ему задачи. Программисты очень любят, когда все текущие и ближайшие задачи у них перед глазами. Также полезно иметь возможность комментировать и обсуждать эти задачи, наглядно менять им статусы и вообще вести проект. Вот немного таск-менеджеров которыми я сам пользовался:

  • Jira - идеальный инструмент. Есть все, что нужно. У меня никогда не возникало потребности, которую Jira при правильной настройке не могла бы удовлетворить. Беда только в том, что Jira обойдется вам минимум $10 в месяц.
  • Trello - очень простой, красивый и бесплатный инструмент. Есть таски (задачи), с возможностью комментирования. Статусы, теги, можно назначать задачи на членов команды. Рекомендую.
  • YouTrack - менеджер задач от уже упоминавшихся ребят из питерского JetBrains. По функционалу очень близок к Jira. Есть даже бесплатный тариф. Однако на бесплатном тарифе все ваши проекты и задачи доступны для просмотра всему интернету. Если вам нечего скрывать - отличный вариант.
  • GitHub - кроме того, что GitHub это самый популярный сервис для хранения кода, у него есть инструменты для ведения проекта. Вы можете создавать задачи (issue) и объединять их в Проекты (Projects). А если ваши программисты и код держат на GitHub (с недавнего времени приватные репозитории на GH стали бесплатными, при условии не более трех коллабораторов), то вот вам бесплатная интеграция задач с кодом.

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

PS

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