Привет всем,
Особенно студентам, начинающим программистам и всем, кто хочет ими стать! Сегодня я расскажу, как пройти путь от абсолютного нуля до Senior Developer меньше, чем за 3 года. Надеюсь, мой бесценный опыт будет кому-нибудь полезен (и поможет не набивать шишки там, где не надо).
Сразу оговорюсь, что я не отношусь к той чудесной части человечества, которая начала программировать в детстве или хотя бы в юности. Вплоть до конца школы я была таким заядлым гуманитарием, что аж противно. Моё поступление в некий неплохой петербургский технический вуз – ирония судьбы, подробности же к делу не относятся.
Итак, имеется двадцатилетний студент четвёртого курса, обучающийся по специальности «Информационные технологии в образовании» со специализацией «Управление проектами». В пассиве – очень скромное количество и качество обучения программированию в вузе и гуманитарное прошлое. В активе – огромное желание стать Java-программистом. Задача – реализовать свою мечту. Алгоритм действий приведён ниже (на естественном языке, но желающим могу, в принципе, привести диаграмму. Или вообще псевдокодом воспользоваться).
Шаг первый
Всячески использовать возможности обучения, подвёртывающиеся в вузе. У меня это были курсовые работы на Java. Постановка задачи для курсовой работы была примерно такой: «Вот тебе ТЗ, вот тебе книга – делай!» Лучше всего выбирать более сложную задачу, более сложную реализацию, чтобы получить хоть какой-то опыт, которым можно будет оперировать при работе с работодателем.
Шаг второй.
Обучаться самостоятельно. Это очень важно. Настоящие специалисты учатся всю жизнь, поэтому и начинать нужно как можно раньше. Здесь главное – найти подходящие книги, и в этом месте я набила свою первую шишку – это было активное использование курсов на сайте Интуит. Интуит – это хорошо, конечно, но лучше бы я вместо этого пять раз «Философию Java» прочитала. И ещё пару раз «Основы объектно-ориентированного проектирования» Мейера.
Шаг третий – самый важный
Как можно раньше устроиться на работу. Теоретические знания и студенческие работы – это всё хорошо, конечно, но далеко на них не уедешь. Здесь я набила вторую шишку – я тянула с этим довольно долго (идея стать Java-программистом пришла мне на четвёртом курсе, а устроилась я на работу только на пятом). Всё время казалось, что я не готова, — то книгу надо дочитать, то курс на сайте пройти… Так вот, всё это бред. Студент, находящийся в поисках своей первой работы, обладает рядом преимуществ, надо только их правильно преподнести.
Прежде всего, не стоит стесняться своей неопытности, поскольку здесь пригодится то, что было наработано на шаге первом – какие-никакие, а реальные программы. Можно и нужно говорить и о своих теоретических знаниях. Ну, а самое главное, — подчеркнуть то, что выгодно для работодателя: ты готов заниматься сколь угодно нудным кодерством, чтобы получить необходимый опыт в реальном проекте. Тогда более опытные программисты смогут заняться интересными, а самое главное, важными задачами, и все будут в плюсе. И при этом платить тебе надо сущие копейки. Когда я устроилась на свою первую работу (тогда мой опыт сводился как раз к курсовой работе на Java, а из серьёзных книг по языку был прочитан только Шилдт), я была счастлива до чёртиков: надо же, меня будут учить Java, да ещё и платить за это!
Шаг четвёртый
Когда собеседование позади, и ты наконец-то задействован в реальном проекте, главное, как ни парадоксально, вовремя из него уйти. Первое время тебе, конечно, там круто. Тебя учат, ты каждый день профессионально растёшь, начинаешь решать всё более и более сложные задачи, при этом получаешь возможность общаться с опытными специалистами, советоваться с ними по выбору профессиональной литературы и т.п. Но рано или поздно, в зависимости от того, насколько быстро ты развиваешься, процесс твоего роста приостанавливается. Всё это из-за того, что тебя приняли на позицию Junior Developer-а, который решает нудные задачки по программированию, и, собственно, ты изменился, а проект – нет. Те задачи, которые полгода-год-полтора назад казались тебе интересными, сейчас так же скучны, как были они тогда для старших товарищей, для разгрузки которых тебя, собственно, и наняли. Хорошо, если ты попал в компанию, которая предполагает постоянный рост своих сотрудников, но в моём случае всё было иначе, поскольку там самым простым способом перейти с Junior Developer на Middle – это уволиться, а потом снова наняться. Чтобы понять это, я потратила целый год в попытках то добиться повышения сложности задач и заодно зарплаты (удалось однажды, но ненадолго: вскоре я снова переросла этот уровень), то устроиться в соседний отдел, где вроде бы требовались именно Middle Developer-ы. В итоге пришлось уволиться. Но мне бы хотелось ещё раз повторить: не стоит ждать повышения! Лучше вообще в качестве превентивной меры регулярно ходить по собеседованиям, но об этом – в шаге пятом.
Шаг пятый
И вот ты – молодой программист с неким опытом работы и большим желанием доказать миру всю глубину своей крутизны. Конечно, проще всего это сделать, пройдя собеседование на какую-нибудь привлекательную позицию.
На этом шаге мой опыт составлял чуть больше двух лет. Профессиональный рост на моей работе остановился примерно через год после того, как я на неё устроилась, и поэтому единственным спасением было постоянное саморазвитие: чтение книг, посещение семинаров, etc. Следует заметить, что собеседование само по себе содержит некоторую обучающую составляющую, поскольку если ты чего-то не знаешь, то можно или узнать об этом у интервьюера, или – позднее – из других источников. Хотя бы поэтому стоит ходить по собеседованиям, даже если не находишься в поисках работы. К тому же интервью держат тебя в курсе событий, позволяют знакомиться с интересными людьми и проектами, ну и, наконец, чем чёрт не шутит, может, и правда удастся найти интересную позицию? Ещё один довольно полезный совет: стоит устанавливать в резюме желаемую зарплату побольше. Тогда тебя будут рассматривать как кандидата на более серьёзные позиции, и в таком случае скучно уж точно не будет!
Искать новую работу можно не только на соответствующих сайтах типа hh.ru, но и на различных ярмарках вакансий и фестивалях. Кстати, свою нынешнюю работу я нашла благодаря фестивалю НайтиIT весной 2012, перескочив с уровня Junior Java Developer сразу на Senior.
Подытоживая всё вышесказанное, хотелось бы сделать следующие выводы:
1. Учиться, учиться и ещё раз учиться! Теоретически, практически, самостоятельно, на курсах – как угодно! Главное – в режиме non-stop!
2. Общаться, общаться и ещё раз общаться! С коллегами, специалистами в смежных областях, интервьюерами, лесторами… Это тоже вариант обучения.
3. Регулярно ходить по собеседованиям как тогда, когда ты неопытный студент, как тогда, когда ты уже опытный специалист.
И самое главное – не бойтесь ставить перед собой значительные цели. Стреляйте по звёздам, тогда уж точно попадёте как минимум в луну!
Автор: EliaNekipeloff