С момента последнего письма, к моему удивлению, слишком много людей написали мне с вопросами вроде “а как и что вы изучали по основам программирования, какую математику, за что хвататься?”

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

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


Тогда я уже работал в IT-компании, но всё ещё с трудом понимал, за что мне хвататься.

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

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

Отдельная история – математика. Большую часть жизни я почему-то считал, что это просто “не моё”. Кошмарное заблуждение :)

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

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

Оказалось – математика прекрасна. Программирование прекрасно. Под всеми языками, фреймворками и библиотеками находится огромный бездонный мир. И в нём можно становиться сильнее всю жизнь.

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

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

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

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

Доверие быстро получило практическое подтверждение. Примерно за следующие полгода я продвинулся по внутренним аттестационным критериям компании, где я тогда работал, почти до senior-планки. У некоторых коллег тот же путь занимал два, три, четыре года, believe it or not, как говорится.

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

Да, упорство – второе после доверия условие на любом пути самообучения или обучения под руководством Учителей.

Но ментор дал мне кое-что ещё.

Хочется сказать, что я научился думать быстрее, но это было бы не совсем правильное слово. Скорее, я начал думать в правильную сторону и правильным способом – учитель передавал мне этот способ мышления через руководство и обучение.

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

Вот так, глядя “чужими глазами” через призму чужого опыта, я и увидел за написанием софта прекрасный и глубокий мир инженерии: разные парадигмы программирования, потоки данных, FP, системная инженерия. Уже годами позже (ближе к точке пространства-времени, где я пишу эти буквы :) я наконец понял, что современная инженерия вообще не заканчивается созданием софта, и методы мышления, прошивку своих мозгов можно улучшать пожизненно.

Например, современный менеджмент тоже можно (нужно!) рассматривать как инженерию организации. DevOps напрямую связан с тем, как спроектирована (“заинженерина”) коллективная работа.

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

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

Методы мышления, которые я получал от своих менторов, многократно ускоряли мой прогресс.

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

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

Пока что каждый раз я получал больше, чем заплатил.

Конечно, в сети полно мошенников. Как на них не нарваться? Ну, помните про доверие? Вы же не доверяете на улице первому встречному? Тут то же самое, особенно когда “великие учителя” лезут из каждой дырки, у всех сейчас есть свой курс, отличное предложение, огромные скидки – “только я дам вам секретные знания про Х”.

Как тут быть? Я никогда не тороплюсь и ищу доказательства опыта: как и что человек пишет и говорит? Из этого можно понять, насколько он вообще ясно мыслит? Что он предлагает? Сколько своих учеников привёл к успеху?

И ещё – насколько человек привержен делу, которому он учит? Если программист Петя вдруг начал учить маркетингу – это просто странно.

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


Напоследок про ИИ. Могут ли современные нейросети заменить ментора? Моё мнение – целиком заменить не могут. Даже имея доступ к огромному объёму знаний, нейросеть не знает автоматически, что именно, в каком порядке и для чего нужно изучать конкретно вам.

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

Можно, конечно, попросить нейросеть составить “глубокий план изучения программной и системной инженерии”.

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