Я несколько лет имел удовольствие координировать и развивать молодых разработчиков. Большинство новичков не испытывают нехватки навыков программирования, но им не хватает дальновидности. Это касается как написания кода, так и построения своей карьеры.

Что нужно делать первые несколько лет?

Большинство выпускников попадают либо в производственную, либо в консалтинговую фирму. Подумайте дважды, если вы хотите выбрать что-то другое. Преимущество консалтинга в том, что вы можете поработать с большим количеством проектов за короткое время. В производственной компании вы можете увидеть полное развитие какого-то конкретного продукта и все преграды, которые обычно встают на пути.

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

Почему? Потому что консультантов редко нанимают для неактуальных задач. Они работают в качестве дорогих “наёмников” для воплощения наиболее важных проектов, которые не доверяют внутреннему персоналу компании. Персонал компании обычно занимается неблагодарной работой, осуществляя поддержку кода, написанного консультантами, вне зависимости от его качества.

Какая запись в резюме выглядит лучше:

Член ведущей команды по написанию Java кода для запуска {крупного проекта Х} в оговоренные сроки и без превышения сметы.

или:

Писал Java код для устранения ошибок для компании {крупная компания Х}.

Первая выглядит намного привлекательнее. Несколько лет работы в консалтинговой компании, и у вас за плечами уже будет множество проектов. Это даёт вам больше строчек в резюме и больше тем для разговора на собеседованиях. Специалисты технической поддержки не могут таким похвастаться. Если вы молодой разработчик, то, вероятнее всего на вашей первой должности вы будете заниматься тех. поддержкой, но это не очень хорошо для карьеры. Руководство обычно считает специалистов технической поддержки чистой тратой средств, и потому не хочет им много платить. Кроме того, работая в тех. поддержке, немногому можно научиться. Также, возможно, однажды руководство решит перетряхнуть базу унаследованного кода, а вместе с ней и команду поддержки.

Совет: Старайтесь в качестве первой работы не идти в команду поддержки, если есть такая возможность. Работать в производственной компании хорошо, но только если вы работаете в команде, создающей новые продукты.

Если у вас есть выбор и необходимые навыки, выбирайте работу, которая даст вам доступ к наибольшему количеству проектов, менеджеров и сфер деятельности. Это вам могут дать консалтинговые компании и агентства.

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

Понимание корпоративной среды

Политика отстой, но вам всё равно нужно разбираться в ней

Ещё одно преимущество работы в консалтинговой фирме — это политика. Вы можете сейчас шарахнуться в ужасе, но прочитайте до конца. Всем известна фраза “В этом мире непреложны лишь две вещи — смерть и налоги”. Добавьте сюда ещё и политику. Нравится вам это или нет, в какую бы компанию вы не пошли, там всё равно будет своя политика. В консалтинговой фирме вы будете следовать не только политике своей компании, но и других. Вы не должны это любить, но вам придется научиться это делать. На самом деле, чем вы больше ненавидите политику, тем важнее для вас разбираться в ней, потому что тогда вы сможете лучше избегать всю эту чушь.

К тому же, эти компании обычно ориентированы на результат. Если вы выполняете свою работу качественно, то об этом знают во многих других компаниях, а не только в той, в которой вы фактически работаете (и получаете деньги).

Разбирайтесь в сфере, в которой работаете

Программное обеспечение создают, чтобы решать проблемы бизнеса. Студенты обычно изучают алгоритмы и анализы их сложности, а потом, начиная работать, понимают, что это им не нужно. В большинстве языков, красно-черные деревья и прочее уже используется по умолчанию. А вся суть работы состоит в том, чтобы ПО быстро разрабатывалось и хорошо работало. А так как большинство программ — это несколько библиотек контактирующих с несколькими сервисами, ваша работа идет на более высоком уровне абстракции.

Так, если значение имеет не выполнение работы на этом низком уровне, то что тогда? Решение задач. А чтобы правильно их решать, нужно понимать, почему они появляются, и кому необходимо решение этих задач. Это и означает понимание сферы своей деятельности.

