Олег Громов печатает...
1.79K subscribers
60 photos
5 videos
141 links
Канал программиста-предпринимателя @oleggromov. Пишу про стартапы и разное вокруг на примере своих проектов, про развитие, карьеру, про код, UK и всё на свете.
Download Telegram
Зачем устраиваться в FAANG и/или переезжать за границу

Роман Пушкин поделился мыслями про FAANG, и я хочу немного дополнить его пост.

В FAANG хотят попасть по разным причинам. Для кого-то это работа мечты. Может казаться, что, получив ачивку Яндекса, Фейсбука или Гугла, жизнь обретёт какую-то завершённость. Это достаточно наивная идея, активно продвигаемая, по-видимому, самими корпорациями через те самые мощные HR-бренды, на поддержание которых они тратят огромные деньги.

Разработчику в корпорации действительно непросто вырасти (в деньгах и ответственности), особенно потому, что треки individual contributor, product manager и engineering manager намеренно разделены.

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

Про деньги тоже верно. FAANG часто платит немного выше рынка на входе, но основной рост дохода приходится не на базовую зарплату, а на RSU и рефрешеры. Чтобы получать их, нужно очень быстро крутить педали (и получать хорошие оценки на ревью) - и делать это много лет.

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

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

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

В итоге, стоит ли вообще переезжать, в частности на работу в FAANG? Сейчас для меня это неочевидно.

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

Например, моя текущая жизнь в Англии достаточно тусклая в сравнении с 6 месяцами в США, когда я был студентом языковой школы и просто жил в своё удовольствие, изучая английский и путешествуя по Штатам.

Альтернативой может быть удалёнка. Как я писал в одной из статей, "удалёнка — это отличный вариант для тех, кто не хочет ввязываться в сложности переезда ради работы, а удалёнка в зарубежной компании особенно хороша из-за высокой зарплаты".

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

А вы как считаете, переезд за границу и работа в корпорации стоят всех сложностей?
Апдейт по сайд-проектам: стартапы в зародыше

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

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

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

По ссылкам из моего канала в калькулятор пришло около 400 человек, из которых порядка 250 активно пользовались им - я прикрутил метрики, которые трекаются гугл аналитикой, чтобы следить за вовлечённостью пользователей. Среднее время вовлечённой сессии - около полутора минут.

Но есть критически важная проблема: не понятно, как улучшить retention пользователей, потому что по своей природе такой калькулятор - это штука, которой воспользуешься от силы пару раз, планируя переезд. А переезжают люди нечасто.

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

Критические предположения, которые нужно проверить:
- для продукта есть рынок, и можно найти подходящую модель монетизации
- удастся запартнёриться с важными и заметными игроками на рынке, чтобы привлекать трафик без активных усилий
- калькулятор в принципе обеспечивает достаточную точность, чтобы быть полезным (частично провалидировано первыми пользователями)


Словарик с произношением Quiken
Quiken я начал делать по вечерам, когда Лондон закрылся на карантин. Мне казалось, что можно сделать полезную штуку для изучающих английский - но, в большей степени, хотелось доказать себе, что я могу что-то сделать от начала и до конца (после корпоративных ужасов последнего десятилетия).

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

Само браузерное расширение, хотя и полностью работоспособно уже больше года, было распубликовано гуглом за отсутствие страницы privacy policy - и я так и не сделал её. И не уверен, что сделаю, хотя дел там на полчаса.

Бэкенд сервиса вертится на 5-долларовом дроплете в Digital Ocean и смотрит в отдельный MySQL за $15. Итого: -$20 каждый месяц. Надо перенести БД в постгрес, который я использую для своего сайта - нагрузка и объём данных там мизерные, и можно сэкономить пятнашку в месяц на кофе.

Статус: нужно мигрировать базу данных и оставить проект в "музее", но делать всё это лень. А просто прибить жалко.


Мне также постоянно приходят в голову идеи разных проектов, которые я всегда записываю. Часть из них хочется поисследовать, но пока не знаю, как сложится работа в стартапе - и сколько свободного времени у меня будет оставаться.
Интересные посты с декабря по конец мая

Привет всем новым подписчикам! Для вашего удобства публикую дайджест интересных постов с декабря по конец мая. Прошлый дайджест с начала ведения канала по конец 2020-го можно найти здесь.

