Be ruthless during offer negotiation, then stick around for a while.
This will ensure you're compensated fairly AND have enough time to learn, build something valuable, and stand out.
#careerbites — the advice I wish I got when I was younger
twitter.com/oleggromov
This will ensure you're compensated fairly AND have enough time to learn, build something valuable, and stand out.
#careerbites — the advice I wish I got when I was younger
twitter.com/oleggromov
How much is a year of your life?
It must be priceless, right? So thought I, until I realised I've been putting money first for over a decade.
In 2022, a year of my life is $200k. It was about $110k in 2021, $175k in 2020, $90k in 2019.
Here's a brief story of my life 👇
twitter.com/oleggromov
It must be priceless, right? So thought I, until I realised I've been putting money first for over a decade.
In 2022, a year of my life is $200k. It was about $110k in 2021, $175k in 2020, $90k in 2019.
Here's a brief story of my life 👇
twitter.com/oleggromov
Почему твитер?
Многие до сих пор удивляются, зачем/почему я полез в твитер. Основных причины две.
1. Англоязычная тех-тусовочка в основном в твитере
Есть ещё стримеры на твиче, ютуберы, само собой, но это видео, другой формат.
Я давно для себя решил, что я — человек мира. Хочу учиться-делиться-творить пусть и для небольшого пузырька единомышленников, но всё-таки с возможностью роста в большой мир.
Русскоговорящим предпринимателям и "криейторам" (прости господи!) телега заменила email-рассылки, которые в остальном мире растут и даже привлекают инвестиции.
А вот для англоговорящей аудитории телега — это какая-то маргинальная помойка, тут никого нет, да и не придут, даже если звать.
2. В телеграме нет органики
Канал ужасно тяжело растить. Как круто ты ни пиши, никто никогда этого не увидит без рекламы/продвижения где-то ещё.
Ну ладно, будет рост +5 человек в месяц, если писать что-то настолько крутое, что оно будет расходиться по интернету через пересылку сообщений.
Все мои подписчики пришли с других платформ: статей про карьеру на VC и Хабре, разных интервью, кросс-постов в каналах друзей.
Это всё здорово, но ужасно сложно и утомительно.
А что твитер?
А в твитере есть рекомендации, есть лайки и репосты, там принято делиться тредами (нравится нам это или нет).
Твой контент реально видят новые люди.
Поэтому и твитер, поэтому на английском.
Кстати, есть прикольное предположение, что старые аккаунты в твитере растить сильно сложнее, чем новые.
Свой аккаунт я зарегистрировал в 2009 году. 13 лет — тринадцать, Карл! — он был полудохлым, с ±200 подписчиками.
И тут в июне я начал активно туда писать. За последние 28 дней у меня:
- 159k показов твитов
- 40к визитов профиля
- рост на 94 подписчика
Это ужасно мало, 0.2% конверсия из просмотра профиля в подписчика.
Может, конечно, профиль так себе — я пока ещё экспериментирую и с тем, о чём писать, и с тем, как это выглядит. Но так или иначе, за 2 месяца я настрочил кучу контента, а привлёк всего 200 человек. Мало.
Так что зарегал новый профиль и пробую начать сначала 🤩
Многие до сих пор удивляются, зачем/почему я полез в твитер. Основных причины две.
1. Англоязычная тех-тусовочка в основном в твитере
Есть ещё стримеры на твиче, ютуберы, само собой, но это видео, другой формат.
Я давно для себя решил, что я — человек мира. Хочу учиться-делиться-творить пусть и для небольшого пузырька единомышленников, но всё-таки с возможностью роста в большой мир.
Русскоговорящим предпринимателям и "криейторам" (прости господи!) телега заменила email-рассылки, которые в остальном мире растут и даже привлекают инвестиции.
А вот для англоговорящей аудитории телега — это какая-то маргинальная помойка, тут никого нет, да и не придут, даже если звать.
2. В телеграме нет органики
Канал ужасно тяжело растить. Как круто ты ни пиши, никто никогда этого не увидит без рекламы/продвижения где-то ещё.
Ну ладно, будет рост +5 человек в месяц, если писать что-то настолько крутое, что оно будет расходиться по интернету через пересылку сообщений.
Все мои подписчики пришли с других платформ: статей про карьеру на VC и Хабре, разных интервью, кросс-постов в каналах друзей.
Это всё здорово, но ужасно сложно и утомительно.
А что твитер?
А в твитере есть рекомендации, есть лайки и репосты, там принято делиться тредами (нравится нам это или нет).
Твой контент реально видят новые люди.
Поэтому и твитер, поэтому на английском.
Кстати, есть прикольное предположение, что старые аккаунты в твитере растить сильно сложнее, чем новые.
Свой аккаунт я зарегистрировал в 2009 году. 13 лет — тринадцать, Карл! — он был полудохлым, с ±200 подписчиками.
И тут в июне я начал активно туда писать. За последние 28 дней у меня:
- 159k показов твитов
- 40к визитов профиля
- рост на 94 подписчика
Это ужасно мало, 0.2% конверсия из просмотра профиля в подписчика.
Может, конечно, профиль так себе — я пока ещё экспериментирую и с тем, о чём писать, и с тем, как это выглядит. Но так или иначе, за 2 месяца я настрочил кучу контента, а привлёк всего 200 человек. Мало.
Так что зарегал новый профиль и пробую начать сначала 🤩
Ушёл в никуда
Ну что, наконец-то настоящие новости подвезли: я ушёл из Sourcegraph.
Сегодня был последний день. Выкупил рабочие компы, закрыл последний PR (без мёржа, ха-ха), попрощался с командой и всё — адиос!
Почему?
Потому что, во-первых, наконец-то могу. Виза позволяет не работать, а благодаря моей скупости деньги на жизнь есть и без работы.
Разумеется, чтобы наконец попробовать себя в свободном полёте. Даже не то чтобы обязательно запилить гениальный стартап в первый же месяц, а просто понаблюдать за собой.
Чего хочется, о чём думаю, как себя чувствую. Что волнует, что интересно, чего не хватает.
Это роскошь, конечно.
Наконец, ну дико я задолбался за этот 2022-й и конец 2021-го года. Сначала мы переехали в Россию, только обустроились — ***. Удрали в Турцию, там почти полгода на чемоданах.
Сейчас переехали в UK — и только через несколько недель, наконец, переедем в постоянное жильё. И это же тоже только начало!
Конечно, это время меня многому научило. Например, тому, что ко всему не подготовишься. Нужно принять неизвестность и идти вперёд несмотря ни на что. Очень по-предпринимательски. Но утомительно.
И на работу сил (да и желания, если быть честным) практически не осталось. Надо отдыхать.
Что дальше?
Тут сложнее.
Конечно, у меня есть сотни записанных идей. Без преувеличения. В основном какие-то мелочи, но есть и большие штуки, которые звучат многообещающе.
Но честно говоря, я пока не знаю. Даже не пытаюсь что-то решить.
Я хотел было написать книгу про карьеру, чтобы помочь обычным ребятам устроиться в big tech. Платят же много, мозги делают (в среднем) меньше, чем во всяких галерах. Работа бывает интересная.
Но я не уверен, что ROI у книги за авторством фактически ноунейма подберётся близко к желаемому.
Допустим, пишу я её три месяца. Обойдётся это мне, условно в £15,000. Значит, если книжка стоит £25, продать нужно 600 копий, чтобы её окупить. Кажется, что немного, но если считать средней конверсию в 1% от размера аудитории — нужно 60,000 подписчиков.
Нереалистично.
Но, как бы то ни было, аудиторию в твитере я собирать продолжу. Без людей, которым интересно, что ты можешь сказать, далеко не уедешь.
Все эти stealth-стартапы по полгода в чулане пилить — ну это для наивных.
Самое главное сейчас — дошлифовать позиционирование. Зачем кому-то вообще на меня подписываться? Какую пользу ожидать?
Вот вы мне можете очень помочь, если расскажете, почему подписались (и не отписались).
А про эмоции от ухода с работы, неожиданные, я тоже в твитере написал.
👋
Ну что, наконец-то настоящие новости подвезли: я ушёл из Sourcegraph.
Сегодня был последний день. Выкупил рабочие компы, закрыл последний PR (без мёржа, ха-ха), попрощался с командой и всё — адиос!
Почему?
Потому что, во-первых, наконец-то могу. Виза позволяет не работать, а благодаря моей скупости деньги на жизнь есть и без работы.
Разумеется, чтобы наконец попробовать себя в свободном полёте. Даже не то чтобы обязательно запилить гениальный стартап в первый же месяц, а просто понаблюдать за собой.
Чего хочется, о чём думаю, как себя чувствую. Что волнует, что интересно, чего не хватает.
Это роскошь, конечно.
Наконец, ну дико я задолбался за этот 2022-й и конец 2021-го года. Сначала мы переехали в Россию, только обустроились — ***. Удрали в Турцию, там почти полгода на чемоданах.
Сейчас переехали в UK — и только через несколько недель, наконец, переедем в постоянное жильё. И это же тоже только начало!
Конечно, это время меня многому научило. Например, тому, что ко всему не подготовишься. Нужно принять неизвестность и идти вперёд несмотря ни на что. Очень по-предпринимательски. Но утомительно.
И на работу сил (да и желания, если быть честным) практически не осталось. Надо отдыхать.
Что дальше?
Тут сложнее.
Конечно, у меня есть сотни записанных идей. Без преувеличения. В основном какие-то мелочи, но есть и большие штуки, которые звучат многообещающе.
Но честно говоря, я пока не знаю. Даже не пытаюсь что-то решить.
Я хотел было написать книгу про карьеру, чтобы помочь обычным ребятам устроиться в big tech. Платят же много, мозги делают (в среднем) меньше, чем во всяких галерах. Работа бывает интересная.
Но я не уверен, что ROI у книги за авторством фактически ноунейма подберётся близко к желаемому.
Допустим, пишу я её три месяца. Обойдётся это мне, условно в £15,000. Значит, если книжка стоит £25, продать нужно 600 копий, чтобы её окупить. Кажется, что немного, но если считать средней конверсию в 1% от размера аудитории — нужно 60,000 подписчиков.
Нереалистично.
Но, как бы то ни было, аудиторию в твитере я собирать продолжу. Без людей, которым интересно, что ты можешь сказать, далеко не уедешь.
Все эти stealth-стартапы по полгода в чулане пилить — ну это для наивных.
Самое главное сейчас — дошлифовать позиционирование. Зачем кому-то вообще на меня подписываться? Какую пользу ожидать?
Вот вы мне можете очень помочь, если расскажете, почему подписались (и не отписались).
А про эмоции от ухода с работы, неожиданные, я тоже в твитере написал.
👋
Книга о карьере
Решил, что всё-такибуду писать книгу . И все это будет в популярном сейчас формате building in public.
Буду рассказывать и про процесс, и про сами идеи, которые кажутся важными и которыми хочется поделиться. И большую часть всего этого — вы уже догадались? — постить в твитер.
В канале тоже будут обновления, но не такие регулярные и атомарные, а чуть более завершённые, потому что формат всё-таки другой.
Следующий пост будет про цели и немного о том, для кого она.
А пока показываю новую шапку профиля. Как вам?
twitter.com/oleggromov
Решил, что всё-таки
Буду рассказывать и про процесс, и про сами идеи, которые кажутся важными и которыми хочется поделиться. И большую часть всего этого — вы уже догадались? — постить в твитер.
В канале тоже будут обновления, но не такие регулярные и атомарные, а чуть более завершённые, потому что формат всё-таки другой.
Следующий пост будет про цели и немного о том, для кого она.
А пока показываю новую шапку профиля. Как вам?
twitter.com/oleggromov
Media is too big
VIEW IN TELEGRAM
Альфа-версия обложки для книги 🤩
To build a great career, focus on building great things. You’ll have fun, learn a ton, and the right people may notice your results.
Focusing on raises and promotions only breeds indifference to work.
#careerbites — the advice for software engineers that are after more money
twitter.com/oleggromov
Focusing on raises and promotions only breeds indifference to work.
#careerbites — the advice for software engineers that are after more money
twitter.com/oleggromov
Всем привет! Давно ничего не писал вам, слишком сильный откат словил после полугода на адреналине и в неизвестности.
***, переезды, очередной новый дом, домашние и семейные дела, свои и чужие удавшиеся и неудачные проекты и идеи... Но пора возвращаться в строй - и день рождения у меня скоро, и вообще, много всякого накопилось, чем хочется поделиться 🙂 Но начну с важного, с обновления темы канала и с подводки к тому, откуда новое название взялось.
Недавно сидим болтаем с Соней и Витей. Рассказываю им, что не вполне понятно, о чём и для кого писать - слишком плохо мне даётся делать что-то одно, чтобы была понятная тема, которая интересна одной аудитории. Вот у Вити есть канал про задачки и алгоритмы, он хорошо и достаточно органически растёт. Соня по моде и стилю угорает, занимается этим дни напролёт. Классно же.
А мне скучно так, по расписанию и на заданную тему. Что я самый настоящий jack of all trades, master of none, а кому это вообще может быть интересно - не ясно.
И тут Соня выдаёт:
- Это понятно, ты же углубился слишком сильно, начал что-то про коды, не коды свои рассказывать...
Я как заржу! Ведь точно, "коды - не коды" - это отличное определение моей профессиональной деятельности. То я пишу коды, то не пишу, то пишу про коды, то пишу про некоды, то вообще не пишу.
Поржал и решил: канал теперь будет называться коды некоды.
Заодно и серьёзности щщей поубавится, а то тяжко с такой публичной миной жить. Вечно надо смысл и пользу выдавать, но я же не фабрика смыслов! Скорее уж конвейер по производству неудачных попыток и невыполненных обещаний. А уж обещаний-то с таким названием можно вообще не давать. Разве что пообещаю ничего не обещать - и тут же сам себя опровергну, вполне в моём духе, как вы любите.
Короче, встречайте: канал про преувеличения и прописные глупости от почётного обладателя синдрома самозванца с обширным опытом в индустрии 🤡
Рассказать вам, что я делал полгода? А вы мне тогда расскажите в комментариях, как у вас дела и чем занимались.
Обнимаю ❤️
***, переезды, очередной новый дом, домашние и семейные дела, свои и чужие удавшиеся и неудачные проекты и идеи... Но пора возвращаться в строй - и день рождения у меня скоро, и вообще, много всякого накопилось, чем хочется поделиться 🙂 Но начну с важного, с обновления темы канала и с подводки к тому, откуда новое название взялось.
Недавно сидим болтаем с Соней и Витей. Рассказываю им, что не вполне понятно, о чём и для кого писать - слишком плохо мне даётся делать что-то одно, чтобы была понятная тема, которая интересна одной аудитории. Вот у Вити есть канал про задачки и алгоритмы, он хорошо и достаточно органически растёт. Соня по моде и стилю угорает, занимается этим дни напролёт. Классно же.
А мне скучно так, по расписанию и на заданную тему. Что я самый настоящий jack of all trades, master of none, а кому это вообще может быть интересно - не ясно.
И тут Соня выдаёт:
- Это понятно, ты же углубился слишком сильно, начал что-то про коды, не коды свои рассказывать...
Я как заржу! Ведь точно, "коды - не коды" - это отличное определение моей профессиональной деятельности. То я пишу коды, то не пишу, то пишу про коды, то пишу про некоды, то вообще не пишу.
Поржал и решил: канал теперь будет называться коды некоды.
Заодно и серьёзности щщей поубавится, а то тяжко с такой публичной миной жить. Вечно надо смысл и пользу выдавать, но я же не фабрика смыслов! Скорее уж конвейер по производству неудачных попыток и невыполненных обещаний. А уж обещаний-то с таким названием можно вообще не давать. Разве что пообещаю ничего не обещать - и тут же сам себя опровергну, вполне в моём духе, как вы любите.
Короче, встречайте: канал про преувеличения и прописные глупости от почётного обладателя синдрома самозванца с обширным опытом в индустрии 🤡
Рассказать вам, что я делал полгода? А вы мне тогда расскажите в комментариях, как у вас дела и чем занимались.
Обнимаю ❤️
Ну конечно же, в последнюю ночь перед запуском, когда всё на свете проверено и работает, как задумано - и оставалось только переключить домены и базы в проде, что-то всё-таки умудрилось сломаться!
Думаете, это мои коды? Кастомная аутентификация через одноразовые пароли, куча логики в боте для обеспечения работы клуба, интеграция со страйпом или сервисом рассылки email?
Как бы не так! Это сраная админка джанги сломалась. Да, я не шучу. Да, "баг в компиляторе". И, хотя баг в компиляторе куда менее вероятен, чем ошибка в коде админки какой-то там CMS, выглядит всё равно нереалистично. Может я где-то накосячил? Наверняка. Но пятисотит именно админка, а не продакшен-урлы.
Надеюсь воспроизвести хотя бы, потому что пока что пара отладочных деплоев ошибку куда-то запрятали 🤦🏻♂️
Думаете, это мои коды? Кастомная аутентификация через одноразовые пароли, куча логики в боте для обеспечения работы клуба, интеграция со страйпом или сервисом рассылки email?
Как бы не так! Это сраная админка джанги сломалась. Да, я не шучу. Да, "баг в компиляторе". И, хотя баг в компиляторе куда менее вероятен, чем ошибка в коде админки какой-то там CMS, выглядит всё равно нереалистично. Может я где-то накосячил? Наверняка. Но пятисотит именно админка, а не продакшен-урлы.
Надеюсь воспроизвести хотя бы, потому что пока что пара отладочных деплоев ошибку куда-то запрятали 🤦🏻♂️
Ошибка оказалась тривиальной и, в некотором смысле, виноват был почти что мой код/настройки.
Я давно уже использую managed posgtres от DigitalOcean, чтобы не возиться хотя бы с настройками и обновлением БД. Так вот оказалось, что там не включён по-умолчанию connection pooling, и 500-я ошибка была потому что БД обрубала лишние соединения 🤷♂️ Хорошо хоть всё важное сыпется не в постгрес, а в редис.
PS В комментариях спрашивали, настроено ли всё это опять вручную - нет. На этот раз я решил, что не хочу возиться хотя бы с деплоями и начал использовать DigitalOcean App Platform. В итоге стоимость прода выросла в 2-3 раза, относительно удобно стало деплоить через докер, появились бесшовные деплои (кайф) и куча всякой фигни вроде "изменил env-переменную - тригенрну тебе полный ребилд" (ладно, с кешем).
Я давно уже использую managed posgtres от DigitalOcean, чтобы не возиться хотя бы с настройками и обновлением БД. Так вот оказалось, что там не включён по-умолчанию connection pooling, и 500-я ошибка была потому что БД обрубала лишние соединения 🤷♂️ Хорошо хоть всё важное сыпется не в постгрес, а в редис.
PS В комментариях спрашивали, настроено ли всё это опять вручную - нет. На этот раз я решил, что не хочу возиться хотя бы с деплоями и начал использовать DigitalOcean App Platform. В итоге стоимость прода выросла в 2-3 раза, относительно удобно стало деплоить через докер, появились бесшовные деплои (кайф) и куча всякой фигни вроде "изменил env-переменную - тригенрну тебе полный ребилд" (ладно, с кешем).
Надо немного контекста добавить, конечно. Пару месяцев назад Соня решила запустить свой Модный клуб. Это такой закрытый платный чат с кучей полезного контента для любительниц шоппинга и моды. Сразу же продала 30+ мест. Я поглядел, как лихо девушки друг у друга покупают разные штучки, и взялся помогать фултайм.
С контентом и фотографиями, программированием, дизайном, настройкой всего на свете, включая рекламу. Конечно, почти сразу сел коды писать. Чего там делать, всего-то бота простенького написать.
Но есть нюансы. Бот в телеграме не может узнать, что сообщение из канала/чата было удалено. Нельзя получить список пользователей канала, даже если бот админ. Сообщение с 2-10 фото/видео - это не одно сообщение, а 2-10 сообщений, объединённые одним media_group_id. Отправляются они по-отдельности, а потом уже клиентами объединяются в как бы одно сообщение. Поэтому и пересылать их дико неудобно даже человеку. А представьте, каково боту.
Дальше, запретить просмотр истории сообщений до входа в чат можно только в чате. А в канале нельзя - присоединился, даже к приватному, и будешь видеть всё. Ну и так далее. В любом случае, нам абы как не надо, а надо офигенно 😎
Пришлось держать свои списки пользователей, учить бота пересылать сообщения из основного чата в чат-обсуждение (как канал + комментарии), хранить всю информацию о сообщениях, чтобы редактировать репост, когда отредактирован оригинал. Копить медиагруппы, потому что они приходят разными сообщениями (прям сквозит через это поведение наша любимая обратная совместимость).
Вместо чуть усложнённого echo-скриптика поверх API получилась какая-то конина лютая со своим стейтом сразу в двух местах. В которой нужно думать про race conditons, иначе воркеры друг с другом подерутся. Простенький бот на поверку оказался не таким уж простеньким.
А потом регистрация и оплаты, подписки и отписки, непрошедшие платежи. Это вообще отдельная вселенная, где накосячить в десять раз проще, чем не накосячить. Когда время пришло, всех клиентов проверить на наличие подписки, кому-то напомнить, кого-то отписать, кому-то сделать исключение по промокоду/whitelist-у. И даже когда всё сделано более-менее по уму, клиентам всё равно сложно.
Кто-то увидел, что надо ввести e-mail для регистрации - и забил. Кто-то отвалился на вводе одноразового пароля. У кого-то не сработал apple pay на странице оплаты из-за отсутствия billing address, и она, как раньше, сделала перевод (а не оформила подписку 😬). Кто-то не понял формулировку про карту зарубежного банка. Все эти дополнительные клики и вопросики конверсии рубят жестоко, конечно.
И вот сижу я, третью (или четвертую?) неделю всё это добро кручу-верчу и думаю одну и ту же банальную мысль. Всё это программирование и автоматизация нужны только на больших объёмах/частотах. Пользователей, транзакций, событий, ручных действий. Принять оплаты от 30 человек и добавить их в чат можно и руками. Справиться с парой сотен сложнее. С тысячей невозможно без отдельного человека, администрирующего процесс на фултайме.
В то время как отдельные храбрецы умудряются стартапы пилить годами, когда нет ни одного платежа! 🤯
Короче, доделываю и переделываю всё, надеясь и предвкушая, как наш Клуб вырастет с нескольких десятков до хотя бы нескольких сотен человек, а лучше до нескольких тысяч. Тогда все эти edge- и corner-кейсы, над которыми я голову ломаю, окажутся нужными, и кто-то на себе почувствует (но скорее не заметит) количество усилий, приложенных к простым штукам.
Чтобы эти простые штуки хотя бы работали как положено, а лучше работали хорошо и помогали, а не бесили 😍
С контентом и фотографиями, программированием, дизайном, настройкой всего на свете, включая рекламу. Конечно, почти сразу сел коды писать. Чего там делать, всего-то бота простенького написать.
Но есть нюансы. Бот в телеграме не может узнать, что сообщение из канала/чата было удалено. Нельзя получить список пользователей канала, даже если бот админ. Сообщение с 2-10 фото/видео - это не одно сообщение, а 2-10 сообщений, объединённые одним media_group_id. Отправляются они по-отдельности, а потом уже клиентами объединяются в как бы одно сообщение. Поэтому и пересылать их дико неудобно даже человеку. А представьте, каково боту.
Дальше, запретить просмотр истории сообщений до входа в чат можно только в чате. А в канале нельзя - присоединился, даже к приватному, и будешь видеть всё. Ну и так далее. В любом случае, нам абы как не надо, а надо офигенно 😎
Пришлось держать свои списки пользователей, учить бота пересылать сообщения из основного чата в чат-обсуждение (как канал + комментарии), хранить всю информацию о сообщениях, чтобы редактировать репост, когда отредактирован оригинал. Копить медиагруппы, потому что они приходят разными сообщениями (прям сквозит через это поведение наша любимая обратная совместимость).
Вместо чуть усложнённого echo-скриптика поверх API получилась какая-то конина лютая со своим стейтом сразу в двух местах. В которой нужно думать про race conditons, иначе воркеры друг с другом подерутся. Простенький бот на поверку оказался не таким уж простеньким.
А потом регистрация и оплаты, подписки и отписки, непрошедшие платежи. Это вообще отдельная вселенная, где накосячить в десять раз проще, чем не накосячить. Когда время пришло, всех клиентов проверить на наличие подписки, кому-то напомнить, кого-то отписать, кому-то сделать исключение по промокоду/whitelist-у. И даже когда всё сделано более-менее по уму, клиентам всё равно сложно.
Кто-то увидел, что надо ввести e-mail для регистрации - и забил. Кто-то отвалился на вводе одноразового пароля. У кого-то не сработал apple pay на странице оплаты из-за отсутствия billing address, и она, как раньше, сделала перевод (а не оформила подписку 😬). Кто-то не понял формулировку про карту зарубежного банка. Все эти дополнительные клики и вопросики конверсии рубят жестоко, конечно.
И вот сижу я, третью (или четвертую?) неделю всё это добро кручу-верчу и думаю одну и ту же банальную мысль. Всё это программирование и автоматизация нужны только на больших объёмах/частотах. Пользователей, транзакций, событий, ручных действий. Принять оплаты от 30 человек и добавить их в чат можно и руками. Справиться с парой сотен сложнее. С тысячей невозможно без отдельного человека, администрирующего процесс на фултайме.
В то время как отдельные храбрецы умудряются стартапы пилить годами, когда нет ни одного платежа! 🤯
Короче, доделываю и переделываю всё, надеясь и предвкушая, как наш Клуб вырастет с нескольких десятков до хотя бы нескольких сотен человек, а лучше до нескольких тысяч. Тогда все эти edge- и corner-кейсы, над которыми я голову ломаю, окажутся нужными, и кто-то на себе почувствует (но скорее не заметит) количество усилий, приложенных к простым штукам.
Чтобы эти простые штуки хотя бы работали как положено, а лучше работали хорошо и помогали, а не бесили 😍
Не понимаю в пубернетисах
Только хотел хвалить деплои в PaaS, в моем случае digital ocean app platform, как заметил, что пубернетисы-то ломаются. Не могут не ломаться 🥰
Разумеется, таинственно и без логов, ведь это платформа - все уже не продумано за тебя!
Во время supposedly zero downtime деплоев какое-то время не отвечают ручки приложения, и даже говорят 504 bad gateway. А ведь, по идее, до успешного прохождения health check-ов трафик должен по-прежнему идти в инстансы предыдущей версии.
Если в своей дремучей, конфигурируемой руками убунте без всяких докеров я могу сделать что угодно, хоть полчаса кэши прогревать до переключения трафика, то тут кто-то как-то уже сделал. И никому не сказал.
Сделал так, что пятисотящий пубернетис мне продавать мешает 🤬 Ну ладно, пока не мешает, но может помешать, есть я буду недостаточно аккуратным или достаточно успешным.
Причем, из-за отсутствия конфигов и логов, я даже не уверен, кто именно в цепочке cloudflare -> nginx (?) -> gunicorn/uvicorn -> django -> мой говнокод косячит и дропает соединения.
Точнее, я уверен, что это не мой гениальный код и не джанга с единорогами. Потому что там-то логи есть, и я в них ничего не вижу 🧐
Скорее всего оборванные соединения случаются именно в момент переключения трафика, но что происходит с уже висящими в очереди и ждущими обработки запросами? Ставлю на то, что отлетают именно они. Но не уверен.
Какие вообще в DO настройки reverse proxy, где их посмотреть, что на них влияет? Сколько соединений может удержать один воркер в app platform? В моем представлении edge-сервер должен держать не больше стандартных линуксовых тыщи-двух и не меньше настроенного в nginx. Одно соединение жрет памяти... ну не знаю, сотню килобайт + payload? Да если не меньше даже. Памяти там пара гигов, а значит не пару сотен уж точно хватить должно.
Вопрос в зал: куды бечь, чтобы разобраться?
Только хотел хвалить деплои в PaaS, в моем случае digital ocean app platform, как заметил, что пубернетисы-то ломаются. Не могут не ломаться 🥰
Разумеется, таинственно и без логов, ведь это платформа - все уже не продумано за тебя!
Во время supposedly zero downtime деплоев какое-то время не отвечают ручки приложения, и даже говорят 504 bad gateway. А ведь, по идее, до успешного прохождения health check-ов трафик должен по-прежнему идти в инстансы предыдущей версии.
Если в своей дремучей, конфигурируемой руками убунте без всяких докеров я могу сделать что угодно, хоть полчаса кэши прогревать до переключения трафика, то тут кто-то как-то уже сделал. И никому не сказал.
Сделал так, что пятисотящий пубернетис мне продавать мешает 🤬 Ну ладно, пока не мешает, но может помешать, есть я буду недостаточно аккуратным или достаточно успешным.
Причем, из-за отсутствия конфигов и логов, я даже не уверен, кто именно в цепочке cloudflare -> nginx (?) -> gunicorn/uvicorn -> django -> мой говнокод косячит и дропает соединения.
Точнее, я уверен, что это не мой гениальный код и не джанга с единорогами. Потому что там-то логи есть, и я в них ничего не вижу 🧐
Скорее всего оборванные соединения случаются именно в момент переключения трафика, но что происходит с уже висящими в очереди и ждущими обработки запросами? Ставлю на то, что отлетают именно они. Но не уверен.
Какие вообще в DO настройки reverse proxy, где их посмотреть, что на них влияет? Сколько соединений может удержать один воркер в app platform? В моем представлении edge-сервер должен держать не больше стандартных линуксовых тыщи-двух и не меньше настроенного в nginx. Одно соединение жрет памяти... ну не знаю, сотню килобайт + payload? Да если не меньше даже. Памяти там пара гигов, а значит не пару сотен уж точно хватить должно.
Вопрос в зал: куды бечь, чтобы разобраться?
"By working in short cycles and constantly refining and improving the product, teams can deliver absolutely nothing on a regular basis, enabling them to receive paychecks from their clueless managers until the entire budget is wasted and they can move on to the next project or the next company."
Да ты ж мой золотой!
Я бы сказал, что ChatGPT отлично понимает не только agile, а в принципе судьбу 9 из 10 программных продуктов 😁
Да ты ж мой золотой!
Я бы сказал, что ChatGPT отлично понимает не только agile, а в принципе судьбу 9 из 10 программных продуктов 😁
Запуск-пиздец 🤯🤪🥳
Последнюю неделю марта мы продавали подписку/вход в Стильный клуб на апрель. И это был какой-то пиздец! Наверное каждый стартапер/предприниматель должен разок-другой через подобное пройти, чтобы стать дисциплинированнее и заработать очередной триггер и так дёргающегося глаза.
Сердце процесса продаж - это Сонины перфомансы в инстаграме. Она показывает, рассказывает, удивляет, ссылается на, предлагает и напоминает. Все "по книжке" современных инста-продаж. А главное - работает. Люди покупают у людей, а не клиенты у компаний 🫡
Я же обеспечиваю техническую сторону вопроса: от съемок фото и видео до кодирования бота, приема оплат и прочих операционных заморочек.
Тут надо понимать, что вообще-то в конце марта мы встречались с родителями в Турции, чтобы отпраздновать мой день рождения, наконец-то дать ребёнку потусить с бабушкой и дедушкой и просто отдохнуть. И доделывание и запуск всего на свете пришлись на это же время! 🤡 То есть вот сегодня я встречаю родителей, потом мы идём все вместе гулять, потом едем в зоопарк, а ночью я пишу код. И так почти каждый день.
Разве что-то могло пойти не так в нашем идеально спланированном отпуске? 🤔
В общем, существенную часть подготовки к запуску я просто импровизировал. Куча времени у меня ушла на конструирование основы бота, вот с этими сообщениями, очередями и async в питоне (вот где джаваскрипт уделывает питон просто в тряпки! ). Потом я достаточно сфокусированно делал репосты из канала в канал (там у нас своя система комментариев). Ну и, по классике, только в последнюю неделю доделывал важное - регистрацию, оплаты, систему доступа к продукам.
Короче, как вы уже обязаны были догадаться, весь отдых пошёл по одному месту. Ещё учитывая то, что начало нового месяца и конец продаж мы запланировали на один день. Наверное поэтому опытные блогеры берут паузу в 1-2 дня после окончания продаж.
Мы работали до 3-4 ночи в течение недели почти каждый день, я почти буквально из говна и палок наляпывал новые и обновлял существующие сценарии в боте. Всё это, без нормального проектирования и тестирования, падало прямо в проде.
Нечасто - сильно накосячил я всего один раз, когда десяток новых пользователей пришли в бота и застряли на вводе e-mail, потому что у меня не создавались модели пользователей с пустым не-null полем. Это я что-то "улучшал" за 15 минут до этого 🤡
Хотя любопытно, что самая важная часть - приём оплаты, уведомление об оплате, выдача доступа - работали у меня нормально. А вот фигня вроде этих регистраций хуже. Интересно было бы поискать корреляцию между уровнем моей усталости в момент написания этих кодов и их качеством.
Прикольная (и очевидная) штука, которая из этого родилась, это возможность писать пользователям напрямую через бота. Когда мой чудо-код работал не так, как я планировал, то я в реальном времени все это видел в логах, чинил и тут же досылал сообщения из бота, будто бы он умнее, чем есть 😎 Прикольно получилось. Чувствовал себя властителем судеб регистрирующихся.
Конечно же, мои любимые деплои подосрали и тут: ведь это атомарность-иммутабельность-whatever, нельзя просто строчку кода подправить и питон перезагрузить. Нужно сделать чекаут, прогнать весь CI, остановить и перезапустить всех воркеров. Буэ, блин, сам себе ентерпрайз какой-то наколхозил!
Из неочевидного:
⁃ срочность ("продажи закрываются через 12 часов") - работает! Люди после такого напоминания идут и докупают, если они хотели купить изначально, конечно
⁃ кто хочет купить, продирается через даже ошибочные сценарии и пишет в поддержку. Те, кто не очень хочет, отваливаются на первых же трудностях или даже дополнительных шагах регистрации/покупки
⁃ напоминания тем, кто не хотел покупать, приводят только к блокировке бота 🤪 Спасибо телеге за то, что совместила кнопки "удалить" и "забанить", очень удобно!
Обобщать после 50+ продаж и 200+ взаимодействий с ботом ещё рановато, но уже очень хочется 🥰
Теперь думаю над основными метриками этого продукта и том, как их наиболее эффективно поддерживать и растить с помощью своих кодов-некодов.
Последнюю неделю марта мы продавали подписку/вход в Стильный клуб на апрель. И это был какой-то пиздец! Наверное каждый стартапер/предприниматель должен разок-другой через подобное пройти, чтобы стать дисциплинированнее и заработать очередной триггер и так дёргающегося глаза.
Сердце процесса продаж - это Сонины перфомансы в инстаграме. Она показывает, рассказывает, удивляет, ссылается на, предлагает и напоминает. Все "по книжке" современных инста-продаж. А главное - работает. Люди покупают у людей, а не клиенты у компаний 🫡
Я же обеспечиваю техническую сторону вопроса: от съемок фото и видео до кодирования бота, приема оплат и прочих операционных заморочек.
Тут надо понимать, что вообще-то в конце марта мы встречались с родителями в Турции, чтобы отпраздновать мой день рождения, наконец-то дать ребёнку потусить с бабушкой и дедушкой и просто отдохнуть. И доделывание и запуск всего на свете пришлись на это же время! 🤡 То есть вот сегодня я встречаю родителей, потом мы идём все вместе гулять, потом едем в зоопарк, а ночью я пишу код. И так почти каждый день.
Разве что-то могло пойти не так в нашем идеально спланированном отпуске? 🤔
В общем, существенную часть подготовки к запуску я просто импровизировал. Куча времени у меня ушла на конструирование основы бота, вот с этими сообщениями, очередями и async в питоне (
Короче, как вы уже обязаны были догадаться, весь отдых пошёл по одному месту. Ещё учитывая то, что начало нового месяца и конец продаж мы запланировали на один день. Наверное поэтому опытные блогеры берут паузу в 1-2 дня после окончания продаж.
Мы работали до 3-4 ночи в течение недели почти каждый день, я почти буквально из говна и палок наляпывал новые и обновлял существующие сценарии в боте. Всё это, без нормального проектирования и тестирования, падало прямо в проде.
Нечасто - сильно накосячил я всего один раз, когда десяток новых пользователей пришли в бота и застряли на вводе e-mail, потому что у меня не создавались модели пользователей с пустым не-null полем. Это я что-то "улучшал" за 15 минут до этого 🤡
Хотя любопытно, что самая важная часть - приём оплаты, уведомление об оплате, выдача доступа - работали у меня нормально. А вот фигня вроде этих регистраций хуже. Интересно было бы поискать корреляцию между уровнем моей усталости в момент написания этих кодов и их качеством.
Прикольная (и очевидная) штука, которая из этого родилась, это возможность писать пользователям напрямую через бота. Когда мой чудо-код работал не так, как я планировал, то я в реальном времени все это видел в логах, чинил и тут же досылал сообщения из бота, будто бы он умнее, чем есть 😎 Прикольно получилось. Чувствовал себя властителем судеб регистрирующихся.
Конечно же, мои любимые деплои подосрали и тут: ведь это атомарность-иммутабельность-whatever, нельзя просто строчку кода подправить и питон перезагрузить. Нужно сделать чекаут, прогнать весь CI, остановить и перезапустить всех воркеров. Буэ, блин, сам себе ентерпрайз какой-то наколхозил!
Из неочевидного:
⁃ срочность ("продажи закрываются через 12 часов") - работает! Люди после такого напоминания идут и докупают, если они хотели купить изначально, конечно
⁃ кто хочет купить, продирается через даже ошибочные сценарии и пишет в поддержку. Те, кто не очень хочет, отваливаются на первых же трудностях или даже дополнительных шагах регистрации/покупки
⁃ напоминания тем, кто не хотел покупать, приводят только к блокировке бота 🤪 Спасибо телеге за то, что совместила кнопки "удалить" и "забанить", очень удобно!
Обобщать после 50+ продаж и 200+ взаимодействий с ботом ещё рановато, но уже очень хочется 🥰
Теперь думаю над основными метриками этого продукта и том, как их наиболее эффективно поддерживать и растить с помощью своих кодов-некодов.