Олег Громов печатает...
1.76K subscribers
65 photos
5 videos
144 links
о программировании, стартапах, UK и о жизни в целом
Download Telegram
Привет!

У клавиатуры - Громов, и вы читаете первый пост на моём канале про программирование, карьеру и бизнес.

В детстве я мечтал стать не разработчиком-профессионалом, а хакером. Мне нравилось кодить, лезть в низкоуровневые дебри, быть умнее всех, конструировать какие-то штуки - но я и представить не мог, что такое software engineering и что я буду работать программистом когда вырасту.

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

Потом уволиться от тоски и поехать на полгода в США студентом. Там выучить английский до адекватного уровня, изъездить Калифорнию, пожить и поработать в Швеции, вернуться в Россию и почти два года удалённо руководить разработчиками в американской компании, а сейчас - переехать в Лондон вместе с семьей, чтобы работать в Фейсбуке.

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

Подписывайтесь, и погнали!
😜 Copy-paste без форматирования на маке

Иногда скопированный текст (код, например) вставляется в текстовый редактор или даже чат вместе с форматированием. Раздражает?

Решение: Cmd + Shift + V
👍1
Почему программистом быть хорошо?

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

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

Людям более экстравертного склада может казаться, что это самая унылая работа на свете. Сидишь целый день взаперти, в экран пялишь, бока растишь. Что хорошего, кроме плохой осанки и геморроя к 40 годам? А заработать нормально и по-другому можно.

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

Это интересно
Всё началось с любопытства, причём практического толка. Интересно было переустановить этот несчастный Windows, написать "Hello World" на бейсике, простенькую игру, расковырять исходники Quake 3, потом сделать своё приложение, а там и HTML-парсер, чтобы разобраться с конечными автоматами.

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

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

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

Оклад, бонусы, RSU ("акции", попросту говоря), страховка жизни и здоровья, надбавки на питание, на ребёнка, проезд и связь, laundry allowance (не спрашивайте). Всё, что должно привлечь и удержать лучшие умы, не сильно опустошая карманы (богатого) работодателя.

Перефразируя Нассим Талеба, проще всего привыкнуть к героину и постоянной, особенно высокой зарплате.

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

За границу можно и уехать - на Бали или в Таиланд греться в джунглях и работать удалённо, или в США или Англию покорять корпоративные коридоры и трястись над своим иммиграционным статусом.

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

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

Веб-студии из провинции такое и не снилось, конечно - бизнес-модель не та, и денег нет. Как говорит Фёдор Овчинников, малый бизнес - это велосипед. Крутишь педали - едешь, не крутишь - падаешь.


Что касается моей карьеры, я думаю, благополучные рыночные условия и безумный рост интернета повлияли на неё в куда большей степени, чем что-либо ещё - может быть даже сильнее, чем собственные усилия. Вроде как "a rising tide lifts all boats".

- А вы хотели бы быть программистом?
- Или, если вы уже программист, что вы любите и чему благодарны в своей работе?

У канала есть чат - давите кнопку Обсудить в правом нижнем углу 👇
Жалоба на StackOverflow: на новом макбуке kernel_task иногда 500% процессорного времени сжирает - компом пользоваться невозможно от пары минут до нескольких часов. Перезагрузка не помогает. В коментах пишут, что по неделе убиваются, причину найти не могут: на работе греется и тупит, а дома работает. Чудеса.

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

Такая вот энтропия 🤷‍♂️
Олег Громов печатает... pinned «Привет! У клавиатуры - Громов, и вы читаете первый пост на моём канале про программирование, карьеру и бизнес. В детстве я мечтал стать не разработчиком-профессионалом, а хакером. Мне нравилось кодить, лезть в низкоуровневые дебри, быть умнее всех, конструировать…»
Случай на удалёнке

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

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

Мы с Кэмероном не знакомы были толком, решение о найме вроде не я принимал, хоть и собеседовал его разок. Созвонились познакомиться. Кэмерон мне говорит:
- Я вот тут вот ипотеку брать собрался, очень рад, что удалёнку в американской компании нашёл. Деньги будут!
- Makes sense, чувак. Добро пожаловать!

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

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

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

Они разок поболтали, мы разок поболтали - ну и за работу. Люди все взрослые, следить никто не собирается.

Проходит неделя. Кэмерон на встрече отчитывается, что не готово. Тут не вышло, там зависимость какая-то странная - разбирался. Бывает. Сэмюэль, скрам-мастер наш, фасилитирует, командный дух поддерживает:
- Давай, мужик, если что - обращайся, мы тебе поможем!

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

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

