✙rozho)))k✙🇺🇦
3.47K subscribers
295 photos
32 videos
1 file
660 links
Про автора: www.rozhkov.me/about
Про канал: www.rozhkov.me/about-full-of-hatred

Канал про все що не ІТ: @daily_rozhok
дірект: @xrozhokx
блог: rozhkov.me
Download Telegram
Новости и политика 2

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

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

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

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

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

А значит даже думать об этом — нет никакого смысла. Вот если бы у меня были деньги на найм небольшой ЧВК — тогда был бы совсем другой разговор. Я бы с удовольствием стоял на трибунах/баррикадах и зажигал сердца наивных революционеров, преследуя собственные цели.

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

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

Время от времени на ДОУ разные люди постят треды в стиле "Где брать время на самообразование", вопрошая у сообщества как им справиться с работой, домашними делами, семьей/детьми и при этом еще и как-то учиться.

У меня нет детей, поэтому наверное я не могу ничего посоветовать с точки зрения родителя, но у меня была похожая обстановка когда я начал работать на 4-ом курсе университета. Мне повезло учиться на самой жесткой кафедре нашего факультета (ФИВТ КПИ), где принцип "вначале ты работаешь на зачетку, а потом зачетка — на тебя" не работал совершенно, а сложность обучения увеличивалась в арифметической прогрессии с каждым курсом (проще стало только на 6-ом, где уже было 3.5 пары в неделю). На работе нужно было отрабатывать минимум 20 часов в неделю, в универе делать и сдавать десятки довольно сложных лаб (я уже упоминал что ничего сложнее лаб в жизни я не делал — https://www.rozhkov.me/post/work-tasks-complexity/), кроме того у меня была девушка (очевидно, требующая внимания) а еще я играл на гитаре в местной панк рок группе (на репетиции надо было ездить на край города и еще и успевать дома учить/сочинять).

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

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

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

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

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

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

И еще кучи всякого организационного хлама.
И швец и жнец и на дуде игрец.

Безусловно, при таком способе ведения дел есть множество минусов: нельзя скинуть на бомжа скучную работу, часто приходится заниматься делами не по своей специализации (например, верстать), повышается риск ошибок, как фундаментальных (просчитались с архитектурой), так и локальных (написали большой метод), не у кого учиться, работа напрямую с заказчиком иногда утомляет. Bus factor = 1. Иногда бывает сложно отключиться от связи. Невозможно масштабировать труд, рано или поздно упираешься или в потолок по рейту, или в тупо отсутствие времени. Иногда нужно жестко овертаймить потому что дедлайн.

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

К сожалению, в своей карьере мне ни разу не приходилось плотно работать с что называется brilliant/10x engineers. Даже на самой первой работе я быстро выяснил что джаву шарю лучше своего тимлида и ментора (они были больше по SQL). Самые жесткие типы, с которыми я имел дело — это ребята из system performance отдела, которые нереально круто шарили всякие сборщики мусора и оракловые индексы. Приходится учиться самому и из интернетов, поэтому этот пункт я считаю сильно переоцененным.

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

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

В итоге, как в случае и со свободным рабочим графиком (https://www.rozhkov.me/post/free-work-hours) главной ценностью (несмотря на множество недостатков) всего этого для меня является свобода в действиях и независимость в решениях.
Старые тикеты 1

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

Разработчик, или тестировщик, или кто угодно, думает: "так, вот это бы не забыть, как будет свободное время тогда сделаем" и заводит тикет. Возможно, даже пишет туда какие-то детали. Оптимист может даже создать задачу типа "переехать на специализированное решение для поиска" или что-то вроде "система не масштабируется на 1 000 000 пользователей" (пока у нас и десяти нет). Тестировщик может найти хитрый кейс "не нажимается кнопка посмотреть детали профиля в IE7 под Windows XP в режиме совместимости".

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

Правда жизни заключается в том, что все эти тикеты никогда не делаются. Прошло пол-года, продукт пивотнулся, и функциональность уже не нужна. IE7 использует 0.0005% пользователей. Масштабироваться не нужно, потому что взрывного роста не случилось. AWS выпустил новый продукт и ваша жалкая кучка скриптов уже не нуждается в допиле и рефакторинге (тру стори).

Один из продуктов которые я разрабатываю и поддерживаю — это виджет который встраивается на сайты партнеров. Технически это просто кусок js кода, который вставляешь на страницу и все работает. Первая его версия была написана в 2017 на es5 и использовала jQuery. Примерно в то же время один из разработчиков завел тикет "переписать на es2017, использовать полифиллы, отказаться от jQuery" и перечислил несколько библиотек которые могли бы в этом помочь. Прошло два года. Виджет работал как часы. Понадобилось добавить туда новую функциональность и я решил переписать все с нуля. Глянув в старый тикет я обнаружил, что библиотеки, которые там были упомянуты, уже давно устарели и не поддерживаются.

В итоге я просто переписал все, и старый тикет мне никак не помог. Более того, триггером для переписывания стал вовсе не очередной запланированный разбор технического долга, а свежие требования от бизнеса.
Старые тикеты 2

Однако все эти два года тикет, который сидел в беклоге среди своих, таких же грустных коллег, уже отрастивших бороды и переживших не один переход из спринта в спринт, занимал мое время и захламлял пространство. Ведь каждый раз при планировании ты пробегаешь глазами по названиям и решаешь — может быть стоит взять это в работу? Дальше смотришь что "а, ну это да, сделать конечно же нужно, но не сейчас". Если посчитать все время, потраченное на вот такую постоянную перепроверку а нужно ли это вообще, то за пару лет может насобираться довольно приличное количество времени.

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

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

Естественно, я не говорю, что не нужно разгребать технический долг. Просто нужно подбирать правильный момент и говорить "смотрите, эта функциональность уже просто так сюда не влезет, нам нужно переписать это и вот это, придется потратить больше времени". И уже под нужды конкретной задачи допиливать продукт до нужной кондиции. Оптимизацию нужно проводить строго в то время, когда необходимость начинает маячить на горизонте. А не за горизонтом, на соседнем континенте, на Луне или вообще на другой планете.

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

Старые тикеты замедляют ощущение прогресса. Человек любит когда таски заканчиваются. Все видели красивый burndown chart на картинках по аджайлу, но кто видел его вживую? Суровая реальность заключается в том, что количество тикетов со временем только увеличивается и увеличивается, на каждый закрытый баг создается десяток новых, и этот процесс не остановить.

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

Поэтому, некоторое время назад, утомившись от большого количества таких вот тикетов, я собрал волю в кулак и легким движением руки закрыл их все, после чего сделал себе установку не создавать бесполезных тикетов-улучшалок в стиле "переехать с ECS на k8s", "прикрутить мониторинг" или "переписать ядро компонента с ruby на java". Когда придет время мы об этом точно узнаем, и тогда и переедем. И перепишем.

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

Чистый, пустой беклог сделал мои волосы густыми и блестящими, так же как и чистый инбокс (https://www.rozhkov.me/post/empty-inbox/). Меньше когнитивной нагрузки от старых вещей, меньше хлама, больше фокуса на том, что действительно нужно прямо сейчас, движение в будущее а не постоянное оглядывание назад.
О резких рингтонах

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

Меня всегда возмущает, когда ко мне кто-то звонит. В современном мире почты, мессенджеров, звонок становится только крайней мерой необходимости. Подумать только — мы всегда носим возле себя устройство, которое позволяет без спросу ворваться в нашу жизнь совершенно постороннему человеку, который преследует свои цели. Вообще звонок без предварительного согласования по-дефолту должен быть разрешен только очень близким людям. Особенно бестактным я считаю звонок от коллеги без предварительного "я наберу?". Оставим в стороне телефонных спамеров, они сегодня out of scope. Так же, ничего не сделать с риэлторами, таксистами, банками и прочими категориями лиц (в моем случае, например еще и со строителями), которые держат связь строго по телефону, но, по крайней мере я примерно представляю когда они могут позвонить.

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

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

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

С телефоном теперь проблем нет, а вот домофон поменять не так просто...
Жопочасы

Есть такая известная тема — инфографика с результатми опроса среди людей разного уровня успешности (на минутку примем что успешность == доход), что, по их мнению, является важнейшим фактором успеха.
Вот примерно такая: https://www.reddit.com/r/dataisbeautiful/comments/61vf1e/the_secret_of_success_from_the_perspective_of_the/
Типа что беднота считает что богатые стали богатыми благодаря обману и свзям, средний класс — удаче и обучению, ну а сами богачи ставят в угол тяжелый труд.
Оставив в стороне сомнительные аспекты этого "исследования" (если оно имело место быть, а не просто фейк), например то, что у богачей уже есть и обучение и связи, и первоначальный капитал, и перейдем к "тяжелому труду".

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

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

Особенно четко это чувствуется на разнообразных физических активностях. Первые Х месяцев тренировок прогресс идет крайне медленно, повторяешь день за днем какие-то базовые вещи, одно и то же, каждый день, так тянутся недели, но потом — оп — и ты уже ощущаешь, что что-то начинает получаться. Но это только начало, а для того, чтобы достичть серьезного прогресса, нужно вкалывать, вкалывать, батрачить, и делать это постоянно. Жопочасы решают. Терпение и труд все перетрут.
Кривая обучения 1

В любом новом деле, за какое я берусь самостоятельно, есть несколько стадий.

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

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

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

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

А вот если бы пережал и продолжил работать, не обращая внимания на кажущуюся бессмысленность процесса, то после упорных повторений и бесплодных попыток, рано или поздно пошли бы первые результаты. В этом месте можно сказать что изучено 20% материала, которые дадут 80% результата. Оставшееся время будет посвящено совершенствованию оставшихся 80% деталей, тоже процессу очень длинному, но, по крайней мере понятному, и не такому демотивирующему.

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

Увы, нигде нет ни легкого успеха, ни легких достижений, ни легких денег. Все советы "С++ за 21 день" это самообман. Чтобы чего-то добиться надо вкалывать. Хочешь научиться играть на музыкальном инструменте? Добро пожаловать в годы монотонных разрывающих мозг и уши упражнений. Хочешь поправить здоровье, потому что по молодости забивал? Волшебных таблеток нет, изволь изменить привычный уклад жизни и постоянно посвящать время реабилитации. Реакт за 21 день с нуля наверное можно изучить. Правда пройдет еще минимум годик пока начнешь понимать что это и зачем вообще, а не бездумно копипастить примеры.

"Я знаю кунг-фу" пока что не работает в реальной жизни, и это, конечно же, очень огорчает.
Пятница. Столица веселится

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

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

К счастью, жизнь распорядилась иначе, никуда я так и не вернулся, живу в столице уже вот 15 лет, и нисколько об этом не жалею.

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

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

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

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

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

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

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

Год назад приходил к коллегам которые пилят микросервисы на джаве пополам с микрофронтендами на реакте и орал на весь офис "надо было все делать на PHP и jQuery, сэкономили бы три года!".

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

И так далее.

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

Сгорел и видишь что все делают не так? Сделай лучше, устрой микротренинг, покажи своим примером как надо 🙂 Говорить — не мешки ворочать. Или можно поступить проще и просто свалить с места, где все всё делают не так и пилить все самому.

А по поводу людей в метро — я пока что просто сдерживаюсь и воспитываю в себе индифферентность к окружающим.
Жизнь без зарплаты

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

Стабильный доход здорово разгружает мозг от излишнего беспокойства, помогает планировать траты и показывает горизонты возможностей. Например, я получаю $2k в месяц, из них можно $1k отложить, если сильно не затягивать пояс, 30 месяцев — и вот, у меня уже есть денег, например на однушку в Софиевской Борщаге. Изи!

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

У меня были случаи, когда деньги за сделанный кусок работы я получал через год после того как задача была выполнена. Были расклады когда заказчик затягивал оплату, мотивируя это тем, что ему не выплатили деньги уже его заказчики (как будто меня это волнует лол). Было дело когда из-за тонкостей бухгалтерии у заказчика мы могли получить полностью все деньги за один продукт, но не могли получить ни копейки — за другой. Еще одна неприятность, связанная с отложенным оплатами состоит в том, что когда в сумме набирается довольно много денег, 20 косарей например, то заказчик начинает юлить и просить скидос, хотя там и так адекватные цены.

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

Короче говоря, все это здорово добавляет головняка и неопределенности. Как же жить в таких условиях?

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

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

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

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

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

Тупит база потому что где-то N+1 или плохие индексы. Отваливается АРІ потому что роскомнадзор поблочил подсети амазона. Заказчик забыл оплатить хостинг и все попадало, а назад автоматически не поднялось. 3rd-party API внезапно начали пятисотить. Заказчик просит добавить поле в отчет, заказчик просит качнуть стату которую нет смысла добавлять в отчет, миллион проблем почти каждый день.

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

Любое приложение содержит бесконечное количество ошибок, и фиксить их можно столько, сколько будет существовать сервис, а если он еще и будет активно развиваться то этот процесс не остановить.

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

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

В таком режиме становится трудно сосредоточиться и работать вообще, потому что мозг думает "зачем браться за новую задачу, если щас все равно прилетит с прода и придется отвлекаться? давай лучше твитор полистаем, а?" и прокрастинирует так целый день. А под конец дня оказывается что пофикшена одна минорная бага а остальное время потрачено впустую. Печаль.

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

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

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

Обзор большой, поэтому публикуется в бложике и на доу (https://dou.ua/forums/topic/28005/)

https://www.rozhkov.me/post/tehnotable-standing-desk-review/
В эту субботу в Киеве будет интересная концеренция — "Побег из IT": https://2event.com/events/1730841, я уже вписался и купил билет.

К сожалению, узнал об ивенте слишком поздно, поэтому уже не успею зарегаться как спикер, но темы докладов и сама суть довольно интересна — что можно еще делать помимо выжигания глаз кодом?

Если надумаете идти — пинганите в личку, пообщаемся на конфе.
Промокод на -15%: rozhok
✙rozho)))k✙🇺🇦 pinned «В эту субботу в Киеве будет интересная концеренция — "Побег из IT": https://2event.com/events/1730841, я уже вписался и купил билет. К сожалению, узнал об ивенте слишком поздно, поэтому уже не успею зарегаться как спикер, но темы докладов и сама суть довольно…»
О синдроме самозванца 1

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

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

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

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

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

Если вы пойдете на любую конференцию и послушаете доклады, а потом еще и пообщаетесь со спикерами, то окажется что на сцене выступают тоже вполне себе обычные люди, с не такими уже и сложными проектами.

Молодец не тот, кто хорошо сделал, а тот, который сделал хоть как-то, но сделал и запустил.
👍1
О синдроме самозванца 2

Как бороться с синдромом самозванца и перфекционизмом?

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

Во-вторых, общение с другими разработчиками и осознание того, что не везде рокет саенс, везде примерно одно и то же, а там, где вроде как даже и рокет саенс, сложных вещей которые дают 80% эффекта — совсем немного. Самой большой популярностью пользуются всевозможные хайлоад проекты 300kk rps, но если внимательно присмотреться, то все они так или иначе используют одни и те же технологии для горизонтального масштабирования — будь-то шардирование базы, кеширование, асинхронная обработка в очередях, распределенные мапредусы, nosql решения и тд. Эти все штуки кажутся сложными, но сообщество разработало уже готовые комплекты — бери и применяй. Сейчас очень мало где нужно выдрачивать производительность до наносекунд, разрабатывая свой сетевой стек, или переписывая куски кода на плюсы.

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

В-четвертых, норм фидбек от босса. Если кажется что делаешь совсем дичь и постоянно тупишь, то не зазорно пойти и поговорить об этом. В нашей культуре разработки нормальные 1-на-1 это большая редкость, в основном в силу специфики проектов и культурного бэкграунда, и вообще попасть на хорошего руководителя это очень большая удача, но надо понимать что за спрос денег не берут. Другой вопрос как подойти к боссу, если очкуешь говорить о собственной производительности — но тут уж надо выбирать — или жить в постоянном стрессе от неуверенности в собственных силах и сомнениях по поводу квалификации, или пересилить себя, пойти поговорить 10 минут и понять, чего ты стоишь.
https://xn--r1a.website/zlit_event/69
Успел вписаться в докладчики на "Побег из ІТ": буду рассказывать что делать со стеклянным потолком (https://xn--r1a.website/full_of_hatred/106), о том, что надо поменьше работать, не сидеть в душных офисах и вообще жить а не существовать. Формат выступления очень сложный — 5 (пять!11) минут на доклад и дальше Q&A сессия. Запись "доклада" по идее потом выложат.
О синдроме самозванца 3

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

По моим наблюдениям, люди делятся на два типа — первые зависят от мнения извне, легко поддаются на провокации, не держат прямой удар и проваливают так называемые shit tests, вторые — клали на всех и вся, а на любую критику у них есть заготовочки в стиле agree and amplify (примеры про это и про шит тесты вообще можно почитать вот тут — https://illimitablemen.com/2014/12/14/the-shit-test-encyclopedia/. Несмотря на то, что в статье речь идет об отношениях, техники легко применяются к любому общению).

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

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

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