Таким образом, один из легчайших способов выделиться и проявить себя, как разработчик — это изучить свою сферу деятельности и своего потребителя. Я видел множество разработчиков, которые выделялись именно за счет этого, но при этом практически невозможно выделиться только благодаря умению писать код. Возможно, конечно, но это случается один раз из десяти.

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

Собеседования

Собеседования разработчиков бесполезны. Пункты интервью часто меняются, но ни один из них не помогает находить хороших разработчиков. Частично это происходит потому, что у компаний нет четкого понимания “хорошего” разработчика. А если компания не понимает, кто лучше подходит на работу, вам лучше считать, что проводящий собеседование человек тоже этого не понимает.

 

Вот, как это обычно бывает: HR-отдел сообщает команде разработчиков, что кто-то придет на собеседование. Одному из разработчиков дают задание “провести с новичком собеседование”. Он вспоминает, как проходило его собеседование, ищет в Интернете “вопросы на собеседование для разработчика” и выписывает несколько из них за 10 минут до вашего прихода. Ваше собеседование — это то, что он нашел в Интернете, плюс несколько вопросов про ваш прошлый опыт.

Этот метод исключительно неэффективен. В лучшем случае, они поймут что вы не совсем плохи, потому что смогли что-то расписать на доске. Или, например, вручную воспроизвели хорошо известный алгоритм, хотя вы никогда не будете делать этого в работе. А если будете, это будет ужасной идеей.

Как на самом деле принимается решение о приёме на работу

В большинстве компаний, приём специалиста на работу на 80% зависит от личных качеств, и только на 20% от того, как он хорош в программировании. Часто люди проходят собеседование, а потом получают ответ от компании, что им нужен “специалист с большим опытом в Х”. Когда так происходит, проблема обычно в личных качествах. Если же вы смогли им понравиться, вам ответят что-то вроде “Ну, он не разбирается в Х, но, похоже, он РЕАЛЬНО хороший специалист, и раньше работал с Y, который, в принципе, очень похож, поэтому он подойдет”.

Если вас не взяли на работу, но вы думаете, что в техническом аспекте всё было хорошо, проблема в личных качествах. Самое главное — это харизма.

Вы можете подумать, что это нелогично, но это не так. Когда вы начнете работать, вы более 40 часов в неделю будете проводить в команде. Всем хочется работать с людьми, с которыми им комфортно. Принимая вас, команда получает не только дополнительную производительность, но и не необходимость вынужденно общаться с кем-то, кого они только что узнали. Поэтому развивайте свои навыки программирования, но также не забывайте о навыках общения с людьми.

Обратная связь и запись достижений

Каждый месяц записывайте свои достижения. Смогли улучшить покрытие блочных тестов — запишите. Были на встрече с высшим руководством — запишите. Начали новый проект, тоже записывайте. Это пригодится вам, когда придет время проверки или отчета, а также для вашего резюме, когда вы захотите двигаться дальше.

Каждые три месяца не стесняйтесь собирать обратную связь у своих коллег и вообще у всех, с кем вы регулярно взаимодействуете. Прислушивайтесь к тому, что они говорят. Цикл обратной связи в компаниях абсолютно бесполезен. Обычно, обратную связь продумывают и планируют также хорошо, как и собеседования. Ваш босс думает о вас максимум всего один час! Через силу пишет о том, что благодаря вам получила компания, нажимает “Сохранить” и вздыхает с облегчением. Редкая компания и редкий менеджер действительно заинтересован, что бы его сотрудники развивались. Вы поймете, что встретили такого менеджера, когда регулярно будет получать обратную связь от него без принуждения от отдела по работе с персоналом.

Вывод

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

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

Продолжайте двигаться только вперед.

Перевод статьи Brenn: Advice to new software developers

Предыдущая статьяСумасшедший способ проверить, является ли число простым, используя регулярное выражение
Следующая статьяJava для начинающих: часть 4 из 4