1. Важнее всего люди
2. Фейсбук сломался - и это ожидаемо
3. Конспект стрима "Попасть в FAANG недостаточно"
4. Кому на удалёнке жить тяжело
5. Занудные вопросы
6. Прототип Калькулятора стоимости жизни в табличке
7. Про первый веб-прототип Калькулятора, сделанный за неделю
8. Чем круты крутые программисты
9. Год в Фейсбуке 👻
10. Год в Фейсбуке - продолжение
11. Калькулятор стоимости жизни - вести с полей
12. Четыре модальности написания кода - часть первая
13. Четыре модальности написания кода - часть вторая
14. Субботние ссылки
15. Любопытные модули из Калькулятора стоимости жизни
16. 20 лет продакт-менеджмента за 25 минут - конспект
17. Принятие решений в жизни и на работе
18. Зачем сидеть в найме
19. Ребрендинг канала: G R O M O V Приключения Громова
20. Откуда брать информацию про предпринимательство
21. Как быть лучше подавляющего большинства разработчиков
22. Длинный гайд про блоггинг (есть ещё версия получше на Хабре)
23. Тысяча преданных фанатов
24. Вот и меня настигла прокрастинация
25. Поможет ли профессиональный блог найти работу?
26. Из Фейсбука в стартап
27. Какими должны быть условия работы программистов и почему?
28. Про RSU и опционы
29. Зачем компания давать тестовые задания, а нам — тратить время на них?
30. Как я авиабилеты заказывал
31. Баланс между порядком и хаосом
32. Полезные для фронтендеров алгоритмы
33. Как я прошёл собеседования в стартап
34. Апдейт по сайд-проектам: сайт и публичность
35. В чём разница между техлидом, тимлидом и архитектором?
36. Зачем устраиваться в FAANG и/или переезжать за границу
37. Апдейт по сайд-проектам: стартапы в зародыше

Поделитесь постом с друзьями, если какие-то мысли кажутся вам интересными.
Самая большая проблема служб поддержки

Ничего не понимаю в организации работы поддержки (но в какой-то момент придётся разобраться), но всё же поделюсь своими размышленями и наблюдениями за работой поддержки - как изнутри, из Фейсбука или Яндекса, так и снаружи, как клиента разных компаний и пользователя разных продуктов.

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

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

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

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

При этом сами разработчики (не везде, но много где) часто не заинтересованы в исправлении багов. Даже не потому, что они такие ленивые жопы, а потому что часто приоритеты команды другие. В Фейсбуке это impact, а от исправления багов, особенно редких и сложновоспроизводимых, импакта ноль. Зато пользователям - гемор и игнор.

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

У нас багов в бэклоге столько, что их и десять землекопов будут разгребать месяц. А за это время новых насыплется.

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

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

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

А вы бы как решили проблемы служб поддержки?
На этой неделе веду твитер @itunderhood. В первый и второй день говорили про деньги в айтишке и самореализацию, а сегодня про английский язык. В канале я эту тему пока не поднимал, хотя считаю, что знание английского языка, равно как и софт-скиллы, фундаментально важны для карьеры любого айтишника.
Сделать из кучки скриптов нормальный локальный ETL

Мой Калькулятор стоимости жизни использует данные с Numbeo. Сейчас процесс выгрузки данных крайне примитивный.

- есть несколько скриптов, которые с помощью scrapy парсят сайт и складывают данные в промежуточные текстовые файлы
- ещё пара скриптов берут эти текстовые файлы, как-то обрабатывают и группируют данные и генерят JSON-файлы, которые используются в приложении
- bash-скрипт, который объединяет первые 2 шага

Всё это я запускаю локально (это намеренное решение, чтоб не городить CI/CD инфраструктуру). Деплоится всё отдельным ansible-плейбуком, чтобы разложить JSON в S3-подобное хранилище и обновить версию/URL в джаваскрипте вместе с релизом самого JS. Это тоже осознанное решение, потому что так деплоится мой сайт, а калькулятор - его часть.

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

Я вижу следующую итерацию этой системы как простейший ETL-пайплайн, который я также буду запускать локально.

- Extract: один питонячий скрипт, который инициализирует scrapy и сгружает всё в SQLite
- Transform: набор классов или функций, запускаемых в определённом порядке, чтобы применить все нужные обработки и создать агрегированные таблицы и всякие вьюхи
- Load: взять все получившиеся таблички и нагенерировать из них JSON-файлов

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

