В начале карьеры разработчика часто бывает страшновато: перед тобой встают незнакомые проблемы, многому нужно научиться и приходится принимать сложные решения. И в некоторых случаях мы в этих решениях ошибаемся. Это вполне естественно, и грызть себя по этому поводу не стоит. А вот что стоит делать, так это запоминать свой опыт на будущее. Я — разработчик-сениор, который допустил в свое время уйму ошибок. Ниже я расскажу о восьми самых серьезных из них, которые совершил, когда был еще новичком в разработке, и поясню, как их можно было избежать.
Взял первое, что предложили
Когда учишься писать код своими силами или заканчиваешь обучение в университете, получить первую работу по специальности становится одной из главных целей. Что-то вроде света в конце длинного туннеля.
А найти работу, между тем, непросто. Людей, которые претендуют на вакансии джуниоров, все больше и больше. Приходится составлять улётное резюме, проходить через целую серию собеседований, и нередко весь этот процесс сильно затягивается. Учитывая все это, неудивительно, что любое предложение о работе вызывает желание уцепиться за него обеими руками.
И все же это может оказаться плохой идеей. Моя первая работа была далека от идеала, как в плане профессионального роста, так и в плане удовольствия от процесса. Разработчики руководствовались девизом «и так сойдет», и особо напрягаться было не принято. Все старались свалить вину друг на друга, и мне часто приходилось срезать углы, чтобы уложиться в очень сжатые сроки. Но самое худшее — я абсолютно ничему не учился.
На собеседованиях я пропускал все звоночки мимо ушей, так меня завораживала перспектива устроиться на работу. Если какие-то сомнения и возникали, все они вылетели у меня из головы, как только я услышал, что меня берут! Да еще на хорошую зарплату!
И это было большой ошибкой.
Первая работа имеет огромное значение. Она дает общее представление о том, каково это — быть настоящим программистом, а опыт и обучение, которые вы от нее получите, могут заложить базу для всей будущей карьеры. Именно поэтому необходимо как следует все разузнать о вакансии и работодателе, прежде чем соглашаться. Тяжелый опыт, плохие наставники — этого вам точно не нужно.
- Поищите информацию о компании. Походите по сайтам с отзывами, загляните на официальный сайт, просто пошерстите Интернет и пособирайте отзывы. Так вы лучше поймете, соответствует ли компания вашим потребностям и целям.
- Расспросите знакомых. Если кто-то из вашего круга работал на этого работодателя или знает кого-нибудь из штата, поговорите с ними лично. Выясните, что им нравилось, что не нравилось и как они в целом оценивают опыт.
Не задавал нужные вопросы на собеседованиях
Собеседование — лучшая возможность познакомиться с компанией ближе, так что обязательно заготавливайте вопросы о том, что хотите узнать у сотрудников. Вот пара примеров:
- Спросите о процессе разработки (каким методологиям они следуют? проводится ли инспекция кода? какие применяются стратегии ветвления?)
- Спросите о тестировании (какие тесты проводятся? есть ли специальные люди, которые занимаются только тестированием?)
- Спросите о корпоративной культуре (насколько все неформально? предусмотрена ли какая-то поддержка для джуниоров?)
Не определился с траекторией движения
Несомненно, путь к становлению опытного разработчика сильно петляет. Сейчас есть возможность выбирать из множества языков, фреймворков и инструментов. Моя ошибка в начале карьеры состояла в том, что я пытался освоить всё. Как ни смешно, привело это только к тому, что я ни в чем особо не продвинулся. Сперва схватился за Java, потом за JQuery, дальше перешел к C#, от него — к C++ … Вместо того, чтобы выбрать один язык и бросить на него все силы, я скакал с пятого на десятое, просто по настроению. Могу вас заверить, это крайне неэффективная схема обучения.
Я бы добился лучших результатов и быстрее бы двигался по карьерной лестнице, если бы сразу определился с траекторией, то есть определенным набором технологий, и сосредоточился на них. Например, если вы фронтендер, освойте JavaScript, CSS/HTML и какой-нибудь фреймворк, на ваш выбор. Если занимаетесь бэкендом, опять же, возьмите один язык и проштудируйте его как следует. Необязательно владеть и Python, и Java, и C#.
Так что сфокусируйтесь, определитесь с направлением и составьте план, который позволит вам стать профессионалом на выбранном пути (вот дорожная карта, которая может вам в этом помочь).
Изощрялся в коде
Итак, вы готовите тестовое, чтобы показать работодателю свои умения, или уже взялись за первую задачу на своей первой работе. Вы из кожи вон лезете, чтобы произвести впечатление. Как вернее всего добиться результата? Наверное, продемонстрировать в ходе выполнения ту навороченную технику, которую вы недавно освоили, так ведь?
Нет. Это серьезная ошибка, которую я и сам допускал, и чаще, чем хотелось бы, вижу в работе других джуниоров. Им очень свойственно изобретать велосипед или искать сложные решения в попытке блеснуть знаниями.
Наилучший подход к написанию кода выражен в принципе KISS. Стремясь к простоте, вы получите на выходе понятный код, с которым легко будет работать в будущем (разработчик, который придет вам на смену, оценит).
Забывал, что есть жизнь вне кода
Никогда не «отключаться» — это дурная привычка, которой я обзавелся очень рано. Собираясь домой в конце дня, я регулярно забирал с собой рабочий ноут и часами за ним просиживал, чтобы закрыть задачу или устранить баг, хотя и то, и другое прекрасно могло бы подождать до утра. Как и следовало ожидать, подобный режим вызывал стресс и я быстро перегорел.
Причина такого поведения отчасти заключалась в моем стремлении сделать все максимально быстро. А ведь в действительности мне следовало бы понять, что работа — долгосрочный процесс и за редкими исключениями сегодняшние недоделки спокойно переносятся на завтра. Очень важно периодически переключаться и вспоминать, что жизнь не исчерпывается работой — есть друзья, семья, хобби, развлечения. Само собой, если вам нравится сидеть до рассвета над кодом — ради бога! Но когда это уже не в радость, остановитесь и задумайтесь, не пора ли заняться чем-то еще. Мы ведь не последний день работаем!
Избегал говорить: «Я не знаю»
Застрять в процессе решения какой-то проблемы или выполнения задачи — дело обычное, с этим сталкиваются даже самые сениористые сениоры. Когда я был джуниором, я говорил: «Я не знаю» реже, чем следовало, и в этом был неправ. Если кто-то из руководства задавал мне вопрос, а я не знал ответа, я старался напустить тумана, вместо того чтобы просто это признать.
Мне казалось, если я скажу: «Не знаю», у людей сложится впечатление, будто я вообще не разбираюсь в том, что делаю. На самом деле, это вовсе не так, всеведущих не бывает. Поэтому если вас спрашивают о чем-то, чего вы не знаете, так и говорите. У подобного подхода сразу несколько плюсов:
- Это честно — вы не вводите спрашивающего в заблуждение
- Есть шанс, что вам объяснят и тогда вы узнаете что-то новое
- Это вызывает уважение — не всякий способен признать, что ему что-то неизвестно
Спешил продвинуться
Вы, наверное, слышали поговорку: «Прежде чем бежать, научись ходить». Она нигде так не актуальна, как в сфере веб-программирования. Когда впервые устраиваешься куда-то джуниором, так и хочется взять быка за рога и сразу приняться за какой-нибудь крупный, сложный проект. Проскальзывают даже мысли о том, как бы поскорее заработать повышение до следующего уровня!
Амбиции — это, конечно, хорошо, но на деле джуниору с порога никто ничего подобного не даст. В самом начале карьеры вам, скорее всего, будут доставаться простенькие задачки и баги на исправление. Не самое увлекательное занятие в мире, но куда деваться. Это позволит вам шаг за шагом освоиться в кодовой базе и изучить все процессы. Вместе с тем, ваше начальство получает возможность посмотреть, как вы вписываетесь в команду и что у вас получается лучше всего.
Моя ошибка заключалась в том, что я досадовал на эти мелкие задачи и это отвлекало меня от работы. Запаситесь терпением, делайте все, что попросят, на совесть, и скоро вам перепадет что-нибудь поинтереснее.
Не включался в сообщество и не обзаводился связями
У разработчиков прекрасное сообщество: они всегда готовы помочь, дать обратную связь и даже подбодрить. Программирование — сложная штука и временами очень выматывает. Для меня период работы джуниором прошел бы проще, если бы я с самого начала стал активно общаться с коллегами.
Контакты с сообществом, к тому же, очень полезны для самообразования. Можно делать вклад в проекты с открытым кодом, изучать чужой код, наблюдать, как программисты ведут проект совместными силами. Все это — навыки, которыми вы можете воспользоваться на основной работе и которые со временем сделают из вас хорошего специалиста.
Выберите сообщества, которые вызывают у вас интерес — в числе вариантов могу назвать freeCodeCamp, CodeNewbies, 100DaysOfCode — и вливайтесь! Также можете посещать местные митапы у себя в городе (поищите на meetup.com).
Наконец, таким путем вы сможете обрасти профессиональными связями. По сути, связи — это просто те люди из вашей отрасли, с которыми вы общаетесь. Зачем это нужно? Ну, скажем, вы когда-нибудь захотите сменить работу. Если обратитесь к своим связям, кто-нибудь, возможно, посоветует вам подходящую вакансию, а то и порекомендует вас работодателю. Это даст вам весомое преимущество на собеседовании — за вас уже замолвили слово, вы больше не «очередное резюме из стопки».
На этом все, спасибо за внимание!
Автор: EverydayTools