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



Взял первое, что предложили


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

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

И все же это может оказаться плохой идеей. Моя первая работа была далека от идеала, как в плане профессионального роста, так и в плане удовольствия от процесса. Разработчики руководствовались девизом «и так сойдет», и особо напрягаться было не принято. Все старались свалить вину друг на друга, и мне часто приходилось срезать углы, чтобы уложиться в очень сжатые сроки. Но самое худшее — я абсолютно ничему не учился.

На собеседованиях я пропускал все звоночки мимо ушей, так меня завораживала перспектива устроиться на работу. Если какие-то сомнения и возникали, все они вылетели у меня из головы, как только я услышал, что меня берут! Да еще на хорошую зарплату!

И это было большой ошибкой.

Первая работа имеет огромное значение. Она дает общее представление о том, каково это — быть настоящим программистом, а опыт и обучение, которые вы от нее получите, могут заложить базу для всей будущей карьеры. Именно поэтому необходимо как следует все разузнать о вакансии и работодателе, прежде чем соглашаться. Тяжелый опыт, плохие наставники — этого вам точно не нужно.

  • Поищите информацию о компании. Походите по сайтам с отзывами, загляните на официальный сайт, просто пошерстите Интернет и пособирайте отзывы. Так вы лучше поймете, соответствует ли компания вашим потребностям и целям.
  • Расспросите знакомых. Если кто-то из вашего круга работал на этого работодателя или знает кого-нибудь из штата, поговорите с ними лично. Выясните, что им нравилось, что не нравилось и как они в целом оценивают опыт.

Не задавал нужные вопросы на собеседованиях


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

  • Спросите о процессе разработки (каким методологиям они следуют? проводится ли инспекция кода? какие применяются стратегии ветвления?)
  • Спросите о тестировании (какие тесты проводятся? есть ли специальные люди, которые занимаются только тестированием?)
  • Спросите о корпоративной культуре (насколько все неформально? предусмотрена ли какая-то поддержка для джуниоров?)

Не определился с траекторией движения


Несомненно, путь к становлению опытного разработчика сильно петляет. Сейчас есть возможность выбирать из множества языков, фреймворков и инструментов. Моя ошибка в начале карьеры состояла в том, что я пытался освоить всё. Как ни смешно, привело это только к тому, что я ни в чем особо не продвинулся. Сперва схватился за Java, потом за JQuery, дальше перешел к C#, от него — к C++ … Вместо того, чтобы выбрать один язык и бросить на него все силы, я скакал с пятого на десятое, просто по настроению. Могу вас заверить, это крайне неэффективная схема обучения.

Я бы добился лучших результатов и быстрее бы двигался по карьерной лестнице, если бы сразу определился с траекторией, то есть определенным набором технологий, и сосредоточился на них. Например, если вы фронтендер, освойте JavaScript, CSS/HTML и какой-нибудь фреймворк, на ваш выбор. Если занимаетесь бэкендом, опять же, возьмите один язык и проштудируйте его как следует. Необязательно владеть и Python, и Java, и C#.

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

Изощрялся в коде


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

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

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

Забывал, что есть жизнь вне кода


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

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

Избегал говорить: «Я не знаю»


Застрять в процессе решения какой-то проблемы или выполнения задачи — дело обычное, с этим сталкиваются даже самые сениористые сениоры. Когда я был джуниором, я говорил: «Я не знаю» реже, чем следовало, и в этом был неправ. Если кто-то из руководства задавал мне вопрос, а я не знал ответа, я старался напустить тумана, вместо того чтобы просто это признать.

Мне казалось, если я скажу: «Не знаю», у людей сложится впечатление, будто я вообще не разбираюсь в том, что делаю. На самом деле, это вовсе не так, всеведущих не бывает. Поэтому если вас спрашивают о чем-то, чего вы не знаете, так и говорите. У подобного подхода сразу несколько плюсов:

  • Это честно — вы не вводите спрашивающего в заблуждение
  • Есть шанс, что вам объяснят и тогда вы узнаете что-то новое
  • Это вызывает уважение — не всякий способен признать, что ему что-то неизвестно

