Сегодня поговорим про пет- и инди-проекты.
Я, как тот самый живой человек, много лет совмещающий работу в компании и свои более-менее окупающиеся инди-движухи моя зарплата лида в Германии и доходы от пет-проектов на 2024-й примерно равны друг другу , частенько замечаю, как новички не могут вкатиться в свои инди-проекты, потому что у них сильно насрано в головах корпоративностью: кубернетесами, тестированиями, фреймворками, и прочими базвордами из их основной работы.
Программистам, начинавшим свой путь в корпоратах, сложно взять и начать писать инди, потому что у них сразу включается массированный overthinking я так и не нашел этому слову нормального перевода, подскажите плез — они начинают накручивать себе проблемы, которых на самом деле нет.
Им просто годами долбили, что они есть. Что всегда нужно думать о прозводительности а еще не дай бог помнить о Big-O notation :DDD , что всегда нужно писать тесты, что без докера-кубернетеса жизни нет, а CI/CD с красивым zero-downtime blue-green деплойментом обязателен.
В это же время какой-нибудь инди-номадлист делает БРРР, так как представляет из себя файл index.php, фронтенд на jQuery, базу данных на SQLite, в которой даже JOIN не используется, а деплоится это всё через великолепное перетягивание файликов через FTP. И его автор, Питер Левелс, делает на своих инди-проектах $2.5 миллионов в год. Один. Без налогов.
Ну либо возьмите любой другой инди-проект с Indiehackers.com или StarterStory.com с MRR от $5K в месяц. Я гарантирую, полыхающий бугурт да как так можно и как они на такой фигне столько зарабатывают!!11 на весь район гарантирован.
Программистам же самоучкам, которые изначально «инди», которые привыкли к методологии «Херак Херак в Продакшен» и «Fail Fast, Learn Faster», наоборот, всегда сложно вписаться в корпорации.
У них сразу волосы на подмышках начинают шевелиться, когда их команда закладывает шесть недель спринта на перекраску одной кнопки.
И вот почему так?
Как человек, познавший на своей шкуре обе стороны, могу сказать: здесь нет «правильного» или «неправильного» подхода. Просто существует два разных мира, которые нужно не путать, и тогда все будет заебись.
Сегодняшний пост как раз о них.
Любая компания — это давно запущенный механизм, главная цель которого — долгосрочное выживание всей системы, а не красота её отдельных блестящих шестерёночек.
Каждая новая строчка кода, которую вы пишете на работе, должна не просто решать свою задачу (с таким любой джуно-миддл справится) — она должна гарантировать, что тот чувак, который будет трогать её после тебя, ничего не сломает. А в идеале сможет еще и понять.
Для больших корпораций нормально, когда на проекте нет ни одного человека, который бы понимал систему целиком. Почти всегда оригинальный автор либо уже уволился, либо сменил проект, либо пошел на повышение.
Потому и нужны все эти дополнительные слои защиты — код-ревью, тестирование, автоматизация деплоя, отката, мониторинга производительности и прочего.
Да даже вы сами поставьте себя на место новичка. Вам будет комфортнее вкатываться в проект, где всё покрыто тестами, автоматически собирается и заранее сообщает о возможных проблемах, либо же в типичный «хуяк-хуяк-продакшен» стартап, где чуть тронь — всё посыпется как карточный домик?
То-то же. Вот потому и шесть недель на кнопку.
В корпорате вы пишете код не «для себя», а для того бедного поцана или поцанессы, которые придут после вас. Иначе жопа. Сраных «художников» никто не любит :)
И даже я сам, как тимлид в корпорате, за этим слежу. Потому что пока я на работе — я ношу эту шапку, да.
Еще бывает зависит от размера и аудитории корпорации. Я тут ща вкатился в код, который будет работать на разных моделях телевизоров и всяких там PS и Xbox'ах. Помимо того, что надо думать о пацанах и пацанессах за мной, каждый чих может сломать все на каком-нибудь Самсунге 2015 года с 10 миллионами пользователей. Поэтому хочешь не хочешь, а надо тестировать :)
Overthinking — усложнение. Не дословно, но максимально точно. Надумывание — туда же.
С другой стороны у нас инди. Ты один. Ты сидишь дома в трусах и пытаешься закодить очередной SaaS, чтобы нанести им пользу людям, а в идеале еще и заработать себе на сырную тарелку.
В инди ты сам себе и фаундер, и продакт, и фронтендер, и бекендер. Здесь и далее под «инди» подразумевается любой проект, сделанный одним человеком, без привлечения денег инвесторов, без попытки сделать «стартап» и собрать команду, а чисто бутстрап-штуки на самоокупаемости.
Здесь не будет людей «до» или «после» тебя. Главный и единственный человек, который когда-либо увидит твой код — это ты сам в будущем. Даже если ты станешь дофига успешным и продашь проект, то покупать будут компанию, а на код даже не посмотрят.
В инди твоя главная задача — писать код так, чтобы ТЫ САМ мог его пофиксить спустя год в два часа ночи пьяным с телефона
Стек для хорошего инди-проекта — максимальной тупой стек. Вот настолько тупой, чтобы тебе даже самому было стыдно, что ты используешь этот кусок говна мамонта.
Тот же Вастрик.Клуб написан на Django + Postgres + Redis + asyncio. Я всё это использовал еще в позапрошлом десятилетии окей, тогда вместо asyncio был tornado и знаю как свои пять пальцев. Меня ночью разбуди, я вам все модели в базе мигрирую, даже не приходя в сознание.
С деплоем такая же история. На работе у меня всё есесно в кубернетесах-шмубернетесах, но даже спустя пять лет общения с ними, я до сих пор не доверяю им настолько, чтобы использовать дома. Ваш случай может отличаться от моего. Я рассказываю о себе, а вы экстраполируйте на свой опыт и проводите аналогии по технологиям сами.
Весь первый год я деплоил Клуб своим привычным методом — ходил ручками через SSH и дергал старый советский docker-compose down/pull/up
. Так было во всех моих пет-проектах. Клуб тогда еще не был чем-то особенным.
На второй год, когда я понял, что проект выстрелил, я просто делать это каждый раз, потому написал Github Action, который делал то же самое за меня, но по каждому коммиту в мастер сам.
Ииии, всё.
Да, это до сих пор так работает. На проекте, приносящем под $10K в месяц MRR. Да и в этом самом бложеке такое же говно.
Расскажи я об этом на любой айти-конференции — меня просто выгонят швабрами со сцены и отпинают потом в кулуарах.
Но сколько раз я ни пробовал «взять что-то помоднее» — я дольше ебался с фреймворком или компилятором, чем действительно решал проблему, из-за чего я забрасывал проект еще до релиза. Нет, если вы делаете пет-проект чисто с целью изучить новый для вас TypeScript или Rust — это вполне легально. Но если у вас есть хоть какие-то планы потом показать это людям — нет. Не стоит.
Как антипример можно взять тот же Pepic — сервис для загрузки/проксирования картинок и видео, который я использую аж в четырех своих проектах. Аналог imgproxy, только умеющий еще и загружать.
Пепик написан на Go, который я вроде как знаю. Но до сих пор каждый раз, когда мне нужна поддержка новомодного формата AVIF или HEIC, там выясняется, что используемая мной либа уже устарела, нужна новая, но она не умеет в то, что умела прошлая, так что надо переписывать всё минимум неделю, потому что в Go всё «устаревает» каждый год, прям как в JS.
Тотальная боль.
Мог бы написать всё на «медленном» питоне (+Pillow) и поставить снаружи Nginx + Cloudflare как статик-прокси, чтобы питон не напрягать. Но нет.
Даже docker-compose
три года назад был «новинкой» в мире моих пет-проектов. До него я реально всё деплоил через SSH + git pull. У меня ушло лет десять, чтобы начать действительно доверять докеру и перестать просыпаться ночью от очередного переполнения диска или Out-of-Memory, потому что я где-то забыл прописать очередную ебаную ротацию логов или вызвать system prune
.
Не уверены, что ваш инструмент не разбудит вас ночью — не берите его. Всегда есть инструмент проще.
Не доверяете докеру — дергайте ./myapp.sh restart
руками.
Не уверены в новомодной базе данных — возьмите Postgres и не выебывайтесь.
Не знаете бекенда — пишите всё на своем Node.js и не слушайте «тру-бекендеров».
Не знаете git — заливайте файлы по FTP.
Даже вон у jQuery неделю назад мажорная версия вышла.
Ни один проект в истории мира еще не умирал от того, что взял слишком медленный язык программирования, слишком старый фреймворк или деплоил код через SSH.
Большинство инди-проектов умирают потому что их авторы просто выгорают и забивают на них. Поэтому самый лучший способ отсрочить это — взять самые простые кубики и строить всё из них, сэкономив себе моральных сил на куда более важные вещи. Например, той пользе, которую ваш проект наносит его пользователям :)
Еще было бы классно позишен стикки на панель инструментов для написания поста в вастрик клубе повесить и было б совсем заебись.
С одной стороны полностью согласен с этой идеей. С другой стороны я так много раз в своих пет-проектах писал кое-как на коленке, лишь бы работало, и вскоре тонул в этом всём говне настолько, что пропадала мотивация что-либо делать дальше. Любая новая супер-идея для пет-проекта разбивалась о то, как много дерьма надо перекопать, чтобы оно заработало, ничего не сломав. Со временем я приучил себя даже в пет-проектах поддерживать определенную гигиену и начинать с того, чтобы обустроить себе удобный сетап, потратить полчаса на написание базовых абстракций в коде, найти удобную либу или фреймворк, сделать удобный деплой, всё ради того, чтобы потом я мог позволить себе реализовывать новые идеи со скоростью их появления в голове, а не со скоростью дебага, как там эта глобальная переменная аффектит поведение кода в 20 разных местах. Так что видимо на картинке выше я где-то на 115:)
Кайф как тут эскалация горящего пердака происходит 🤤
чтобы ТЫ САМ мог его пофиксить спустя год в два часа ночи пьяным с телефона
Вот именно ради этого и хочется прикрутить все сиайсиди свистоперделки. Окей, пофикшу я .py-файлик на гитхабе прямо в веб-едиторе на экранчике в сафари. А дальше?..Ставить SSH-клиент на iOS? Подключаться к хоум-серверу через RDP, чтобы это всё запуллить и раскатить? Пфф, проще уж настроить тот самый GitHub action и нехай оно там само.
А если там ещё и автотесты в пайплайне...оаоаоаомм) Не забываем ведь, что юзкейс — мы правим код пьяные в два часа ночи. Без автотестов и с автодеплоем опасно
В свое время потратил много времени на поиск решения для управления инфрой, в итоге были найдены два self-hosted решения: Coolify и EasyPanel
А если в команде 2 или 3 человека - это что, тоже инди?
У инди, наверное, бывает две мотивации - результат и кайф от процесса. Если мотивация вторая - тогда можно упарываться чем угодно. Если мотивация результат (пользователи пользуются, деньги зарабатываются), то всегда сложность должна быть необходимо минимальная. Я давно не пишу код, но в стартапах 100500 раз говорил своим разработчикам "берем самый простой и тупой способ", "забейте пока на секьюрити и скейлинг" и т.п. Аргумент всегда один: "потому, что мы умрем не от этого"!
Вастрик тут как бы ещё и лукавит. Хоть код проекта и не отвечает всем корпоративным стандартам свистоперделоделия, отлично структурирован и вполне понятен вновьприходящим.
Так а почему нельзя React без SPA? Я так просто делал и не знал что нельзя(
Закон Конвея вкратце звучит как архитектура всегда повторяет корп-структуру.
Если над проектом работают отдельно команды фронтенда, бекенда и devops, то с вероятностью 100% у них будет три репозитория — «frontend», «API», «infra».
Девопсы не хотят общаться с разработчиками, фронтендеры не хотят трогать бекенд, в итоге даже самый простейший проект в любой компании всегда выглядит как то старое мемное видео про микросервисы.
Компании уверены, что это эффективно. Ведь если у тебя раньше увольнялся жирный разраб-фуллстек, то тебе приходилось искать по рынку такого же жирного разраба и заносить ему двойную кучу денег, чтобы он продолжил за тем.
Теперь же, если у тебя уволился фронтендер — ты просто открываешь окно и там во дворе на лавочке еще парочка фронтендеров точно ошивается. Удобно. Дешево.
Корпоратам такое нравится. Ведь главное для них — взаимозаменяемость.
Однако, такой подход не только раздувает штат компаний, но и приводит к раздутию самих приложений.
Взять те же SPA.
У SPA нет вообще никаких плюсов для конечного пользователя — это чистая диверсия против современного веба. Единственная причина, почему все вокруг пилят SPA — это тот самый закон Конвея с его дешевизной замены винтиков.
Я удивлён как корпоратам удалось продать миру идею SPA. Вот у нас был браузер, который охуенно умел брать HTML и рендерить его тебе на экран. За десятилетия эволюции браузеры научились делать это настолько быстро, что пукнуть не успеваешь.
Но нет же, кто-то пришел и сказал а давайте вместо того, чтобы давать браузеру его любимый HTML, мы будем сначала грузить 12 мегабайт джаваскрипта, потом заставлять кряхтеть его исполнять прямо на месте, чтобы в итоге изрядно заебавшийся браузер осознал, что ему теперь надо сходить еще на 25 разных REST-эндпоинтов, получить 50 мегабайт жсонов (ШТО?), а потооом уже на глазах у пользователя пытаться присрать всё это на страницу в нужных местах.
Всё вокруг прыгает, моргает, десяток спиннеров на странице крутится, ну прям как в цирк Дю Солей попал.
Ведущий спит бухой в горе NPM-зависимостей, рядом акробаты переизобретают URL/роутинг на фронтенде, вокруг клоуны ебаные скачат, которые CSS-in-JS придумали. Литералли вайбы раннего РНР.
Потом на сцену врывается главный клоун и такой — ищь чо я придумал, а давайте страницы на сервере рендерить. Нет, не как раньше. Хуже. Мы кнопку на экране уже покажем, но кликать на неё пока не дадим, ведь её обработчик в тех 12 мегабайтах клиентского джаваскрипта пока не подгрузился!
КРУТО Я ПРЕДУМОЛ??)))
Зрители сидят в ахуе зачем они вообще сюда пришли. Пятьдесят секунд ждут загрузку только одного куки-баннера. Как вам, а?
В общем, вы поняли. Если взглянуть со стороны — всё очень плохо. Не нужно копировать этих клоунов. И нет, у меня нет вопросов, когда SPA — это действительно «application». Графический редактор, там, или Excel в вебе. Но, блять, сейчас даже Reddit, сраный фид с картинками, тоже SPA =/
Блин, я не согласен. PWA нужны иначе нужно писать десктопные клиенты под венду и т.д. Вот у нас даже простой видеорегистратор и без логики на фронте просто не сделать нормальный прогрессбар и кучу другой логики.
Про спинерфест как раз еще хоршо вылезло сегодня: https://heydonworks.com/article/what-is-a-single-page-application/
PWA неплохи для всяких админок и backoffice'ов, но их затянули в обычный интернетююю
Как же ты чувствуешь!
3 года назад я поднял похожий по своей сути вопрос в чатике фронтендеров, чтобы как-то подискутировать... Через 5 минут меня нахуй послали.
HTMX заходит в чат
это прямо в сердечко, про мегабайты и вот это всё....
Так вот в инди всего этого нет. Нет Конвея, нет «команд», нет зон ответственности, нет текучки кадров. Ты один. И это просто отменяет 90% твоих проблем.
Инди-чуваки могут нафигачить за неделю то, что корпорат будет рожать шесть месяцев. Просто потому что у них нет оверхеда на коммуникацию. Инди — всегда монолит, а монолит — самая эффективная структура.
При этом монолиты противопоказаны «командам» — потому что монолит подразумевает то, что каждый член команды понимает всё, что происходит внутри. А в корпоратах такого не бывает, потому они так ненавидят монолиты, и в интернете примерно 9 из 10 статей будет о том, почему монолиты — это плохо.
Но в инди ты один, а значит ты по-умолчанию всё знаешь. В этом и сила инди. Она и позволяет вам обгонять неповоротливые корпораты.
Однако, у вас есть проблема — 99% туториалов в интернете написано чуваками из корпоратов. Если вы попробуете спросить совета в профессиональных сообществах, на вас посмотрят как на душевнобольного.
Расскажу свою историю.
Когда я только начинал писать движок Вастрик.Клуба, я сразу решил, что я не хочу SPA. Это ведь обычный коллективный бложек, где большая часть вещей стандартны для любого браузера, я просто хотел «немного больше интерактивности» типа кликабельных тегов и прочей фигни, который деды в свое время называли «AJAX» ух нафталином запахло .
Тогда я был совсем тупой и без задней мысли спросил у интернета совета «какой джаваскрипт фреймворк посоветуете для простого бложека». За что, конечно, все тру-фронтендеры накидали мне говна за шиворот, после чего я понял, что зашел не в тот район :)
Я сделал второй подход. Я взял сайт гитхаба как пример того, что я хочу. Набор обычных HTML-страниц, которые быстро грузятся, индексируются поисковиками, но на которых МЕСТАМИ есть интерактивные элементы типа лайков, контекстных всплывашек и автокомплита в формах.
Дальше я пошел искать можно ли на популярных тогда React или Vue делать эдакие «частично-интерактивные» сайты.
Ведь в теории можно взять условный React и вместо того, чтобы инициализировать через него всю страницу, просто создавать новый React-инстанс на каждую кнопку лайка на странице, не? Кто мне запретит-то?
Оказалось, что в современном фронтенде за такое дают от 10 до 15 лет строгого режима.
Так нельзя.
Просто нельзя.
Нет.
Абсолютно все фронтендеры мне сказали, что я ничего не понимаю в программировании и чтобы я держался подальше от их поляны с такими идеями.
Уже не помню как, но я нашел буквально одну статью в интернете которую уже потерял , где чувак умудрился подружить Django (который чисто-олдскульный-бекендерский фреймворк) + Webpack + Vue.js именно по такой схеме. Джанга рендерила честный HTML, а уже потом на страницу подгружался Vue, который инициализировал отдельные интерактивные элементы.
Я не знал тогда Vue, но все эти хипстерские фреймворки учатся примерно за час, так что это была прям победа! Ведь оно делает то, что я хотел. С тех пор Клуб на Vue :)
Меня всё устраивает, кроме небольшой проблемки: так как наш движок в опенсорсе, иногда на него натыкаются фронтендеры, которые «хотят пофиксить баг». И вот из сотни желающих, был примерно один, который не убежал в ужасе от того, что у меня там не SPA, а вот такой вот гибрид.
Но меня это особо не парит. Инди же :)
С тех пор я вот уже несколько лет наблюдаю за новыми либами для фронтенда, в попытках найти ту самую, которая бы популяризировала вот этот мой странный стиль.
И, кажется, пару лет назад я ее нашел — HTMX.
Она по сути продолжает дело, которое начал Basecamp с его HotWire — когда вместо JSON'ов ты передаешь в браузер уже готовый HTML и просто нагло его вставляешь на нужное место.
Фронтендеры меня за такие фокусы люто возненавидят, как и автора самой либы. Но да, оказывается, так можно :)
Потому когда я обновлял вот этот вот бложек, где вы сейчас читаете этот текст, я в нем впервые попробовал использовать только HTMX для всех интерактивных элементов типа лайков и отправки комментов.
И знаете. А заебись. Начинай я Вастрик.Клуб сегодня, я бы сразу взял HTMX и забил на всё остальное. Ванильный JS для виджетов и всё.
Да, потому что я бекендер, но вспомните предыдущий пункт. Чем тупее ваш стек — тем больше вероятность, что вы запилите проект и не выгорите.
☝️ про htmx надо прям писать отдельный пост с объяснением его феномена, всех мемов, и огромного хейта со стороны фронтенд-коммьюнити, сопровождающим всех 489 CEO of HTMX и непосредственно автора :D
Фронтендеры его хейтят потому что пока они только настраивают вебпак пердящий дед с бекенда уже все напрограммирует
Я почему-то думал, что по клику на ссылку произойдёт какая-то магия фронтенда, а оказалось просто ссылка на подкаст. 😅
Под описание того идеального фронтенда подходит Qwik: он отдает HTML, а потом грузит JS только в случае если тебе надо чето нажать. HTMX кайф, вообще все HTML-first фреймворки вдохновляют
« Она по сути продолжает дело, которое начал Basecamp с его LiveWire» на этом месте у эликсирщиков сгорело всё что могло. LiveView очень похоже на подход который ты пропагандируешь, но слишком непроверенный стек.
Вообще идея была ещё в Nitrogen и N2O, но применялась только в оперденях на эрланг
Про коммуникацию The Only Ubreakable Law: https://www.youtube.com/watch?v=5IUj1EZwpJY (да, это про Конвея, но не только. Это про изменения с течением времени тоже).
А писал бы ты на джаве у тебя бы было все на JSF обмазанном RichFaces. Олдскул как он есть :)
Нет Конвея
Ещё как есть! Команда одна и неделима, и порождение её неделимо. ) Документация появляется только там, где готов подключать сторонние модули-разработчиков.
Никуда ты от Конвея не убежишь. )
Я фронтендер и нет я, не ненавижу тебя, в том что ты говоришь есть смысл - для разных задач свои инструменты и подходы. Я никогда не писал так, но мне интересно.
ASP.NET 2 обновлял фрагменты HTML страницы ещё в 2005 году :) Там были другие проблемы. Но я уже последние лет 10 ловлю лулзы, от того, как хипстота переизобретает SSR, RPC, HTML и т.п. Вангую, скоро кто-то предложит сделать IDE, в которой можно будет компоненты просто перетаскивать на формочку мышкой!
Вастрик чуть выше:
Потом на сцену врывается главный клоун и такой — ищь чо я придумал, а давайте страницы на сервере рендерить. Нет, не как раньше. Хуже. Мы кнопку на экране уже покажем, но кликать на неё пока не дадим, ведь её обработчик в тех 12 мегабайтах клиентского джаваскрипта пока не подгрузился!
КРУТО Я ПРЕДУМОЛ??)))
Вастрик чуть ниже:
Уже не помню как, но я нашел буквально одну статью в интернете ? , где чувак умудрился подружить Django (который чисто-олдскульный-бекендерский фреймворк) + Webpack + Vue.js именно по такой схеме. Джанга рендерила честный HTML, а уже потом на страницу подгружался Vue, который инициализировал отдельные интерактивные элементы.
Но ты же буквально переизобрёл то же самое, с чего угарал, только на джанге и вуе, то есть более костыльно. Разве нет?)
Последнее время популярен Astro.js, который отдает статику, но если нужна интерактивность (с нативным джаваскрптом или либой), то он делает "остров", который подгружается позже. Реф - https://docs.astro.build/en/concepts/islands/
А чего jQuery не взял? Чтоб вобще не замарачиваться всякими сборщиками типа вебпака и тупо писать нужный интерактив?
HTMX мне напомнил древний pjax плагин для jQuery, правда плагин к сожалению давно уже не поддерживается
Так а почему нельзя React без SPA? Я так просто делал и не знал что нельзя(
В современном айти буквально единицы компаний, которые бы достигли успеха полностью на самоокупаемости с первого дня и не привлекали шальных денег инвесторов для «ускорения роста».
А инвесторы всегда хотят одного. Даже если компания может спокойно окупаться и пилить новые продукты в свое удовольствие, инвесторы будут требовать выжимать 10х, 100х, 1000х из имеющихся, лишь бы приумножить свои вложения.
Что бум доткомов, что текущий кризис в айти, стал по сути следствием вливания огромного количества шальных VC-денег и последовавшей за ними паники.
Именно поэтому любой корпоративный софт всегда подвержен процессу enshittification или «оговнякивания» по-нашему. Когда вместо фокуса на продукт и проблемы пользователей, компания в какой-то момент переходит в режим исключительно выдаивания денег из своих пользователей.
Казалось бы, что мешало Dropbox'у просто оставаться удобным файлохранилищем, не ломая старые фичи в угоду новым платным, а Реддиту открытой глобальной платформой для коммьюнити, не объявляя войну сторонним клиентам и своим же модераторам?
Инвесторы.
У бедных компаний начинается биполярное расстройство, ведь им, с одной стороны, нельзя ничего менять, чтобы не сломать бизнес-модель, а с другой, надо срочно что-то менять, чтобы начать зарабатывать ещё больше.
Отсюда и начинаются все эти «изменения без изменений», когда все без конца переезжают на новые фреймворки, выдумывают третью за год «дизайн-систему», внедряют OKR и прочие вещи, о которых никто не просил.
Вот тут-то их и могут подрезать на повороте маленькие и юркие инди, которым всё это не нужно.
Скажу вещь и попробую объяснить. Инвесторы смотрят на вторую производную и когда она меньше нуля, они сразу бегут забирать свои барыши.
А теперь вкратце объяснение - оцененная стоимость компании/стоков от времени есть график, который инвесторов интересует. И даже не тот факт, что циферька большая, она должна расти. И расти стабильно. Если скорость роста падает - фаундер не оправдал надежд, золотая антилопа померла. Надо не просто увеличивать ценность конторы, надо пятилетку делать за два года, за три - ты уже тормоз и не представляешь ценности.
А потом маленькие юркие инди хотят денег. Они идут к инвесторам или выходят на биржу, от них начинают требовать давать прибыль и цикл замыкается :)
Как бывший венчурный инвестор хочу прокомментировать (в наличии как опыт, так и bias).
Никто не заставляет ни одну компанию поднимать венчурное финансирование. Дрю Хьюстон в теории мог строить обычный бизнес с фокусом на прибыль. У Basecamp же вот получилось – на самом деле, получилось у многих, просто эти самые громкие. Fastmail и Proton вот, например.
Другой вопрос, что если уж ты взял эти деньги, то ты действительно вступил на путь вечного роста. Но сложно встать на позицию, что кого-то тут обманывают.
Большая часть бизнесов в мире не поднимают венчурный капитал. Он им не нужен, одни не нужны венчуру. Это нормально.
Другой вопрос, что никто не обязан давать компаниям несколько миллионов долларов не в кредит, а по сути просто так, за equity, которая на раннем этапе стоит практически ноль для большинства людей. Банки займ не выдадут, своих денег у фаундеров обычно нет (если это не их второй/третий и далее проекты).
Иногда с этой беговой дорожки можно и сбежать. Buffer выкупил своих ранних инвесторов, когда поняли, что не могут быстро расти. А иногда на нее приходится уйти. 1Password был вроде как вполне успешным бизнесом, но поняли, что их cutting-edge функционал становится базой в Chrome и iOS/MacOS. А у тебя уже целая компания сотрудников, которым зарплату бы платить. Вот и решили уйти в enterprise и подняли деньги под это.
Но странно всё списывать на злых и давящих капиталистов :)
Если Dropbox хороший пример, то кажется у кучи венчурных ойти-стартапов не прибыльны инвесторам. И если в добрые времена можно брать нахрапом 'да сейчас весь мир займём', то в плохое просто успешной проверки харизмы не хватает. Разве реддит был жутко прибыльный?
В инди-проекте у тебя изначально ровно ноль денег. На еду хватает и ладушки. Тебе нечего терять. Тебе не перед кем отвечать.
Потому цель любого инди — найти реальную проблему и решить её так, как её пока не решил ни гугл, ни блогеры в тиктоке, ни корпораты с их ERP'хами, ни никто вообще другой в мире.
И тогда люди захотят нести тебе денежку.
Люди несут денежку тогда, когда ваш сервис сэкономил им больше сил, чем они бы потратили на зарабатывание этой денежки
Не обязательно для этого искать новую доселе нерешенную проблему мира. Весь современный написанный корпоратами софт настолько плох, что если просто сделать одну единственную фичу, но в один клик и без подписки на «облако» — люди уже будут благодарны и понесут вам денежку.
Причём даже небольшой по меркам корпоратов «денежки» инди-разрабу хватит, чтобы содержать себя, семью и платить ипотеку. Ему не надо показывать 10x рост инвесторам в конце квартала — для выживания ему нужна лишь сырная тарелка и оплаченные счета за электричество. И дальше можно фигачить еще.
Именно поэтому инди-проекты могут со стороны показаться такими тупыми. «Приложение-будильник для телефона, которое соотносит ваш календарь с какательным расписанием вашей собаки, после чего рекомендует вам идеальное время для прогулок», — может принести его инди-автору десятки тысяч баксов в месяц. Да, люди могли бы приспособить для этого Google Calendar, но они же не ебобо.
В этом снова ваша инди-сила. Вот, например, последнее инди-приложение, которое я лично купил, делало лишь одну вещь — позволяло настроить направление скролла тачпада макбука отдельно от направления скролла на мышке. Да, блять, оказывается в настройках самого мака теперь этого сделать нельзя! Держи долор, добрый человек с реддита, который решил мою боль одним кликом.
И это снова диктует нам подход и стек. Если у вас 0 пользователей, нужен ли вашему приложению разухабистый фреймворк для тестирования? А тёмная тема? А форма восстановления пароля, если совсем уж?
Открою секрет: большая часть ваших инди-проектов умрёт, так и не дожив до этой необходимости.
Нужен ли бесшовный деплоймент сервису, на который заходят три человека в день? Да скорее всего нет, полежать 30 секунд пока делается docker-compose restart — не большая беда.
0 пользователей — вот ваша проблема. На ней и надо фокусироваться. А весь остальной овердизайн выбросить из головы нахер.
В инди вы можете делать вещи, которые недоступны корпоратам
Взять простейшую идею прямого телеграм-чата с основателем проекта, где любой может попросить новую фичу или пожаловаться на баг. Никакой FAANG не может себе такого позволить потому что у них слишком серьезные ебала и слишком много пользователей.
А для инди-проекта это, наоборот, может стать переломным моментом, когда люди подумают «блин, так круто, мне и на вопросы ответили, и мой баг починили, пойду занесу ребятам свои сто баксов на развитие».
То же касается шутеечек в интерфейсе или вот, например, у вас есть баг-трекер на гитхабе, куда вы настраиваете бота, который позволяет людям ставить реальную денежку за то, чтобы их фича была реализована. И когда фича стоит того и вы её сделали — бот автоматически начисляет вам все собранные за реализацию донаты. Ну кайф же? Никакой Facebook такого не может.
Когда-то давным давно (в 2018-м) я даже писал уже об этом феномене в рассылке про «Крафтовость — секрет успеха», где рассказывал, что в современном мире китайских копий, людей привлекают проекты, которые сделаны настоящими руками с любовью и душой, даже если они неидеальны. До сих пор работает.
В 2024-м так вообще киперпанк уже в самом разгаре и крупные айти-корпораты уже даже не пытаются притворяться «добренькими», творя откровенную хрень. На этом фоне маленькое и человекоориентированное инди, наоборот, кажется глотком свежего воздуха и даёт надежду.
Так что если у вас всё еще 0 пользователей и $0 MRR, то каждый раз спрашивайте себя — а если я сейчас потрачу неделю на X, это принесет мне хотя бы $1, или я делаю это, потому что «так положено» и «ну в книжках говорили что без X всё сломается»?
И дальше ответ сам станет очевидным.
А что за утилита для мыши/тачпада? Использую опенсорсный LinearMouse и даже не искал другие варианты :thinking:
Pavel Ratushny, я свою нашел на реддите, она просто работает, имеет бесплатный триал 30 дней и стоит $1.99. Рекомендовать не буду, возможно если через консоль поебаться, можно сделать также и бесплатно, но вот такая https://macmousefix.com/
Для скролла мыши/тачпада пользовался еще вот этой утилитой (бесплатная)
Так что если у вас всё еще 0 пользователей и $0 MRR, то каждый раз спрашивайте себя — а если я сейчас потрачу неделю на X, это принесет мне хотя бы $1, или я делаю это, потому что «так положено» и «ну в книжках говорили что без X всё сломается»?
Можно подумать, что у корпоратов в этом месте как-то по-другому. У них даже хуже, им эта неделя будет стоит лишние сотни тысяч дораров, а не постную неделю без сырной тарелки как у инди.
Еще могу порекомендовать опенсорсный MOS https://mos.caldis.me/, не только направление скроллинга настраивает, но и еще позволяет его сделать плавным на любой мышке (чтобы ощущался как на тачпаде)
https://pilotmoon.com/scrollreverser/ такая же бесплатно
Денис Баширов, спасибо, прикольная штука. Мне на мышке не хватало плавности, как на тачпаде)
бота, который позволяет людям ставить реальную денежку за то, чтобы их фича была реализована
А можно подробнее? Искал что-то подобное, но так и не нашел нормального варианта
привет! Я уверен что видел у тебя пост про отношение к инди проектам как к своим питомцам, а к работе в компании - как к ферме, но не могу найти.
мне показалось или и правда такой был? - в этой статье не вижу этого тейка, хоть сама статья тоже клевая)
Целью поста было не унизить корпорации, а показать, что даже в современном айти для инди по прежнему есть куча возможностей, если они не пытаются слепо всё делать «как большие». В кризис индустрия еще сильнее перекашивается и для инди-чуваков открывается больше новых путей, потому что люди начинают всё меньше и меньше уважать корпорации.
Конечно, всю эту дихотомию можно считать условной. Крайности полезны, чтобы подсветить нюансы, но в реальной жизни у вас всегда будет микс.
Даже у меня в жизни было минимум два примера, когда на работе мне давали карт-бланш на запуск проекта в режиме «инди». Чисто чтобы проверить концепцию и решить нужно ли оно.
Инди тоже бывает разное. Иногда вы действительно не можете себе позволить пролежать полдня с ошибкой 500, если решаете чувствительную ко времени проблему.
Говоря языком системного мышления — всегда смотрите на систему выше, которая находится непосредственно над вашим кодом. Пусть именно она диктует ваши ограничения, а не потому что «так в индустрии принято» и «ну по-другому нельзя».
Почему нельзя? Кем нельзя?
Если вам говорят нельзя, скажите Вастрик разрешил. Теперь можно.
В этой игре побеждает тот, чей проект больше $$$ принёс, а не у кого пайплайны были красивее и покрытие тестами плотнее.
Как только заходишь на поляну, которую уже под себя отформатировали корпораты, продвинув (или заставив отреагировать) соответствующее государственное регулирование, как инди-разработчик ты можешь обнаружить для себя непреодолимые препятствия. Например, всё что касается хранения личных данных пользователей и защиты конфиденциальности, уже во многих странах обложено такими требованиями, которые могут себе позволить соблюдать только корпораты с большим штатом на зарплате.
Я, конечно, дико извиняюсь, что буду душнить, но за державу обидно.
Она по сути продолжает дело, которое начал Basecamp с его LiveWire — когда вместо JSON'ов ты передаешь в браузер уже готовый HTML и просто нагло его вставляешь на нужное место.
Иногда мне кажется, что DHH — это такой первый канал/пропаганда. Роадмап руби и рельс последние 2-3 года — это копирование того, что уже есть в эликсире и фениксе.
Так вот, как написал Валера в каментах выше, первыми были какие-то никому неизвестные фреймворки на эрланге, но задал тренд все же LiveView от команды Phoenix, а LiveWire — это DHH списал. Так что DHH и Basecamp ничего не начинали, они просто скопировали.
Извините еще раз за духоту. Спасибо пожалусто.
Alexey Kuzin,
Например, всё что касается хранения личных данных пользователей и защиты конфиденциальности, уже во многих странах обложено...
Вот здесь, ребята, мы наблюдаем типичный overthinking, о котором я писал в самом начале поста.
Наш мозг настолько прожжён новостями, что мы даже не можем себе представить, что типичный инди-проект — это ебучий будильник для айфона или генератор аватарок для игр. Но нет, мы сразу начинаем себе выдумывать, что нам надо блять Boooking или Facebook свой делать, где надо миллиард персональных данных хранить.
НЕТ. НЕ НАДО.
ЭТО НЕ ИНДИ. БУДЬТЕ ПРОЩЕ
P.S.: Да даже если надо, это решается за денюжку уже в целом под ключ
Вастрик, всё так, но раньше можно было сделать форум или блог с авторизацией и не париться о хранении данных, а теперь приходится.
Во многом согласен; но как будто автор больше любит деньги чем технологии.
erhosen,
но как будто автор больше любит деньги чем технологии.
Если перефразировать это на "автор больше любит решать реальные проблемы живых людей, чем ебаться с очередными ТеХнОлОгиЯми" — то все три пункта сразу теряют смысл :)
А я то думал, что я один из немногих такой, кто ходит на свой домашний сервер все свои телеграмы боты руками рестартовать, а деплоить так и вовсе перетаскиванием папочек в UI. Задумывался над автоматизацией, скриптами. Ну все, выходхнул, теперь не буду думать, спасибо Вастрику за спонсорство моей лени :)
Alexey Kuzin, не в материале, но на 99,9% уверен, что всё это хранение персональных данных можно отдать на аутсорс тем самым корпоратам, прикрутив к своему проекту авторизации по условным гос.услугам.
Тебе нужно как можно скорее принести человеку ценность, никакому пользователю не интересно как ты там под капотом это сделал.
erhosen, если процесс для создателя более привлекателен, чем результат. То это не инди, а хобби. Хобби — это когда за работу платишь ты, а не тебе.
Пошла перепись лентяев с перекидыванием файлов по FTP. +1 =)
Спасибо за пост, думаю, ты кому-то сэкономил нехило так времени, которое бы убилось на StackOverFlow или гугление ненужного функционала для своих питомцев, потому что «надо».
P.S. Я надеюсь, никого не обижу, но ссылка упорно читается, как indie_vs_copro =)
Может я тупую вещь напишу и не понял, но по таким вводным для меня вход в инди невозможен без смены стека. Ну или я не вижу идей пока. Я на работе перекладываю байты и трёхмерные массивы на C++, и в веб, геймдев и мобилки перекатываться не хочется. Равно как и делать свой инди-проект, который всё равно стучится в API пары корпораций, чтоб достать оттуда данные, переложить их в более удобный джсон, посчитать число вхождений букв ы и методами машинного облучения определить, какая вы ы-персона. Моим инди-проектом был бы либо какой-нибудь мини-тепловизор, что совсем не инди проект, либо мертворожденная библиотека, коих тысячи в репозиториях. И без тестов там никак.
Александр Волков, для хардварных инди существует краудфандинг. История знает несколько десятков проектов.
Также знаю несколько нишевых хардварных проектов среди радиолюбителей.
Вполне инди.
Egor Ogarkov, все выдыхаем, Вастрик разрешил)
"Если вам говорят нельзя, скажите Вастрик разрешил. Теперь можно." - вот это прямо до слез - захотелось немедленно пойти и с душой накостылить себе инди на самых стремных и забавных костылях🥲
Я фаундер компании с выручкой $4млн в год и тремя сотрудниками включая меня (из которых два разработчика и одна саппортерка). У нас нет никаких SPA, нет реакта, нет вью, нет микросервисов, нет кубера, нет даже докера. Сплошной скучный олдскульный сервер-сайд с jquery (сервер на c#). Компании 15 лет. Я принципиально отказываюсь от предложений покупки, потому что мне интересно - насколько "далеко" можно завести бизнес с таким "неправильным" подходом никого не нанимая.
Опережая вопросы: нет, мы все успеваем, недостатка в кадрах нет, мы прикручиваем новомодные фичи (а-ля LLM/ЖПТ) за пару часов, когда конкуренты тупят месяцами. Работаем на чилле, большую часть времени ковыряем в носу. Продукт удовлетворяет GDPR, HIPAA (стандарт хранения персональных мед.данных в США) и прочим стандартам-шмандартам. И нас пен-тестят, и хакают, и так далее. Но все нормально.
P.S. Справедливости ради хочу отметить что все-таки нужны: тесты, мониторинг, бесшовный CI/CD с "блю-грин" деплоем (вот чтобы прямо из гитхаба автоматом - хобана - и все раскатилось). И оптимизация кода кстати тоже, и даже всякий трейсинг который находит тормозные места в коде автоматом. Но не сразу. А ТОГДА КОГДА НУЖНЫ.
можно приделать facebook авторизацию какую нибудь и не хранить у себя личных данных
erhosen, ну в целом да, деньги любить выгоднее, потому что технологии для денег, а никак не наоборот.
Например, всё что касается хранения личных данных пользователей и защиты конфиденциальности, уже во многих странах обложено такими требованиями, которые могут себе позволить соблюдать только корпораты с большим штатом на зарплате.
Вот это рили так, тоже бомбит с этого. Раньше все было проще - оставил юзер свои ФИО и имя тети на сайте CoolMarketplace - вебмастер может с ними делать чо угодно. Хоть выложить на форумах бесплатно, хоть продать китайским хакерам. Ну сам виноват, нефиг было реальные данные оставлять. И хранить данные тоже можно было где угодно, хоть в блокноте, хоть в Египте на папирусах записывать.
А потом в интернет стало заходить больше снежинок: "слили мои ФИО, боже мой! Да еще и пароль, хнык( И вообще удолиии."
Отличная статья, спасибо!
Мне кажется, вся путаница от того, что называть "инди" - хобби, связанное с самим программированием, или личные пет-проекты, сделанные ради пользы людям или денег.
Такая же дихотомия есть и в стартапах. Если стартап про бизнес-модельную инновацию, а не про технологию - то даже вредно на старте иметь "слишком умных"/корпоративных CTO, нужны скорее инди-biased люди, с предпринимательским подходом. Больше шансов преодолеть долину смерти (да, на PHP и FTP и т.п.), а потом уже будет зачем строить куберы и CI.
Личный опыт - мы подняли венчурный раунд и полгода вовсю растили бизнес, работающий на Tilda + Slack + Google Sheet, пока дописали первую версию монолита (да, и никаких микросервисов и SPA еще года 2!).
Добавлю, что полезно челленджить иногда нужность той или иной технологии лично для тебя
Вот например, попробовал недавно написать сервер для пет-проекта на Node.js без Express. На моменте, когда надо было раздавать статические файлы понял, что не, всё-таки в Express'е смысл есть) зато как бонус лучше узнал, как всё под капотом устроено
А вот от NVM решил отказаться после того, как он мне решил из исходников собирать самую популярную LTS версию на мою мега-популярную ОС/архитектуру. Теперь просто скачиваю с бинари с офф сайта, распаковываю в $HOME и обновляю PATH. Оказалось, что лично мне так проще и удобнее
overthinking = заморочки
overthinking ~> загоняться
Не, пока чот всё хуйня. Слова как будто правильные, но потеряли свое изначальное значение. Опопсели чтоле. Потому не передают изначально ёмкого смысла «когда вроде бы думал, но думал слишком долго и зря»
🤔 перенаобсасывал? :D но вообще будто бы "перемудрил" подходит. Но это не существительное, да: «включается массированный 'перемудрил'» звучит коряво, как будто шампунь такой
Недавно в нашей берлинской тусовке новые знакомые спросили, не из Москвы ли мы. Я удивился, откуда вообще появилась такая догадка. Ответ: "говор отличается, вы слишком много иностранных слов используете".
To overthink — Зацикливаться?
По-русски overthinking — это «Паралич воли», как сказали бы в наших стартаперских кругах. ) Частный случай «Аналитического паралича»/Analysis paralysis.
Но я понимаю, что в твоём случае, когда ты говоришь overthinking ты имеешь в виду, что к делу всё-таки приступают, но делают работу, вместо результата. В этом случае я бы тоже сказал «перемудрили» или «накрутили» себя.
Вот примерно как то, что на введении в тему все придумывают как перевести «overthinking», а не дальше читают )
Вместо overthinking есть простой русский оверинжиниринг
Оверинжениринг
Я бы сказал "нахуевертят всякого"
Заумь. В смысле, слишком заумную хрень разворотили.
Вастрик, а как Levels оптимизировал налоги? У него главная контора в США и маленькая в Португалии, с дельтой доход - расход около нуля?
Что он делает с остатком на счете головной конторы?
Cardamon, его страйп сообщает о том что у него главное юрлицо в Сингапуре, и судя по тем цифрам что он раньше публиковал на /open, там с него не то чтобы много налогов хотят
Не могу поделиться скриншотом здесь. Пришлю сообщения из чата levelsio про его траты на юрлицо и трейдмарк.
Nazmul:
Hi Pieter, which service did you use to incorporate your SG company and trademarks ? Could you share the website for that ?
Julius:
Really wondering that myself. Most Companys seem to want 4-8k per year From foreigners. And according to Reviews, the Service is nonexistent or real bad.
levelsio:
Yes I pay about $12k/year and more fees on top of that, trademark is diff company, that’s about $2k-$4k per mark and + EU region is more, but there’s cheaper ofc
https://t.me/levelsio/253/2599