Поделитесь опытом в комментариях.
Способы переехать за границу

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

Многие программисты мигрируют: сначала из провинции в Москву/Питер, а потом и за рубеж. Это классно, что такие возможности сейчас есть, хотя и работа на удалёнке из родного города с низкой стоимостью жизни - классный вариант.

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

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

Это самый распространённый путь переезда, но далеко не самый удобный. Вы обычно оказываетесь зависимы от работодателя - и должны получить новую визу, если хотите сменить работу. У вас будут очень ограниченные возможности: например, в UK нельзя открыть свою компанию и заниматься другой работой больше 20 часов в неделю. А работой не по специальности (официально) и вовсе нельзя.

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

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

При этом в UK, например, стартап-виза вроде бы не конвертируется в ПМЖ так же легко, как и рабочая, и даётся всего на 2 года, после которых можно либо перейти на визу "состоявшегося" предпринимателя, либо просто уехать. В Эстонии получше с этим, а Португалия, к примеру, требует от компании годовой оборот около €350k спустя несколько лет.

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

Но самый крутой известный мне вариант - это переезд по визе таланта. В США это виза O-1, а в UK - Global Talent. Про другие страны не знаю. Вне айти их выдают ребятам с нобелевскими премиями и всяким знаменитым артистам, но в айтишке своя жизнь - и получить такую визу может практически любой опытный разработчик, который продемонстрирует свои достижения.

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

Виза таланта не привязывает вас к работодателю, а значит позволяет легко менять работу и быть в менее зависимом от причуд компании положении (особенно в США, где потеря H1B может быть чревата кучей проблем). Как правило, через неё можно быстрее получить ПМЖ и потом гражданство. Вы сможете открыть свою компанию и заниматься плюс-минус чем угодно, что связано с вашей специальностью.

Есть и другие, менее распространённые варианты, например, трансфер в США по визе L-1 (такое часто делают сотрудники европейских офисов гугла и фейсбука, которые хотели в Штаты, но оказались в Европе), жизнь по digital nomad визе или визе фрилансера (такое есть в Испании, в Берлине и, кажется, много где ещё) или даже жизнь по студенческой визе + удалённая/нелегальная работа.

Про эти варианты я знаю ещё меньше, но просто имейте в виду, что они существуют.
Личная и финансовая свобода

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

Андрей Соловьёв, бывший учёный, которого упоминали в комментариях к посту про способы переезда за границу (как пример получения гринкарты США), писал в 2012-м году:

"Что есть личная свобода: делать то, что хочется. Не иметь начальства, дедлайнов и фиксированного рабочего дня. Не думать о визах, призывах в армии и прочих бюрократических заморочках. Если я захочу пойти на 6 месяцев по Аппалачиан трейлу, то не должен ни у кого отпрашиваться. Вот это личная свобода. Что такое финансовая свобода, надеюсь, всем понятно."

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

Финансовая свобода - это когда мне не нужно жертвовать личной свободой ради денег.

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

Другое дело твитер. Я на той неделе вёл относительно популярный коллективный аккаунт @itunderhood. Запланировал 6 дней контента и 1 день свободного общения. В итоге на 4-й день я понял, что фигачить каждый день сложно и решил сделать субботу и воскресенье выходными.

Хоть я и написал большую часть контента заранее, у меня не было инструментов отложенной публикации (говорят, надо пробовать Buffer?) плюс мне хотелось вовлекаться в обсуждения. Иначе зачем вообще писать в твитер? Поэтому я проверял уведомления как ненормальный на протяжении первых 4 дней.

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

Судя по моим черновикам, я написал не меньше 60 тысяч символов и 10 тысяч слов - пятую часть неплохой книжки. Мои посты собрали около 1,8 миллионов просмотров, а приложенные ссылки - почти 6 тысяч кликов. И в телеграм пришло больше 800 новых подписчиков за это время - всем привет!

В общем, это пока моё самое публичное мероприятие (для сравнения, посты в канале собрали 60 тысяч просмотров за прошлый год, а все вместе статьи на VC и Habr - около 100-150 тысяч).