Спешил продвинуться


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

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

Моя ошибка заключалась в том, что я досадовал на эти мелкие задачи и это отвлекало меня от работы. Запаситесь терпением, делайте все, что попросят, на совесть, и скоро вам перепадет что-нибудь поинтереснее.

Не включался в сообщество и не обзаводился связями


У разработчиков прекрасное сообщество: они всегда готовы помочь, дать обратную связь и даже подбодрить. Программирование — сложная штука и временами очень выматывает. Для меня период работы джуниором прошел бы проще, если бы я с самого начала стал активно общаться с коллегами.

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

Выберите сообщества, которые вызывают у вас интерес — в числе вариантов могу назвать freeCodeCamp, CodeNewbies, 100DaysOfCode — и вливайтесь! Также можете посещать местные митапы у себя в городе (поищите на meetup.com).

Наконец, таким путем вы сможете обрасти профессиональными связями. По сути, связи — это просто те люди из вашей отрасли, с которыми вы общаетесь. Зачем это нужно? Ну, скажем, вы когда-нибудь захотите сменить работу. Если обратитесь к своим связям, кто-нибудь, возможно, посоветует вам подходящую вакансию, а то и порекомендует вас работодателю. Это даст вам весомое преимущество на собеседовании — за вас уже замолвили слово, вы больше не «очередное резюме из стопки».

На этом все, спасибо за внимание!

