Душевная боль синиор-девелопера

Душевная боль синиор-девелопера

На этом сайте намекают на то, что программисты не инженеры, что JSON'ы перекладывать — не инжиниринг. В корне не согласен. Представьте, прилетел к Вам в микросервис джейсон. Всё должно быть асинхронным, многопоточным. Надо JSON прочитать, сделать валидацию, распарсить даты, срезать всё лишнее через святую троицу — filter, reduce, map. Потом выгрести из PostgreSQL одно, из кэша другое, из S3 — третье. Потом всё это собрать, склеить. Сделать OpenDocument Spreadsheet, положить в S3 и отписать в очередь. На каждом шаге может быть много причин для эксепшенов. Надо всё записать в логи, не раскрывая бизнес-данных и секретов, собрать исключения и отослать в Sentry. А бывают JSON'ы семиэтажной вложенности. Нужно разматывать их кишки, строить обратные мапы (индексы). Потом передавать много индексов в другие функции. А ещё надо прочитать миллион джейсонов так, чтобы не умереть от нехватки памяти в кластере k8s. Ещё надо все случаи покрыть тестами, да с docker-compose, чтобы там были настоящие PostgreSQL, redis, S3 и так далее. Тут на сайте "another-it" есть некий чел с ником Инженер. Скажи, Инженер, легко ли JSON'ы перекладывать? На мой взгляд, это очень сложная инженерная задача.

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

В итоге вырос физически не развитым, не особо коммуникабельным и с выхолощенной эмоциональной частью мозга, короче, с низким EQ и высоким IQ. Параллельно село зрение, атрофировались мышцы, позвоночник искривился, появился геморрой, да такой, что удалять пришлось, мази не помогали. И это не смешно. Я вырос биороботом-математиком, узко заточенным под одну задачу — писать код. В итоге я смог спустя десятилетия карьерного роста взять и устроиться работать контрактором на удалёнку на должность Senior Developer (Clojure) в один необанк. Я так работаю уже несколько лет. Жить можно, но никаких $300k в секунду не вижу. Вижу дичайшее перепроизводство кадров в глобальных распределённых командах. Понимая, что в любой момент могут уволить, я решил заранее подстелить соломку и пройти собеседование в одну глобальную (американскую) компанию на удалёнку. Я согласился пройти интервью, состоящее из 4 ступеней. Для каждой из ступеней брал отгула за свой счёт. Хочу излить душевную боль.

Ступень 1. Созвонились по видеосвязи, я рассказал о себе бегло на английском. Сразу дали задачу с онлайн-кодингом на размен монет. Есть сумма и достоинства монет, и надо определить, сколько каких монет дать человеку. Возвращается мапа, где ключ — достоинство монеты, значение — количество. Я озвучивал в микрофон то, что я писал, чтобы не было неловких пауз. Собеседник молча слушал. Когда я попросил подсказку, он продолжил молчать, как рыба. В итоге я сам вспомнил жадный алгоритм размена. Но он работает, лишь если среди монет есть достоинством в одну. Это нужно, чтобы добить остаток, когда не осталось других монет. А один из кейсов был подобран так, что монеты достоинством в одну не было. Это сломало весь алгоритм, и получилась задача "два в одном". Я затупил и стал думать, что проще: воткнуть костыль или написать другой алгоритм на перебор или с общими множителями. Пока я думал, собеседник сказал, что ему пора поговорить с другим кандидатом и что я могу выслать решение позже. Он отключился. Ещё через 10 минут я дописал и выслал решение с костылём, но без багов. Я устал, как вол в загоне. Вот не понимаю, зачем это надо? Для чего нужен лайв-кодинг без возможности спросить ответ у AI или Гугла, или в настольных книгах алгоритм глянуть? Ведь на реальной работе всегда такие возможности есть. И нет дурацких сроков типа "успеть за полчаса".

Ступень 2. Через неделю пришло письмо, меня пригласили на ступень 2. Я снова рассказал о себе, о том, какие у меня амбиции, как я мечтаю изменить мир к лучшему и какие челленджи мечтаю преодолеть. Дурацкая практика, но иначе нельзя: программист должен корчить из себя любителя успешного успеха. Сразу дали задачу написать суперсет множества. Я использовал вот такую штуку: https://clojuredocs.org/clojure.core/tree-seq

Она позволяет разложить любую структуру на последовательность. Собеседник нехотя признал, что я угадал с решением. Но потребовал написать тесты на все случаи жизни и, блин, опять на скорость, как олимпиадный школьник или спортсмен. Я вспотел дома летом даже под кондиционером, но уложился во время. Далее он сразу дал сложную бизнес-задачу. Так уж получилось, что я подобную штуку ради интереса делал в моём Гитхабе, поэтому я попросил разрешение открыть в браузере на расшаренном экране свой Гитхаб и показать результат. Он нехотя, со скриптом разрешил. Результат его устроил. Далее сразу же к созвону подключился другой дядя и гонял меня по кишкам драйвера СУБД, конечным автоматам, пробросу состояния через контекст туда, в самые дальние концы кода, и обратно. Я ответил на все вопросы успешно. Я устал, как вол в загоне, и думал, что всё. Но нет. Снова задание: нужно определить в графе, можно ли пройти из вершины А в Б. Про графы я читал ещё в детстве. Я ему рассказал про обход в глубину и ширину. Рассказал, что один основан на стеке, другой на очереди. В глубину не работает, если в графе есть циклы. Поэтому будем обходить вширь, с очередью. Я написал код, сработавший на простом графе. Собеседник дал мне огромный граф, и код упал. Человек дал подсказку, я быстро исправил, и всё заработало. Потом он спросил меня про поиск по предикату. Я ответил успешно, мы попрощались.