Получился интересный опыт. Мой канал хорошо подрос, а я поупражнялся в ведении твитера и немного познакомился с людьми. Наверное я взял высоковатый темп, но всё-таки вести твитер намного сложнее, чем телегу. Да и формат тоже странный: мои сообщения кучу раз выдёргивали из контекста (треда), да и делать слишком длинные треды тоже как будто бы не очень удобно.

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

Кстати, вам было бы удобно/интересно прочитать в канале конспекты и выдержки интересных тредов?

Я писал про деньги и самореализацию в IT, английский язык, собеседования и, в последний день, депрессию и профессиональное выгорание.
Как нестандартная архитектура сайта помогла решить проблемы с технологиями, командой и затянутым проектом редизайна

Так будет называться мой доклад на TechLead Conf в Москве, 1 июля. Расскажу историю своей команды в Toptal, куда я пришёл разработчиком, а спустя пару месяцев стал тимлидом и унаследовал кучу проблем:

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

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

Как ни странно, их удалось решить через моё изобретение - движок рендеринга, подобный Gatsby/Next, но работающий как stateless HTTP-сервис. Даём на вход название страницы и данные, получаем в ответ строчку HTML.

Это был самый "весёлый" рабочий год на моей памяти (не считая переезда в Лондон): всё это нужно было осознать и придумать, согласовать и сделать, нанять людей, уложиться в новые сроки с редизайном и не просрать накопленный SEO-капитал прошлой версии сайта.

Идёте на TechLead Conf? Заходите послушать.
Онбординг-чеклист для разработчиков в небольших продуктовых компаниях

Я недавно начал работать в стартапе Hook и по этому поводу написал для себя небольшой чеклист для онбординга. Делюсь им с вами, может быть и вам когда-то пригодится.

Моя цель на первые месяц-два: разобраться в происходящем в компании и продукте, понять свою роль и ожидания коллег, научиться решать задачи end-to-end, от понимания "зачем" до работающего кода в продакшене.

1. Продукт и фичи, пользователи, рынок. Какие задачи он решает и для кого? Кто основные пользователи и клиенты, откуда деньги и где точки роста. Какие важные фичи есть, а каких не хватает. На какие метрики смотрим, чтобы отслеживать движение в нужном направлении, и где. Кто наши конкуренты, чем мы лучше и/или отличаемся в принципе. Будет ли влиять код, который я пишу, непосредственно на продукт.

2. Релизы, эксперименты, инфраструктура. Как код попадает в продакшен? В каком облаке всё работает, как конфигурируется инфраструктура и кто за это отвечает. Что за CI/CD-система используется, где работают тесты и насколько они надёжны. Как выкатить и откатить релиз, могу ли я сделать это сам или нужен кто-то ещё. Используются ли эксперименты (A/B-тесты), feature flags. На какие графики смотреть до, во время и после релиза и что делать в случае проблем.

3. Архитектура приложения, код, технологии. Как устроено приложение, с которым я буду работать? Что за архитектура, какие компоненты ключевые. Монолит, микросервисы или гибрид. Внешние зависимости, источники данных и БД, чужие API. Как это всё конфигурируется, запускается локально и в продакшене. Какие технологии и библиотеки используются, как структурирован код. Нужно ли мне изучить что-то новое. Как дебажить, какие инструменты использовать для разработки. Каков процесс разработки - github flow, trunk-based, пул-реквесты.

4. Планы, проекты, ритуалы. Как работает команда, в которой я оказался? Как происходит планирование, каковы текущие планы и цели, какие задачи входят в critical path проектов. Есть ли OKR или KPI в каком-то виде, кто принимает стратегические решения. Насколько мы укладываемся в текущие планы, есть ли жёсткие дедлайны, связанные с маркетингом или ожиданиями клиентов. Какие регулярные встречи есть, как общается команда - синхронно, асинхронно, в чатах или email, в курилке.

5. Люди, ожидания, динамика в команде. Как зовут людей, чем они занимаются в компании и вне неё? С кем мне предстоит работать больше всего. Подсмотреть полезные фишки, инструменты и техники у каждого. Каковы ожидания моего непосредственного руководства и топов. Какая динамика в команде, к кому прислушиваются и замолкают когда он(а) говорит, с кем можно поржать. Кто и какие решения принимает. У кого какие сильные стороны, в каком темпе они работают, кому и какие вопросы задавать.

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

