Я проработал программистом уже 7 лет. За это время количество людей, считающих что для работы программистом достаточно двухнедельных курсов или книжки только увеличивается. А еще появились такие продукты как https://metanit.com или каналы на youtube. Закончил дискутировать я на эту тему после эпичного ответа на вопрос «Как у тебя с математикой?». Оказывается «для работы программистом математика вообще не нужна». Ну что же, давайте я поделюсь своим опытом прямо по годам.
Нулевой год (какая ирония, учитывая методы нумерации программирования) – высшее образование. Да, вот так вот скомкано. Нет, это не попытка принизить необходимость получения высшего образования. Дело в том, что направление, где я обучался, не готовило конкретно программистов. Да, я занимался профильными предметами. Да, я реализовывал курсовые и дипломные проекты. Но сказать, что я вышел из дверей вуза программистом я не могу, так как я даже не до конца четко представлял ту область, в которой хотелось бы заниматься программированием. Плюс это было время бурного развития мобильной разработки, что отнюдь не облегчало выбор.
Первый год – обучение методом книжек. Книжек было перечитано, наверное, не один центнер. И знаете что? Если быть до конца педантичным и огладываться с текущих позиций – подавляющее количество этой писанины ничему не учит. Это настолько базовые знания, что их хватит в лучшем случае на собеседование. Первый взгляд на действующий проект окатывает как ведром холодной воды. Впечатление что ты не знаешь ничего ни про что. А почему? Потому что книги, имеющие в названии язык или какую-нибудь платформу, пишут про язык и про платформу. Если проводить аналогию – это как знать из чего состоит кирпич, цемент и трубы и знать для чего они применяются, а потом приехать на стройку. Меня выручило только то, что в ВУЗе я имел курсы об архитектуре баз данных и архитектуре программных продуктов, и какой-никакой опыт написания проектов, на которые сегодня без слез смотреть не могу.
Второй год – обучение на профильных курсах. В принципе это тоже самое, что выше, но с некоторыми преимуществами. Во-первых, некоторые курсы имеют практическую часть и рекомендации от разработчиков курса по применению получаемых знаний. Во – вторых у вас есть некий человек, которому вы можете адресовать вопросы и уточнить непонятные моменты. Не могу сказать, что мне жаль потраченных денег, но признаюсь – отправить на помойку все грамоты о прослушивании тех или иных курсов (некоторые даже за «подписью» Стива Балмера) у меня рука не дрогнула.
Третий год – целевое обучение на профильных ресурсах. Ну, или если по-простому – затыкание течей. Для меня это тот этап, когда поиск профильных курсов или требует большого количества денег или требует большого количества времени. Я, например, не знаю - как за пару недель быстро научиться писать оптимальные SQL-запросы или построение индексов. Только поиск решений подобных задач в интернете с последующим обсуждением с коллегами.
Так, вроде получилось за 3 года вырастить кого-то похожего на Middle-программиста. Ну, по крайней мере мне так кажется. А впереди еще 3 года обучения на кого-то похожего на Senior, могу кстати продолжить, если это внезапно кому-то интересно. Для чего я пишу эти строки? Если кто-то считает что после двухнедельных курсов можно стать программистом – у меня плохие новости. Нет, ну в принципе можно, но это будет уровень новичка с соответствующим уровнем зарплаты и очень туманными перспективами трудоустройства. А если кто-то считает что программирование, это еще и очень легкая работа, на которую можно быстро выучится по книжкам – лучше просто плюньте мне в лицо. Это будет быстрее, я утрусь и разойдемся.