Ступень 3. Думал, что я был не идеален и третьей ступени не будет. Но нет, мне написали и пригласили. Как всегда, бегло рассказал двум собеседникам про себя, про то, чем я лучше других 100500 кодеров и как я мечтаю изменить мир к лучшему. Дали задачу: лайв-кодинг, написать интерпретатор. Такой, чтобы мог выполнять код, определять переменные, делать ветвление, использовать замыкания на функциях. Техническое задание — PDF на четыре страницы! Время на кодинг — 1 час. Так быстро по клавиатуре я не стучал никогда. Успел чудом. Результат их устроил. Похвалили меня и выключили звонок. Голова у меня болела весь вечер, таблетки не помогали.

Ступень 4. Я неделю ждал её, писал на email, вежливо просил объяснить, что не так. Но никто не отвечал. А ещё через неделю, то есть через 2 недели после окончания ступени 3, мне пришло письмо: "Уважаемый кандитат, мы подумали и решили, что продолжать нет смысла". Я вежливо поинтересовался подробностями, но никто не ответил даже спустя месяц. Но почему? Почему никто не написал мне "Другой кандидат справился лучше, и мы выбрали его"? Где этика, мораль, уважение к программисту, который несколько часов потратил на них всех? Собеседование — это какой-то гибрид лотереи, дедовщины в армии, свидания в ресторане с высокомерной фотомоделью, олимпиады по программированию для школьников и спортивного состязания по смешанной борьбе. Я понял, что если меня уволят с текущей работы, новую я буду искать, наверное, пять месяцев — не меньше, а в течение этих пяти месяцев буду носить позорные репела безработного мужчины — отпугивающее клеймо для всех девушек. Я даже не узнал, сколько мне платили бы в месяц на той, новой работе, если бы прошёл на 4-ю ступень — долгожданное собеседование с руководителем. Сейчас я зарабатываю $5 тыс. Но не смейте говорить, что столько на удалёнке получают все. Во-первых, нужно очень хорошо знать английский разговорный и письменный, должны быть testimonials с предыдущих проектов, Гитхаб-репы или gists с полезным кодом, должна быть удача, чтобы трудоустроиться, а ещё я каждый день перерабатываю. То есть логирую в трекер 8 часов, а фактически работаю по 10, иначе не успеваю, а неуспевающих увольняют. А по выходным я совершенствуюсь — изучаю новые фичи языка, либы, новые БД, дизайн-паттерны, так как без развития уволят. Отпуск не брал ни разу за последние годы. А теперь представьте, что 200 тыс. руб. в месяц в России может иметь курьер на электробайке, не имеющий образования и даже гражданства РФ. А столько, сколько получаю я, могут получать в месяц на двоих две молодые девушки-сестры без образования, которые вместо ПТУ/колледжей и вузов всего лишь полгода торгуют одеждой и обувью на Вайлдберриз. А через пару лет такой торговли каждая будет получать столько, сколько получаю я. И стоило оно того — моё несчастное детство, расстройства личности, асоциальность, неспортивное тело и кривая осанка?

Что же делать? Хорошо было написано здесь:

/2024/06/24/vision-of-the-future-of-it-in-russia-for-the-next-10-years/

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

  • Программисты сами учатся, получают сертификаты и разряды по всем частям стандартной библиотеки языков, по фреймворкам, по БД, по экспертизе — банки, healthcare, такси, гостиничный бизнес и так далее, что нужно на проекте, короче.

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

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

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

В дополнение покажу один график:

  • https://www.cbinsights.com/research/report/venture-trends-q1-2023

  • https://research-assets.cbinsights.com/2023/04/12092030/Chart-1-venture-funding-V4-768x533.png

Это венчурные инвестиции в мире. Они падают, как падающий самолёт. Скучающим миллиардерам надоело финансировать IT-стартапы. Они финансируют сброс чистой воды в мировой океан для борьбы с глобальным потеплением, феминизм с небритыми подмышками, производство еды из червей и насекомых вместо говядины, петушиную масть ЛГБТ, погромы негров BLM, Грету Тунберг, массовую посадку деревьев как борьбу с изменением климата, борьбу с капитализмом, семьёй, средним классом и частной собственностью. Айтишники им уже не нужны. В Калифорнии — массовые увольнения в IT. Айти держались на венчурном капитале, а также на потребности государств и корпораций всё автоматизировать и ускорять. В итоге доавтоматизировались со своими GPT-4 и линуксами.

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

Вспомнил анекдот:

Сидят две эйчарки, опытная и молодая. Перед ними — огромная гора резюме. Молодая: Да мы с этим всю неделю просидим! Опытная берёт верхнюю половину этой горы и отправляет в мусорное ведро. Молодая: Да как же так? Опытная: Ну а зачем нам в компании неудачники?

Комментарии (89)

Правила комментирования
  • Любые темы про политику, войны, или всё то, что НЕ относится к теме сайта, будут УДАЛЯТЬСЯ.
  • Всё, что попадает под возможные нарушения законодательства РФ (экстремизм, призывы, дискредитация, оправдание, возбуждение и т.п.) - тоже.
  • Любые бессмысленные оскорбления участников сайта или тематики сайта. Если с чем-то не согласны - приводите аргументацию, а не оскорбления.
  • Запрещается упоминание в негативном контексте (клевета) каких-либо персоналий - физических или юридических лиц.

Мы стараемся сделать комментарии ценным информационным материалом, засорять сайт мусорными обсуждениями, никак не относящимися к теме сайта, не нужно! Спасибо за понимание.

0 / 10000

Форматы: JPG, PNG, WebP. Не более 5 файлов (по 10 МБ). Можно вставить из буфера (Ctrl+V).

Загрузка комментариев…