Свои находки я стараюсь записывать (и зарисовывать) в один бумажный блокнот, чтобы лучше запоминать и иметь возможность вернуться к этим записям. Один блокнот, а не ворох бумажек или миллион заметок на компе, потому что так проще найти то, что нужно.

А как вы онбордитесь?
Мотивация и вовлечённость в работу

Я в последнее время очень много сталкиваюсь с вопросами мотивации, а также много изучаю себя, в том числе через психотерапию и всякие письменные практики. Сталкиваюсь обычно неприятно: например, недавно обнаружил, что меня не прёт работать в "крутой" компании и, вероятно, никогда не пёрло. А вот рефлексия иногда приводит к интересным результатам.

Решил я проанализировать, насколько вовлечённым я был (если верить воспоминаниям) в определённые периоды своей рабочей жизни. Их набралось больше 10 штук за последнее десятилетие. Выписал каждое место работы и проект, вспомнил, насколько меня пёрло от работы в это время, попытался оценить вовлечённость и её продолжительность.

В некоторых случаях (работа в Швеции, потом в Фейсбуке) мой интерес и энтузиазм к работе колебался около нуля. В Фейсбуке, к примеру, мне поначалу было достаточно интересно - но с введением карантина и началом сложностей работы в команде я практически полностью потерял желание работать. Надо сказать, что интерес изначально был весьма скромный - я выбрал Фейсбук, чтобы переехать, из соображений надёжности компании. Надеялся, что стерпится-слюбится.

С работой за деньги вообще всё сложно: я сильно вовлекался в основном под давлением обстоятельств, в частности, когда огонь под жопой полыхает. Так было в Топтале (демотивированная команда, затянутый проект, кривые технологии - и моя ответственность как тимлида за это всё), так же было в Яндексе. Хотя в Яндексе ещё и было давление со стороны коллег и офисной среды, в хорошем смысле. То есть меня любили и ценили, от меня зависели другие люди, и это вдохновляло приходить на работу.

В таких случаях вовлечённость и мотивация были временными и явно индуцированными внешними обстоятельствами. То есть как только я оказывался вне офиса Яндекса и задумывался о будущем, мне почти сразу становилось тоскливо и хотелось заняться чем-то другим. В Топтале, как только основные проблемы были решены (нанята команда, придуман новый движок рендеринга, правильно спланирован проект), мне тоже стало неинтересно.

Наибольшая вовлечённость и драйв, когда я фигачил как ненормальный, были в случае с моими собственными задумками. Правда и продолжалось это, как правило, недолго - несколько месяцев максимум. Потом приходил какой-то откат, опускались руки (или кончались деньги) и, вероятно, нужно было заново зажечь себя. Думаю, я мог бы жить такими циклами: фигачинг, рефлексия, фигачинг, рефлексия.

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

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

И это при том, что я более-менее научился дисциплине и постоянству: регулярно хожу в спортзал, постоянно занимался математикой в 2018-2019, чтобы поступить в очередные ВУЗы, фигачил литкод и алгоритмы несколько месяцев, чтобы пройти собеседования в Фейсбук и TradeDesk. Блог веду уже больше года.

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

Хорошие потому, что, выходит, не такой уж большой у меня выбор. Допуская, что эти ощущения и чувства подлинные (а чего в них сомневаться вообще? они вполне постоянны и реальны, как минимум, для меня), я просто не хочу заниматься одними вещами, а другими хочу. Так просто выходит.

А у вас как?
Почему автора Homebrew не взяли в Google?

Известную историю про Max Howell, автора Homebrew, которого не взяли в гугл, часто приводят в качестве обоснования мнению "разработчиков собеседуют неправильно, не надо заставлять писать код на доске, ведь мы так в жизни не делаем". Смотрите, мол, даже такого крутана не взяли, значит всё и правда плохо (и мы правы). Дайте мешок денег и не задавайте вопросов.

Если разобраться и почитать его ответ, всё становится более-менее понятно.

Чувак написал Homebrew, как он сам выражается, дерьмово ("it's shit frankly"). Его пакетный менеджер стал популярным, но не потому, что он достиг инженерного совершенства, а потому что написал нормальную программу для нормальных пользователей, которые хотят решить задачу и получить внятные сообщения об ошибках и рекомендации по их устранению, если что-то пошло не так. Да, программисты - тоже пользователи.

