Какой стек учить для инди разработки?
Публичный пост
Индихакеры
14 марта 2024
1498
В своем недавнем посте Вастрик говорил о различиях подходов и стеков в инди и корпоративной разработке. Но вопросу стеков или инструментов было уделено совсем немного внимания, поэтому хочу раскрыть эту тему.
Какие по вашему мнению инструменты нужно изучить, потому что их можно использовать для реализации почти любых проектов?
Задам сразу рамки:
- Инструмент должен быть достаточно легким для освоения даже не для программиста (например, Гугл Таблицы)
- Под разработкой я подразумеваю разработку различных сервисов в формате сайта, приложения, бота в Телеграме и тп
Например, для своего сайта я использую только HTML и этого достаточно для реализации моих проектов.
Экосистема JS (в т.ч. Typescript, Node). Позволяет одним стеком закрыть широчайший список задач. Для казуального программирования один из лучших выборов.
Для затравки vanilla js + html + css на клиенте, а на сервере node.js+ postgresql - дешево быстро и сердито позволяет написать абсолютно любую небольшую фигню.
Маркетинг, продажи, реклама, PR - учить и делать надо все то, что поможет реально зарабатывать.
Иначе из "инди-разработки" состоится только разработка.
Наверное, начнём с языка программирования JavaScript. На нём и сайт сделать интерактивным, напарсить данных, бекенд развернуть, расширение для браузера. Хотя, я пошел в сторону python, в нем тоже удобно писать скрипты и сайты в режиме фигак-фигак в продакшн. Но JavaScript всё равно нужен даже на сайте на питоне, так почему бы сразу не перейти на него?
Вероятно понадбится какая-то БД. Думаю, сейчас самое универсальное это postgres, на крайняк можно хоть json в неё складывать (получаем NoSQL, хе-хе).
Скорее всего понадобится знание очереди задач. Это штука, которая сама в порядке очереди передаёт запрос на какую-то функцию и следит за исполнением. Например, письма рассылать, пдф конвертить, писать промпты AI ассистенту — всё что требует какого-то времени на обработку.
Тебе точно нужно будет как-то захостить твою штуку. Бот, сайт, saas сервис. В идеале, конечно, это сделать через systemd для общего как это работает на сервере. А сразу после перейти на докер, потому что удобнее. Ну или сразу фигач в докере. Хотя выдача сертификата letsencrypt в докере чутка взорвала мне мозг.
Монга для инди приятна тем, что можно на корню решить вопрос миграций схемы (не делать их) и интеграционных тестов (для них не нужны будут миграции схемы!). Много фичей из условной монги, упрошающих жизни инди-копателя, сегодня доступны в условном постгресе тоже, но это не значит что они так же удобно сделаны / так же хорошо покрыты документацией и тупыми вопросами на StackOverflow.
Такой стек подойдёт для "создания почти любых проектов", но не могу не отметить, что в целом любой ЯП на сервере + голый HTML + любая БД достаточны для инди проекта, если ты хорошо программируешь (даже на JS ba dum tss)
https://github.com/deep-matter/build-your-own
В целом любой высокоуровневый язык, у которого есть фуллстек-фреймворки с историей в десяток-другой лет, то есть python/django, php/laravel, ruby/rails или js/(что там сейчас на жс в моде?). Готовые фреймворки сэкономят тебе кучу времени на тривиальных задачах (общение с БД, аутентификация пользователя, роутинг, кэширование, куча всего), а если ты достаточно долго/много будешь пытаться пилить свои штуки, то в конце концов можно будет выделить собственный бойлерплейт на основе выбранного фреймворка, в который можно будет засунуть всё, что нужно конкретно тебе в (почти) любом твоём проекте, это ещё сэкономит время при запуске новых приложений. Я так и сделал для себя, потому что идей много, а пилить одни и те же базовые вещи каждый раз ужасно лениво.
Путь наименьшего сопротивления — технология, которую ты уже сколько-то знаешь и от неё не тошнит.
Если нет отвращения к JS, то я бы брал его. Есть либы под всё что угодно, есть куча всего готового. Express/Nest/Adonis (клон Laravel) для бекенда и Vue/React для фронта/серверсайда. На мобилки или через PWA или через фреймы поверх Vue/React.
Альтренатива - PHP/Laravel. Самый приятный бекенд фреймворк ин термс оф девелопер экспириенс. Есть Livewire чтобы писать интерактивный фронт без JS фреймворков. Есть Inertia чтобы писать С фреймворками гибридно, не делая полностью отдельный фронтенд.
Вторая альтрернатива - Python + Django/FastApi/Flask. Если нравится питон, вариант надёжный но штуки типа Livewire там нет, так что или по старинке или с отдельным фронтендом.
Другие варианты - не стоит для новичка рассматривать. Го противный по синтаксису и под веб писать на нём - боль, так как нет фреймворков. Он хорош для другого.
Джава/Шарпы - их только изучать год, да и непонятно зачем, вы же не энтерпрайз софт планируете пилить.
Сервер - если в европе/снг, советую таймвеб клауд, цены топ, серваки в польше и нидерландах. Есть и в РФ, там совсем копейки стоят. DO/Vultr норм но дороже, если нужно хостится в USA норм вариант.
AWS и прочий серверлесс не надо, там нужно очень хорошо понимать зачем это вам и уметь правильно всё готовить иначе можно влететь на бабки.
С развертыванием и настройкой сервера может помочь Ploi.io и подобные провижен тулы. Есть даже бесплатные вроде.
БД - mysql. Самая простая, инфы тонна, работает обычно всё из коробки из любого фреймворка. 0 проблем за 12 лет работы с ней. Потом если что переедете на NoSQL или постгрю или что то серьезнее.
В целом как то так.
Если вопрос именно про «учить», то никакой. Лучше взять то, что уже хорошо знаешь.
Ruby on Rails + Hotwire
На js ты сможешь написать практически все)
Есть всякие go, Python, php считающиеся простыми в освоение.
На самом деле я перебрал уже много языков, остановился сейчас на js/ts, понравилось что то мне фронт пилить и видеть красоту сотворенную. Вот сейчас начал засматриваться на Golang, возможно потрогаю для интереса)
Так что только тебе решать) Обычно начинают с питона из-за простоты, потом уже можно двигаться к более низкоуровневым
Специально для инди не учить никакой. Потому что когда у тебя в руках молоток, все кажется гвоздями.
Для сайта спортивной команды и для небольшого десктопного приложения будет разный стек.
Важно бысто находить кубики готового решения и быстро обмазывать это все суперклеем. И то и другое может быть на разных языках и технологиях.
Вот народ накинул про сайтостроение, но ведь не всегда же инди про это.
Если бы я с нуля сейчас занимался бы прикладным ML, то самую хайповую тему, а именно языковые модельки, я бы делал в одно лицо при помощи:
Не благодари
https://create.t3.gg/
upd: прошу прощения, я перегрелся на работе и не дочитал тему...
Если рассматриваете no-code, то Bubble для более сложных веб-сервисов, или Webflow/Wix для сайтов формата лендингов.
JS(TS) + Tailwind + React + Next + Supabase - для веба + бека
JS(TS) - для нэйтива
Если DL, то питон придётся поучить