Дальше совсем мистика начинается из разряда "домашку съела собака". У чувака ломается ноут. Код, думаю, не надо говорить где остался? Чтоб вхолостую не сидеть, пока компьютер "ремонтируют", обсуждаем на пальцах, как сделать заново. Деятель этот закопался где-то смешно, подбирал CSS-миксины из существующих, чтоб пункт меню правильно оформить.

Блин.

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

Ну драма прям, трагедия. Бывает, говорю, давай, собирайся в кучу. Have been in your shoes exactly. Мы тут вдолгую играем, нам выгонять через три недели смысла нет - хоть контракт и позволяет тем же днём уволить.

Сам в то же время менеджеру пишу, эйчара пингую. Чувствую, не поменяется ничего с ним, придётся увольнять.

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

Вот что это было?

Я вроде не дурак сельский, чтоб меня обдурить легко. Были дела поважнее, не уследил - да, но ведь и врал он складно. А может и не врал вовсе? Проблемы у всех бывают, прокрастинация, в личной жизни швах - плавали, знаем. Но и задача ж детсадовская, такую наверное на курсах "Специалист" по HTML в 1999 году давали на втором занятии.

И менеджер мой тоже не выкупил, что это было. Мистика. А вы как думаете?
Из офиса — в океан

К 2008 году Брайан Тротман успел поработать в Microsoft менеджером, стать совладельцем софтверной компании, которая почти обанкротилась из-за кризиса, и перегореть. Ему не хотелось провести следующие 20-30 лет делая то же самое каждый день. Он продал дом, добавил накопления и купил 16-метровую парусную яхту. Прошлый хозяин назвал её в честь сотворённого Посейдоном острова Делос, и Брайан решил оставить это имя.

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

Семья прошла на Делос больше 80,000 морских миль, побывав во всех океанах. Перемещения отнимают у них не больше 10% времени, и большую его часть они проводят на приколе вдали от грязных портовых зон. Раз в несколько месяцев они возвращаются на сушу, чтобы пополнить запасы.

Делос впечатляюще автономна. Её солнечные панели вырабатывают 1.4 КВт в хорошую погоду, на ней есть ветрогенераторы, 1000-литровый резервуар для пресной воды и собственный опреснитель. Яхта подключена к спутниковому интернету. В основном Брайан ходит под парусом, но на случай непогоды на судне есть дизельный двигатель и 600-литровый топливный бак, которого хватает на 3-4 месяца автономного плаванья.

Месяц жизни на яхте обходится семье приблизительно в $2400, включая расходы на визы и страховки. Деньги они получают от подписчиков на Патреоне, что-то приносит реклама и партнёрские ссылки на Ютубе. Ещё около $700 уходит каждый месяц на обслуживание яхты. Как говорит Брайан, ему пришлось стать электриком, сантехником и дизелистом в одном лице. Если бы он не занимался яхтой сам, обслуживание обходилось бы в несколько раз дороже, а путешествия были бы намного опаснее.

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

Полгода назад у Брайана и Карин родилась дочь Сьерра. Они готовят яхту к холодной погоде и собираются посетить Гренландию - и совершенно точно не планируют возвращаться к обычной жизни.

Как вам такой карьерный вираж?

https://www.youtube.com/watch?v=lk83N2u1ZmY
Почему быть программистом — отстой

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

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

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

Тем не менее, жизнь обыкновенного разработчика выглядит иначе.

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

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

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

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

Отношения с миром, другими и собой тоже начинают восприниматься как запрограммированный, но недостаточно отточенный user experience. Вместо дружбы у нас социальные эксперименты, в жизни правит проклятый get things done и увеличение продуктивности. Зачем учиться готовить, если на работе кормят бесплатно и быстро?

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

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

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

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

Как думаете, какие?
Сложная штука этот софт

Даже в 13-й версии своей возлюбленной iOS эппл всё никак не может починить простейшие штуки. Удаляю несколько тысяч фотографий: захожу в "корзину", тыкаю delete all. Думаете, появляется индикатор с процентиками? Кнопка становится неактивной, фотки начинают пропадать постепенно? Ну может хоть виснет всё намертво?

А вот и нет. Внешне не происходит вообще ничего, но телефон оказывается в каком-то промежуточном состоянии. Можно выйти назад, открыть "корзину", нажать на этот delete all, опять разрешить удалить несколько тысяч фотографий. Минут через 5 перестанут отрисовываться превьюшки. Минут через 10 - все фотографии внезапно куда-то пропадут.

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

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

#вслух
Отступы Фибоначчи

На просторах интернета предлагают использовать числа Фибоначчи (для экстремистов - экспоненциальную функцию) для отступов в коде. Сразу и слишком большая вложенность, и высокая cyclomatic complexity очевидны становятся. Кайф! Но в Фейсбуке такое вкручивать страшно 🤣