Ключевой аргумент Макса: "what the fuck does comp-sci have to do with modern app development?". И ответ на это: ничего, особенно когда речь идёт про потребительский, в сущности несложный софт, а не замороченные алгоритмы нахождения консенсуса в распределённых системах и подобную эквилибристику.

То есть Макс, по моему мнению, в равной степени предприниматель и разработчик. Он не только написал какую-то поделку (как много моих или ваших проектов стали настолько популярными?), но ещё и нашёл проблему многих людей (как ставить софт на мак без GUI), достойную решения и, вероятно, интересную ему. Решил её правильно - так, как ожидали пользователи, потом каким-то образом раскрутил своё решение.

Я не знаю истории Homebrew и очень много додумываю. Но из его поста на Quora следует примерно это. А ещё после написания предыдущего абзаца я открыл его сайт, а там первой строчкой фраза "I'm an entrepreneur". Сходится.

Полезные ли это навыки? Безусловно. Крутой ли он разработчик? Да офигенный просто. Подходит ли он гуглу? Вот тут возникают вопросы.

Мой весьма ограниченный опыт работы в Фейсбуке подсказывает, что требования техногигантов в корне отличаются от, например, мелких продуктовых компаний и стартапов. В маленькой компании надо делать быстро и с заботой о пользователе, а на чистоту и производительность кода часто наплевать, а в корпорации - быть идеальным винтиком, который ещё и без проблем меняет технологии и проекты.

Смог бы так Макс? Не знаю, может быть. Но я так не могу и, главное, не хочу. Вероятно, и он испытывает что-то подобное. Стоило ли гуглу делать исключение для него? Не уверен. Их найм настроен определённым образом. С чего вдруг делать скидки авторам популярных библиотек?

Значит ли это, что всем нужны собеседования, как у гугла или фейсбука? Да нет конечно! Но из этого не следует и вывода "писать код на собеседовании не надо", который притягивают за уши к истории с Максом.

Стоит ли всем разработчикам стремиться в самые дорогие компании мира? Нет.

Ну а те, кто по-настоящему стремится попасть в FAANG, найдут в себе силы и время (и, безусловно, мозги), чтобы научиться вращать деревья на собеседованиях.
Недавно я писал про RSU, упомянув, что "обычно их либо продают сразу, либо оставляют в надежде на рост".

Моя привычка продавать сразу появилась в 2014-2015 году, когда курс акций Яндекса сначала сильно упал, а потом прыгал вверх-вниз вместе с курсом доллара.

Было непонятно, как долго это продлится. Я обычно продавал их по цене, близкой к максимальной за месяц-два, либо когда замечал сильное падение. Наверное, средняя цена продажи была около $18. Сейчас, глядя на график тех лет, я понимаю, что особой надежды на рост не было - да и неоткуда ей было взяться.

Однако спустя несколько лет акции стоят почти в 4 раза дороже.

С Фейсбуком подобная история: курс сильно упал в начале 20-го года, когда я вышел на работу. По иронии судьбы, грант расчитывали по цене января, которая была почти на 30% выше цены февраля.

Но сейчас, спустя полтора года, цена акций выросла уже вполовину.

Наверное, пока big tech-пузырь продолжает раздуваться, RSU стоит всё-таки держать. Это, конечно, не investment advice 😅
Как менялось моё отношение к программированию

Первый код, который работал где-то за пределами моего компьютера, я написал году в 2004-м. Это был мой сайт. Там была не только кучка HTML-страничек, но ещё и гостевая книга на перле, которая через CGI подключалась к Apache. Не могу найти тот код, но там точно был вагон конкатенаций строчек вместо шаблонов и текстовый файлик по соседству со скриптом вместо БД. Чудо какое-то! Мне было 15 лет.

До этого я лет пять программировал всякую муру на бейсике, С и С++. Причём Си был моим любимым языком из-за своей простоты. Ничего серьёзного я на нём не написал (только кроссплатформенный Qt-проект на С++ много позже), но я бы, честно говоря, и сейчас писал бы какую-нибудь дрянь на чистом Си. Обожаю простые как сапог инструменты.

Поначалу мне нравилось ковыряться в низкоуровневых кишках, памяти руками выделить, пройтись дизассемблером по COM-файлу. Я ничего толком не понимал, но как-то даже заказал полный бесплатный мануал от Intel по x86 архитектуре. Мне пришло тогда 6 книжек, весом во столько же килограмм, прямо из США. Я обалдел - Кремниевая долина вторглась прямо в жизнь подростка из провинции.

