Я обычно не люблю затрагивать общие вопросы, но на работе недавно столкнулся с очень специфичной ситуацией, которой хочу поделиться с вами. Касается она нового человека, которого в 2024 наняли свеженьким, из колледжа.
Представьте компанию, которая занимается разработкой для NetSuite. Это американская версия 1С — старая, не самая удобная, но её любят бухгалтеры. Проекты, написанные в 2016 году, отлично работают с NetSuite, так как самые свежие обновления примерно того времени. Всё функционирует хорошо. Внедрение новых функций считается лишним, и сотрудники продолжают работать на том, что уже есть.
Однажды в мою комнату зашёл новый программист. Ему 22 года, он только что окончил колледж по специальности «Программная инженерия». Я подумал, что нужно помочь ему быстро освоиться, обучить, чтобы он мог вносить свой вклад в работу.
Хочу сразу отметить, что этот молодой человек — весьма способный, готовый воспринимать критику и работать над ошибками. Особенно мне запомнилась его фраза: «Я понимаю, что колледж был недостаточно полезным, поэтому готов переучиваться». Он действительно старается, задаёт вопросы и стремится улучшить свои навыки. Мы решили оставить его и я продолжаю работать с ним. Но я хочу поделиться своим опытом работы с этим конкретным новичком.
Лично я не поддерживаю мнение людей, которые утверждают, что высшее образование — это пустая трата времени. Я так не считаю. Я закончил университет в 2008 году, и до сих пор использую знания, полученные на курсах. Однако этот молодой человек удивил меня новым подходом.
Проблема
У нас есть молодой специалист, только что окончивший колледж. Я спросил его, сколько лет он учился и что изучал, а также, сколько он заплатил за это образование.
Да, обучение в колледже в США длится 4 года. Я думал, что так как на пятом курсе универа мы всё равно полгода били баклуши, а полгода писали диплом (били баклуши с умным видом), то разницы между колледжем и универом должно быть ровно нисколько. Но на самом деле, всё оказалось совсем не так.
Лекции в современном колледже длятся по 2,5 часа в день, и это — максимальная нагрузка. И всё это — только с понедельника по пятницу. Если есть домашние задания, они не занимают больше одного часа в неделю. Проектных работ нет, курсовых нет.
В университете же всё было иначе: от четырёх до шести пар в день, по полтора часа каждая. Занятия с понедельника по субботу, плюс курсовые и задания на дом.
Я подумал: «Ну ладно, всё можно оптимизировать. Если курсы привести в порядок, удалить лишнее, наверное, получится сократить время обучения».
Реальная проблема
Первый красный флаг я заметил, когда новый сотрудник спросил: «Можно ли подключиться удалённо к этому компьютеру?» Ему пришлось работать через удалённый рабочий стол, подключаясь к одному из ноутбуков в сети. Я спросил: «А вы пробовали?» Он ответил, что пытался подключиться к компьютеру с адресом 192.168.252.11 из дома, но это не сработало.
Тогда я спросил его, знает ли он, что такое маска подсети. Он честно признался, что не знает. Затем я спросил, в чём разница между TCP и UDP. Он сказал, что это упоминалось на лекциях, но преподаватель сказал, что на это можно не обращать внимания.
В результате я провёл трёхчасовую лекцию по сетям. Я объяснил, что такое маска подсети, как она делит сеть на подсети, что такое роутеры, мосты и фаерволлы, как пакеты направляются внутри сети и как работает BGP. Всё это он усвоил достаточно быстро и даже понял, как подключиться к компьютеру из дома, установив ngrok. Он также отметил, что такое решение может обойти фаервол, поэтому использовать его лучше не стоит. Я был рад, что он воспринял информацию.
Копаем глубже
Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мне пришлось изучать другие технологии: C, C++, Ассемблер, JavaScript, чистый PHP, ASP и множество других фреймворков. Это всё было в университете. Да, я пережил эпоху перехода от IE6 к более современным браузерам, а также знаю, как JQuery сначала был стандартом, а потом утратил свою актуальность. Всё это произошло за пять лет учебы в университете.
Этот молодой человек не писал на чём-то, кроме C#. Я подумал: «Как это возможно, что он за 4 года не писал для Web?» Он ответил, что писал только на XAML. Я уточнил, на каком фреймворке, и он сказал, что на .NET 4.5. В 2023 году! А как же .NET Core? «Ну это .NET для Linux, мы на нём не работали».
Хотите узнать больше? Нет? А я заставлю.
Ну хорошо, а что такое Git? Git — это плагин для VSCode, который позволяет скачивать код с github.com.
При этом он по-человечески очень даже обучаем, быстро и хорошо воспринимает новые данные. После двух недель работы с ним он быстро выучил JavaScript и воспринял то, как тот работает. Он хорошо усвоил разницу в основных принципах JavaScript и .NET. Он понял типизацию и её отсутствие. Научился управлять памятью и примерно понимает, куда и как копать.
Сегодня начинается его третья неделя жизни в этой компании. Он сидит и разбирается со старым Vue2 проектом. Вопрос сбора проекта из сорцов — это проблема на два дня. Для начала надо было установить Node.js и заставить ChatGPT переписать bash-скрипты в PowerShell. Потом сама установка и настройка среды. Java на его компьютере нашлась, просто потому что он её сам изучал во внеурочное время. Так что все приблуды для NetSuite (которую пилит Oracle, и которая сама Java-зависима) более-менее за день запустились.
Архитектура? Ой, не смешите меня, у меня и так губа треснута. Распределённые приложения? Нет. IPC? Даже не думайте.
Ну и что?
Что же в итоге? Человек реально сказал, что в гробу он видал этот колледж. Человек реально из кожи вон лезет, чтобы остаться в компании, и ещё ни разу не сказал «Я не буду этого делать». За это он заработал своё место в компании. Я буду его учить, деваться некуда. Хорошие разработчики — это полезные люди, и их надо воспитывать.
Но у него за институт висит долг в $130,000. Сто тридцать тысяч долларов. Ему двадцать два. Мне в свои 38 лет до такого долга ещё далековато. И это учитывая, что я только что умудрился импульсно купить себе Toyota Corolla 2024 с финтифлюшками, потому что мне цвет понравился, поназадолжать налоговой службе и сменить свой технологический стек с Linux и Android на топовые MacBook’и. Плюс переехать, купить новой мебели и техники в дом, заменить машинку и переделать кучу вещей в доме. Добавьте к этому 25,000 долларов, пожертвованных на благотворительность в этом году. Всё это, вместе взятое, поставило меня в долговую яму, намного меньшую, чем у этого парня.
Парень же офигительный. Но теперь мне придётся заниматься тем, что буду спасать его от последствий его образования.
Тут, если честно, я ещё подумал о всех этих статьях на Хабре о том, что нигде программистов не берут. Приходит после курсов на каком-то там акселераторе чувак, который с горем пополам знает один язык. Просится в компанию. Но это значит, что я буду тратить по 3 часа в день примерно полгода своей жизни, просто для того, чтобы его довести до состояния, когда он сможет:
1. Открыть git
2. Склонировать репозиторий
3. Изменить код
4. Дописать скрипты в базу данных
5. Закоммитить это обратно в git
6. Протестировать
У меня меньше ненависти к современным нанимателям. Когда я в 2008 году пришёл работать на свою первую работу, меня спросили написать SQL-скрипты, C# код и JavaScript. Интервью продлилось 30 минут, и меня взяли на следующий же день. Но, судя по всему, я уже превзошёл большинство современных джунов, которые очень просятся на работу.
Вопрос к вам, нанимающиеся и наниматели:
Какова реальная обстановка на рынке труда джунов? Я всегда думал, что был джуном, когда пришёл на свою первую работу. Мне казалось, что три языка и SQL - это джунство.
Я прекрасно понимаю, что моя выборка ужасно нерепрезентативна. У нас в компании работает 130 человек. Мы собираем олдов с сертификацией и русских эмигрантов. Обычно мы берём людей с 10-13 годами опыта. Это - первый свежий джун.
Это что, сейчас на рынках у всех такие проблемы?