Начинающие программисты боятся темноты
Не могу больше. Это не моё. Я не тяну. Всю ночь не спал, ворочался, вставал, курил, читал, пытался смотреть телевизор, снова ложился… Ненавижу.
Всех, кто пишет эти радужные истории «войти в айти». Тех, кому я заплатил за курсы по программированию. «Друзей» и «советчиков», которые сказали: смело бросай свою старую, нелюбимую работу, и иди в программисты. Если бы вы только знали, о чём говорите…
Сегодня я уволюсь. Не могу больше выносить этот стыд, позор, невыносимое бессилие. Я не этому учился. Я хочу программировать, писать код. Но за последний месяц я не накорябал ни одной строчки.
Я один в темноте.
Утро
А начиналось всё так радужно! Мне 35 лет, и всю жизнь я работал менеджером по продажам… Не имеет значения, чего именно. Да, это работа, на которую я случайно устроился сразу после института, чтобы были хоть какие-то деньги. Начало получаться — ну так, средненько, без экстремумов.
Зарплата потихоньку росла. Сильно потихоньку. Люди приходили, уходили, а я сидел. Жена, дети, ипотека. Получал свою трицаху, а то и сорокет, в хорошие месяцы — полтос, как-то справлялись.
Потом кризис среднего возраста, всё как положено. Пить начал. На детей орать, с женой ругаться. Друзья давно меня, скажем так, обошли. Есть кому завидовать.
Когда немного успокоился, начал думать, искать. Вспомнил ненароком, что учился на инженера. Нашёл примеры успеха — тех, кто в моём возрасте ушёл в программисты, даже без технического образования. Впечатлился, решил попробовать.
Купил курсы — как раз акция была, перед НГ. Мне там прям всё нравилось. И график удобный — после работы, вечером, вебинары, общение с преподавателями, решение задач. Я начал программировать!
И чем дальше, тем больше. Я программировал всё, что дают на курсах. Забрал у ребёнка учебник по информатике, порешал задачи оттуда. Нашёл в интернете всякие задачки для обучения — всё прорешал!
Я никогда столько не программировал! Это так классно. Я чувствовал своё, не знаю… Всемогущество! Реально было время, пусть и не очень много, когда я верил в себя, в то, что изменю свою жизнь!
Было, конечно, сожаление –, но радостное, до дрожи. И лишь о том, что не допёр до программирования раньше. Я могу. Умею. Получается. Получается!
Курсы я закончил, если можно так выразиться, с золотым дипломом. За время обучения напрограммировал в разы больше, чем требовалось.
Пошёл искать работу.
День
Искать долго не пришлось. В нашем городе есть лишь две компании, которые берут на работу таких зелёных, как я. Отправил резюме в первую по алфавиту, пригласили на собеседование. С гордостью показал сертификат о прохождении курса — заметил, что немного поморщились.
Дали пару задач на элементарные алгоритмы — решил за несколько минут. Морщиться перестали. Позвали на испытательный срок. Спросил, как что будет проходить. Дело ведь серьёзное: семья, дети, ипотека. Старая, нелюбимая, но стабильная во всех смыслах работа.
Сказали так, типа без обиняков: курсы это хорошо, это навроде изучения алфавита в иностранных языках. А мы тебя будем учить писать и говорить, уж не обессудь. Сначала буду решать учебные задачи, созданные по мотивам реальных. Потом перейду к «живым» задачам, клиентам, проектам.
Меня вполне устроило. Я согласился. На работе, конечно, не обрадовались, но… И не расстроились. Чем порадовали меня. Написал заявление, отработал две недели, торжественно явился в офис программистов.
И пошло-поехало! Не работа, а просто мечта! Мне выдали пачку задач, с полными, чёткими, понятными инструкциями по всему, что с ними связано — и как среду разработки развернуть, и где что скачать, и в каких модулях, функциях писать код. Задания чёткие, понятные и, сразу видно, не из пальца высосанные.
Я потом поспрашивал — говорят, эти задачи специально собирают в реальной работе. Крутые прогеры, которые пашут в продакшн, когда замечают хорошую, чёткую, изолированную по контексту и предметной области задачу — складывают её, после решения, в какой-то там каталог. И в итоге она попадает к таким, как я.
А я эти задачи, после лёгких трудностей адаптации, щёлкал, как орешки. Конечно, там не про сортировку массивов, ограниченную рекурсию или универсальную упаковку в JSON, но не сильно сложнее.
А главное — ничто не давит. Ни сроки, ни клиенты. Я делаю, опытные программисты смотрят, дают советы, показывают неоптимальности, я исправляю. Блестяще.
Это была самая яркая, интересная, живая часть испытательного срока. Добрый жаркий день. Дальше стало хуже.
Вечер
Во втором месяце испытательного срока мне начали давать реальные задачи по проектам. Конечно, не самые критичные, срочные или важные. Но — реальные!
Главное их отличие от учебных — я был первопроходцем! Учебные-то прорешали все, кому не лень — и опытные программисты, и такие же зелёные, как я. В реальных, пусть и несложных задачах, первой звездой, альфой, был я.
Процесс решения был несложный. Какой-нибудь опытный, толковый перец — аналитик, или программист — описывали мне задачу, достаточно подробно, начиная с бизнес-задачи, заканчивая названиями модулей, старых и новых зависимостей, таблиц с исходными данными и т.д. От меня требовалось лишь написать код.
Конечно, было сложно, особенно поначалу. Скорее даже не по техническим вопросам, а потому, что теперь от меня что-то зависит, по-настоящему. И мои коллеги, и руководитель, и клиенты. Коих, по рассказам, бывало очень много на одну мою задачу.
Перетерпев первые трудности, я влился. Я снова программировал. Много, интересно. Особенно мне нравилось, как бы это назвать… Равноправие, наверное. Меня стали звать на совещания, спрашивать сроки, проблемы по задачам, знакомить с ходом проекта. Ну, не прям меня лично, но я тоже слушал, наравне со всеми остальными программистами.
Мне всё было понятно, хоть и с некоторыми трудностями и оговорками. Я не всегда знал или понимал, что было до моего кода, и что будет после него. Моё задание было изолированным, объяснённым, понятным. Я просто программировал.
После небольшого торможения в начале второго месяца, я очень много программировал. Я писал код каждый день. Много, трудно, но интересно.
А потом наступила ночь.
Ночь
На третий месяц всё изменилось. В первый же день руководитель торжественно объявил: «Теперь началась настоящая работа». И загадочно улыбнулся.
Мне дали задачу. Она оказалась совсем непохожей на предыдущие. Не было имён модулей, бизнес-задачи, входа и выхода. Задача примерно звучала, как «тут где-то проблема, надо найти и устранить».
В первый день я, полный энтузиазма, кинулся… Ну, скажем так, просто кинулся. Уже и не помню, куда. Смотреть, листать, мотать, открывать, переходить, искать. С интересом и амбициями первооткрывателя.
На второй день мне стало немного страшно. Особенно под вечер. Я перестал понимать, или просто забыл, что я вообще ищу. Только собрался пойти и ещё раз спросить, как… Мне дали ещё одну задачу. «Распараллелить вот чё там под этой кнопкой на 2–3 потока, если получится». Если получится!
Вообще, я даже немного обрадовался возможности переключиться с совсем непонятной на ещё не понятно, непонятную ли задачу. Ну, кнопку-то я нашёл. Думал, под ней изолированный код. Ан нет, там вызов. За которым код, который с зависимостями, почему-то жутко непохожими друг на друга.
Третий день прошёл в попытках составить для себя какую-то карту этих зависимостей, переходов, передачи аргументов. Три дня я не писал код, и уже сильно переживал по этому поводу. Решил, что пора попросить помощи руководителя.
Позвал его, всё подготовил, открыл, дождался, он подошёл… И я ляпнул «смотрю и ничего не понимаю». Что именно не понимаешь, спросил он. Ну, говорю, куда код написать, который распараллелит. Он — найди корневой вызов, подходящий для изоляции, и сделай обёртку. И ушёл.
Я погуглил, конечно, но понятнее не стало. Прошло ещё два дня. Ни строчки код так и не написал. Я собрался с духом и снова подозвал руководителя.
Сказал, что не могу понять, куда писать код. Он ответил, что это нормально, не надо переживать. Но и бросать не надо. Надо искать. И опять ушёл. Снова день без строчки кода.
Дальше я не буду соблюдать хронологию, потому что плохо её помню. Всё как в одурманенном сне. Череда ужасающих открытий о, скажем так, «реальности работы программиста».
Оказалось, что надо понимать чужой код. Это не опция, а обязаловка. Этот код писал не я. И не мой руководитель. Зачастую — вообще кто-то не из нашей команды. Иногда даже не из нашей страны. И понимать чужой код надо больше и чаще, чем писать свой. Потому что «вообще-то, весь нужный код уже написан».
Ещё у чужого кода есть диалекты, стандарты, требования к использованию. Знать их все не обязательно, потому что невозможно, но «надо их уважать». Ибо раз я читаю и хочу использовать их код, а не они мой, то уважаемые люди — они.
Если я каким-то чудом найду, где написать свой код, то надо выдерживать стиль… Стоп, нет. Надо писать код в объединённом стиле — «наш плюс ихний». Как на футболках Студии Артемия Лебедева, где мат написал английскими буквами. Да, кстати, я так и не нашёл, куда написать свой код.
Выслушал по этому поводу несколько речей. Сначала восторженных, типа «за «написать код» надо бороться» или «написать код» надо ещё заслужить». Потом унылых, вроде «я не понимаю, чего ты не понимаешь» или «ладно, давай я заберу задачу и сделаю сам».
Однажды я набрался смелости и выдал предложение. Пусть, как и в прошлом месяце, более опытный программист в моей задаче укажет, где я должен написать код. Ведь этот подход работал! Ну да, я пока не понимаю, не могу собрать в голове весь контекст и стек вызовов. И код чужой плохо понимаю.
Блин, а я откуда должен уметь его понимать-то?! Я нигде не учился понимать код! На курсах меня натаскивали только программировать, разрабатывать, кодировать! В первый и второй месяц работы — аналогично! Я программист, в конце-то концов, пусть и начинающий! Я хочу писать код!
Знаете, что мне ответили? Опытный программист не может мне помочь. Он не найдёт, куда мне писать код. Ему некогда. Он ищет, где написать свой код. И добавили, что это нормально. Так и должно быть.
Этот дикий, нарастающий с каждым днём стресс, продлился в течение всего третьего месяца. Я не написал ни одной строки кода. Ни одной! Я так и не понял, куда мне писать код. Пока я копался, задачи у меня забирали. Выдадут, подождут несколько дней, заберут. Говорят, потому что проект ждать не будет.
У меня очень быстро развился полный букет комплексов, от неполноценности до самозванца. Я вообще перестал понимать, кто я, чем занимаюсь, куда иду, зачем всё это. И главное — я уже не знал, программист ли я. И что такое программирование.
Я погряз в непонятно чём. Чтении чужого кода, понимании контекста, попытках воспроизвести ошибку, анализе производительности, понимании диалектов, режимах отладки. Так не должно быть. Не должно!
Программист пишет код. Не читает, не анализирует, не тестирует, не оптимизирует. Пишет код! Для остального есть другие профессии! А я, я… Не смейтесь, но за два месяца я привык писать код. Я это дело даже полюбил.
Самое непонятное и возмутительное: всем окружающим нормально! Я понаблюдал — реально, полдня читают! Чтобы потом написать три строки! И это они называют программированием! Ну или ладно, не они… И это называется программированием?! Разработкой?
Так и должно быть? У всех? Везде? И у вас? Вот вы честно мне скажите — я один такой? Все прям читают код и понимают его? И понимают, зачем понимают?
Не могу больше. Это не моё. Я не тяну. Всю ночь не спал, ворочался, вставал, курил, читал, пытался смотреть телевизор, снова ложился… Ненавижу.
Всех, кто пишет эти радужные истории «войти в айти». Тех, кому я заплатил за курсы по программированию. «Друзей» и «советчиков», которые сказали: смело бросай свою старую, нелюбимую работу, и иди в программисты. Если бы вы только знали, о чём говорите…
Сегодня я уволюсь. Не могу больше выносить этот стыд, позор, невыносимое бессилие. Я не этому учился. Я хочу программировать, писать код. Но за последний месяц я не накорябал ни одной строчки.
Я один в темноте.