Вообще я даже и не думал, что стану программистом - мне больше нравились железки, я читал "Библию Хакера", пытался установить разные линупсы (и юнипсы) на древние компы, писал какие-то скрипты для mIRC и "хакал" доисторические веб-чаты. Ещё мне как-то подарили шестизначную аську - признак крутости в те времена.

Спустя несколько лет я попал на первую работу, веб-разработчиком, и какое-то время не мог въехать во все эти PHP, серверы, БД и прочую клиент-серверную хрень. Разобрался с джаваскриптом, написав тетрис (этот код жив и по сей день), и плевался на его прототипное "неправильное" наследование. Мне по-прежнему хотелось делать что-то крутое - программировать микроконтроллеры или писать на С++.

Но тогда у меня появились деньги, и я пошёл за ними - сначал во фриланс, а потом и в крупные компании в Москве. Отношение с любопытства и интереса сменилось на более прагматичное.

Я долго трепыхался между программированием чего-то, что мне было не очень интересно (хотя интерес, как аппетит, приходил во время еды), и менеджментом. Мне захотелось управлять проектами, проектировать системы, а после и тимлидить. И вот именно тимлидство зашло намного лучше промышленного программирования. И большая часть моих профессиональных успехов случилась именно в качестве тимлида.

В какой-то момент, осознав себя в некоем профессиональном тупике, я решил, что стоит стать "лучшим в мире программистом". Ну то есть выучить весь computer science, сделать какие-то крутые штуки. Это хорошая идея, но, как оказалось, всё-таки не моя. Спустя пару лет я забил.

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

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

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

В этом смысле я точно не профессиональный инженер-программист, а скорее стартапер-кулибин. Написать очередной велосипед или MVP на коленке - это моё. Ковыряться в кишках проприетарных библиотек какого-нибудь Фейсбука - не моё. Пилить годами продуктовые фичи тоже не очень интересно, хотя и может быть любопытно поначалу.

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

Недавно обсуждали с одним хорошим знакомым выбор между "переехать в Долину, чтобы (с высокой вероятностью) заработать N миллионов баксов за N лет" и "плюнуть на карьеру и делать свои проекты, чтобы какой-то их них (с намного меньшей вероятностью) вырос в прибыльный бизнес".

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

Я давно задаюсь вопросами, где на одной чаше весов как будто бы понятное решение с практически гарантированным результатом (рациональное), а на другой - хотелки, риск и приключения (это скорее интуитивное или эмоциональное).

И долгое время мой подход был неизменным, очень программистским: смоделировать цепочку событий, умозрительно расставить риски-вероятности, а потом выбрать подход с наибольшей результативностью (условной вероятностью) как единственно верный. Это хороший инструмент, который часто достаточно эффективно работает.

Но у него есть одна неприятная особенность: он вызывает привыкание.

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

Мне куда больше нравится оставлять последнее слово за собой.
Переворачиваю страницу

Мы с одним из моих лучших друзей взялись за новый проект: хотим сделать классно в мире презентаций. Как именно классно и для я кого буду рассказывать по ходу дела - видимо, мой блог имеет все шансы превратиться в building in public, популярный сейчас формат. Может и вам понравится.

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

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

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

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

Ну а потом, когда всё состоится и более-менее сойдётся, будем пилить первый прототип.
Про исследование рынка

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

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

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

Статистика и отчётность (например, майкрософта или гугла) чуть более полезны. Так я узнал про количество пользователей (42m+ у Office 365 и около 6m у Workspace), выручку майкрософта и какие-то числа гугла по этим направлениям - хотя и без разбивки по продуктам.

Ещё где-то наткнулся, что доля PowerPoint на рынке презентаций оценивается (кем-то, фиг знает, не спрашивайте) в 95%. Неудивительно, учитывая распространённость Windows и то, что Presenter (так он раньше назывался) существует с 1987-го. И это, вероятно, объясняет немалое количество стартапов с серьёзными инвестициями в этой области. Наверное хотят урвать кусок рынка.

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

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

Главное, что я понял на текущем этапе: не получится выбрать "правильное" направление, не начав делать продукт.

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