Комментарии (21)


  1. jacksparrow
    12.04.2019 14:35
    +2

    Выскажусь о двух пунктах: «Не задавал нужные вопросы на собеседованиях»,«Не определился с траекторией движения».
    1) Это банально приходит с навыком, статьи — какие вопросы задать на собеседование, дадут меньше трети понимания, как реагировать на ответы. Кусок жизненного опыта с набиванием шишек не так тривиально перескочить. Вопрос о методологии, если вы не работали по скраму, что вам даст ответ, что у нас скрам? Быть может мы скрамом, по незнанию считаем канбан. Тут стоит спрашивать, то что актуально для вас.
    — Сколько человек в команде?
    — Как выстроено менторство?
    — Насколько широкий спектр задач ляжет на плечи?

    2) Для первой работы это более, чем нормально. Если вы не знаете, что вам интересно, как вы сформулируете свой путь развития? Такую вольность можно себе позволить в начале карьеры. В этот момент намного проще поменять сферу, к примеру, с бэкенда на фронт. Это выйдет с меньшей потерей денег и квалификации.


    1. so1ov
      14.04.2019 11:02

      По пункту 2 — по моему мнению, человек на выходе из института должен бы знать, чем он хочет заниматься, хотя бы иметь какой-то ранговый список, а не «куда возьмут».
      Отсюда высказывания в духе «у молодежи два пути — веб и мобайл».


      1. jacksparrow
        14.04.2019 11:30
        +1

        Могу парировать, в институт в 17-18 лет поступают люди не имеющие опыта работы и выбирающие специальность по не связанным с ним критериям. Многие мои коллеги имеют не айти образования, например, я инженер конструктор. В вопросе поиска первой работы, ожидания «стране нужны инженеры» разбились об количество вакансий, неудобство их расположения, график и зарплаты соизмеримые с макдональдсом, несмотря на образования в 6 лет.
        Я сделал акцент на первой работе, многие специалисты начинают свой карьерный путь в институте. По завершению института можно иметь список, но уже имея опыт работы. Без опыта, список — набор предположений. И получатся ожидания отличные от реальности.
        Про пути, есть мнение, что надо попасть в айти, дальше будет легче. Веб и, быть может, мобайл обладают колоссальной базой курсов, статей, да и сразу видеть результат своей работы — приятно. Еще частый вариант — тестирование. В остальные сферы стартовать приходится с техническим бэкграундом, а это уже сложнее.


  1. muhaa
    12.04.2019 17:25

    Немного другая система координат:
    1. Не слушайте советов, которые люди дают на основании собственного опыта (особенно таких как выше, и таких как в этом сообщении — тоже не особо). Никто не может войти в одну реку дважды, эти люди не знают кем стали бы без своих «ошибок». Изучайте ситуацию сами и действуйте согласно вашему текущему представлению.
    2. В начале карьеры не смотрите на зарплату, смотрите на работу. Хороший вариант, если у работодателя создастся противоречивое впечатление, что с одной стороны вам «хлеба не надо, работы давай», что вас нужно держать за рубашку, чтобы вы не перетянули на себя всю работу до которых сможете дотянутся и одновременно что если он рискнет заплатить вам меньше чем вы стоите, в определенный момент ваша тонкая натура (существование которой вы якобы не признаете, а работодатель догадывается) не выдержит и ему придется искать другого дурака. Подобная позиция позволит развиваться максимально быстро. Как ставить себя дальше будет видно.
    3. Если никуда особо не берут, пойдет любая работа. Необратимых изменений мозга в IT-карьере не бывает. Идеи о том что с самого начала нужно делать все правильно исходит отчасти из других областей (не инженерных), отчасти от бездельников, которые ищут оправдание своему бездействию или своим прошлым неудачам.
    4. Хватайтесь за любые амбициозные задачи, которые предлагает наниматель, даже если ощущаете, что у вас нет необходимых навыков и знаний, но по вроде должно хватить интеллекта и энергии для достижения результата. Потому что на старте вперед вырывается не тот кто умнее и компетентнее, а тот кто берется, делает, ошибается, переделывает и т.д.
    5. При решении любой задачи старайтесь получить максимально возможное представление о проблеме. Человек не робот, чтобы делать все четко по чертежу. Ваш мозг не взорвется, если при этом вы разберетесь в какой-то незнакомой вам области (возможно не IT). Очень трудно взаимодействовать с участниками проекта, которые гордятся тем, что не разбираются ни в чем в кроме своих фреймворков.
    6. Постарайтесь где-то получить опыт полного цикла разработки продукта от постановки задачи до сопровождения. Нормально, если все это сделать вообще в одиночку. Не для обзора технологий, а прежде всего для того чтобы почувствовать как идея воплощается в коде и решает реальные проблемы людей. Очень сложно бывает работать с программистами которые делают продукт который им удобно делать как программистам, а не который действительно решает проблемы заказчиков.
    7. Чем шире ваши IT-знания, тем лучше. Жизнь сложна и многообразна, она периодически подкидывает заманчивые возможности. К ним надо быть готовым. Освоив одну какую-то технологию в совершенстве можно получать много денег, но скоро может начать тошнить от однообразной работы или технология выйдет из моды и что тогда? Изучить одно технологию детально в качестве основной все же придется, чтобы не раздражать своим невежеством коллег.
    8. Все перечисленное выше ориентировано на быстрый рост в начале карьеры прежде всего. Потом такая стратегия может сильно утомлять и быть не оптимальной в плане получения дохода. Но тогда вы уже будете достаточно опытным, чтобы разобраться без чужих советов.


    1. Tangeman
      12.04.2019 19:21

      1. Не слушайте советов, которые люди дают на основании собственного опыта...

      И как же после этого относится к вашим советам, которые следуют дальше? Это ведь тоже «собственный опыт».

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

      А вот совет «не слушать советы» — очень субъективный, ему стоит следовать далеко не в большинстве случаев.


      1. muhaa
        12.04.2019 19:58

        Ok. Хорошо обоснованные и информативные советы можно принимать к сведению, не нужно следовать советам, особенно если не понимаешь ясно как это работает.


    1. webmascon
      14.04.2019 03:57

      > Потому что на старте вперед вырывается не тот кто умнее и компетентнее, а тот кто берется, делает, ошибается, переделывает и т.д.

      Мда. Вот я сейчас разребаю говнокод таких коекакоеров вырвашихся вперед. На дворе 2019 а коекакеры без компетенций вырвались вперед и нагородили спагеттикода аж в 2015


      1. hahenty
        14.04.2019 06:42

        никаких проблем — все при деле.


      1. 411
        14.04.2019 08:24

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


  1. 411
    14.04.2019 02:02
    +1

    Не включался в сообщество и не обзаводился связями

    8 лет работаю, до сих пор не нашёл для себя причин включаться в сообщество. Бывал на конференциях, добавлялся во всякие тематические чатики, пытался сидеть на форумах, но так и не уловил смысла всего этого.


    1. webmascon
      14.04.2019 03:54

      Смысл наверное в том что через сообщество можно найти ментора через сообщество можно найти работу


      1. 411
        14.04.2019 08:28

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


        1. asm0dey
          14.04.2019 17:01
          +1

          Вы на обратной стороне шкалы ценностей от меня. С моей точки зерния самые крутые разработчики


          1. Контрибутят в опенсорс (не важно каким способом — коммиты, ишью, собственные петпроджекты)
          2. Стремятся сделать мир вокруг себя лучше, в том числе методом менторства/обучения.


          1. 411
            14.04.2019 22:15

            Ну в опенсорсе я так-то периодически что-то делаю, хоть и не так много, как хотелось бы. И уж точно не считаю это неблагодарным делом. А вот смысла на постоянной основе в своё свободное время помогать различным незнакомым людям не особо вижу. Есть семья, есть друзья, на крайний случай есть коллеги(хотя в большинстве случаев в рабочее время). Откуда время брать менторить начинающего Васю из другого города? И почему этот Вася не идёт к коллегам или преподам, которые могут быть заинтересованы в его прогрессе?


            1. asm0dey
              14.04.2019 22:55

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


              1. 411
                14.04.2019 23:44

                Так опять же, интересными шутками время позаниматься всегда находится. Не совсем понимаю, чем интересен менторинг в такой постановке вопроса.

                Просто я вообще в первый раз слышу, что для «войти в айти» нужно ментора искать. Обычно люди сами изучают технологии +универ даёт что-то, некоторые периодически спрашивают знакомых и преподов, а потом находят работу. Где вообще распространена такая практика? Может я упускаю какую-то полезную инициативу, которую смогу советовать людям, так-то у меня много знакомых хотят в айти перейти.


                1. asm0dey
                  14.04.2019 23:46

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


                  1. 411
                    15.04.2019 07:58

                    Спасибо, расскажу знакомым.


        1. bano-notit
          15.04.2019 00:07

          А статья для людей, которые только начинают свой путь.


        1. webmascon
          16.04.2019 02:54

          Давайте узнаем зачем шипилев пангин мартин фаулер кент бек роберт мартин мартин томпсон пишут книги выступают на конференциях публикуют статьи и блоги. Ведь их читают всякие незнакомые джуны? Может быть вы сейчас не совсем представляете а с возрастом потом поймете зачем?


  1. Lissov
    14.04.2019 23:37

    Не задавал нужные вопросы на собеседованиях

    А откуда джун должен знать, какие вопросы нужные? И получив ответ про процессы и тестирование, как понять, хорошо это или плохо?
    Из личного опыта: считаю что мне повезло, что моя первая работа была по моим сегодняшним меркам неидеальной. Это позволило в будущем понять, почему делать «правильно» это правильно и полезно. Лучше один раз пережить чем 100 раз прочитать.
    Избегал говорить: «Я не знаю»

    И это тоже неизбежно для джуниора.
    Из личного опыта: было очень полезно один раз пережить последствия такого «избегал говорить». Опять таки, на своей шкуре учишся очень хорошо.
    Общее ИМХО — «джуниор» это не только недостаток знаний, но и недостаток опыта. А опыт нельзя получить из книг и статей, можно только пережить. Потому советы хорошие, но скорее помогут джуниору быстрее понять что он делает не так, чем избежать этих ошибок.