Дмитрий Мишин из Рязани начинал свой путь в IT на позиции тестировщика, но еще с университета хотел стать разработчиком. Два года он искал баги на работе, а в свободное время самостоятельно изучал .NET.

Сейчас Дмитрий работает Senior .NET-программистом. Он рассказал, как у него получилось перейти из тестирования в разработку.



Как я стал тестировщиком


Я закончил университет по специальности “Проектирование электронно-вычислительной аппаратуры” в 2005 году. На последних курсах понял, что работать по профессии не буду – учеба за пять лет так и не смогла вдохновить. Тогда я и решил развиваться в сторону IT.

Обычно студенты присматриваются к работе, учась на последних курсах – я поступил так же. На пятом курсе пришел в VDI – самую крупную IT-компанию в Рязани, которая год спустя объединилась с EPAM. У них были бесплатные курсы разработчиков, но в тот момент набор туда был закрыт. Зато формировалась группа по тестированию. В 2005 году почти никто не слышал о тестировщиках – в Рязани уж точно. И всё равно я решил записаться в группу. Решил, что начну с тестирования, а потом придумаю, как перейти в разработку.

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

Я знал, что в EPAM есть собственные курсы разработчиков. В основном в группы набирали старшекурсников технических вузов. Я пошел к руководству и попросился на обучение – до такой степени мне наскучило то, чем я тогда занимался. Мне предложили два направления на выбор – Java или .NET. Я выбрал второе, потому что уже начинал самостоятельно изучать С# и .NET.

С чего начать изучать .NET


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

  • Определитесь с приоритетами

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

  • Не знаете, с чего начать изучать .NET, – пройдите курсы

Выбирайте те, где помимо теории предусмотрены практические задания и их детальный разбор. Онлайн-курсы по .NET можно найти на Pluralsight, Udemy, Codeschool, Lynda, Microsoft Virtual Academy.

Если вы живете в городе, где есть учебный центр EPAM, можно попасть на бесплатные курсы по .NET. Они, конечно, стали более продвинутыми по сравнению с теми, на которых учился я. Программа меняется каждый год и тесно связана с производством.

  • Читайте книги

Советую начать с этих:

Эндрю Троелсен «C# и платформа .NET»
Джеффри Рихтер «CLR via C#»

  • Разберитесь с документацией

Внимательно изучите MSDN, C# Language Specification, SQL Server Books Online. Знание документации поможет в дальнейшей работе.

  • Прокачивайте английский

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

Как развиваться новичку


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

Вот что я советую делать программистам, которые, как и я тогда, только начали работать на проекте:

  • Продолжайте читать книги

Когда продвинетесь в обучении, обратите внимание на эти:

Jon Skeet «C# in Depth»
Joseph Albahari «C# in a Nutshell»
Роберт Мартин «Чистый код»
Стив Макконнелл «Совершенный код»

  • Изучайте open-source проекты

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

  • Общайтесь с более опытными разработчиками

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

Сначала вам будут давать самые простые задачи – пофиксить баги, изменить UI, реализовать несложную бизнес-логику. Будьте к этому готовы и не пытайтесь сразу просить чего-то более интересного. Чем больше вы будете вовлечены в процесс, тем быстрее вам начнут давать более сложные задачи. Со временем в голове выстроится целостная картина проекта и вы поймете, что всю громаду кода можно свести к элементарным структурам.

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

  • Будьте открытыми новому

Путь программиста – это постоянное развитие, и я стараюсь следовать этому принципу. Сегодня, например, большим спросом пользуются full-stack разработчики. На текущем проекте мне приходится работать с HTML, CSS, JavaScript, Typescript, React, Redux.

Навыки тестировщика также помогают в работе. Я более ответственно и внимательно отношусь к своему коду, всегда самостоятельно тестирую то, что написал. Так что те два года в QA-отделе не были потерей времени.

Я уже 13 лет работаю в IT, но так и не испытал озарения в духе “вот теперь я наконец-то стал настоящим программистом”. До сих пор есть задачи, которые вызывают шок и непонимание. Над ними нужно думать, пытаться подойти с разных сторон. И этот цикл “от неподъемных задач – к озарению” не заканчивается. Уверен, что каждому разработчику это знакомо.

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


  1. AxisPod
    10.04.2018 14:55

    Рихтера новичку? Вот прям так сразу его и напугать? Зачем? Рихтера читать уже следует позже, когда поверхность будет изучена.


    1. vdar
      10.04.2018 15:45
      +1

      Поэтому для новичка Троелсен, а потом Рихтер. Вполне нормально


      1. AxisPod
        11.04.2018 20:03

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


    1. Trediol
      10.04.2018 15:55
      +1

      Читал Рихтера, когда начинал изучать .NET с нуля не имея за плечами ни дня опыта коммерческого программирования + параллельно смотрел курсы ITVDN. Зашло нормально, причем потом все книги «для новичков» типа Троелсена или Шилдта казались ну уж очень поверхностными.


      1. Free_ze
        10.04.2018 16:51

        Что именно означает «зашло» для вас?) Просто прочесть, как музыку послушать — можно. Но сложно представить, чтобы человеку без достаточно глубокого ИТ-бэкенда было бы там все досконально понятно вот так сходу, ибо часть информации про организацию памяти в ОС, потоков и прочих штук просто прошло бы мимо. А смысл такого чтения?
        Я ее, наверное, суммарно раза три прочел, поднимая то ту, то иную главу, после общего прочтения, ведь даже там некоторые вещи подаются достаточно сжато в духе "… ну вы поняли", требуют огугливания и еще пары книжек. Ну и не супермен, конечно, достаточно концентрированная информация требует время на усваивание.

        не имея за плечами ни дня опыта коммерческого программирования
        Коммерческое программирование языку не учит.

        все книги «для новичков» типа Троелсена или Шилдта казались ну уж очень поверхностными
        Они больше про BCL API и синтаксис, а Рихтер вещает с позиции CLR. Очевидно, что если уж получилось вытянуть «CLR via C#», то остальные книжки/главы про ядро языка читать смысла никакого нет.


        1. Trediol
          10.04.2018 17:51

          Что именно означает «зашло» для вас?)

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

          Просто прочесть, как музыку послушать — можно.

          Я совершенно не утверждаю, что CLR via C# — книга, которую можно проглотить за пару вечеров под бокальчик пива. Отнюдь — эта книга заставляет тебя читать вдумчиво, обращая внимание на все детали и да, то и дело обращаться к гуглу, но это не делает ее нереальной для изучения новичку в C# и .NET в целом. Всё субъективно.

          Но сложно представить, чтобы человеку без достаточно глубокого ИТ-бэкенда было бы там все досконально понятно вот так сходу

          Глубокий ИТ-бэкенд это понятие растяжимое. Я на тот момент учился в бакалавриате на АСУшника. Нам преподавали всякие джавы, плюсы, алгоритмы, базы данных. Достаточный ли это ИТ-бэкенд?:) Да, для человека совсем далекого от ИТ подобные книги будут сродни китайской грамоте, но я себя к таким на тот момент уже не относил.

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

          Я бы сказал так, новичку потребуется больше усилий, чтобы понять CLR via C#, нежели закоренелому ИТшнику. Но это совершенно не означает, что это нереально сделать. Было бы желание.


        1. Germanets
          11.04.2018 14:13

          Коммерческое программирование языку не учит.
          эмм, это как вы пришли к такому выводу?)


          1. Free_ze
            11.04.2018 14:29

            Логически) Без знания языка человек на проекте бесполезен, а то и опасен. Можно не знать API популярных библиотек, архитектурных подходов и вспомогательных инструментов, но если есть проблемы с пониманием базовых конструкций языка, то он валится на первых вопросах технического собеседования, работа просто не светит. Для такого уровня часто устраивают придворные курсы и стажировки с возможностью последующего трудоустройства.


    1. alexs0ff
      10.04.2018 16:12

      почитать можно, но зайдет это только с опытом. А тогда и второй раз.


      1. AxisPod
        11.04.2018 20:08

        Рихтера читал уже поздно, C# знал достаточно хорошо, но всё же нашёл несколько моментов. Но такой подход вполне годный, согласен с вами.

        Именно так читал Александреску «Modern C++ Design», язык конечно другой. На момент прочтения уже прочитал Джефа Элджера «C++ for Real Programmers», понимал шаблоны, но магию с первого раза не осилил. Второй раз взялся читать только через год и пришло озарение)


  1. DrPass
    10.04.2018 16:02
    +1

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


    1. concelgoger
      10.04.2018 16:58

      Согласна с вами. Если бы это была статья из песочницы, то можно как-то понять. Но в рамках блога от Epam — непонятно. Максимум как отзыв на курс.


  1. redskif
    11.04.2018 10:31

    Надеюсь, когда нибудь я напишу статью на тему «Как я стал тестировщиком а потом и разработчиком вопреки Epam-у». На курсы по тестированию в 2011 году не взяли, сейчас пошел 2 год как я тестировщик. В феврале не взяли на курсы по JS…


  1. jetcar
    12.04.2018 08:29

    для меня как для програмиста самым эффективным оказалось попасть в проект где опытнее меня никого не было, а делать надо было много, быстро и качественно чтоб потом не переделывать, и буквально за год дорос до того чтоб смог себя называть лидом/архитектом, а до этого 5 лет тупо программировал и не понимал почему иногда более опытная архитекторша заморачивается вроде над простыми тасками, которые за полдля можно залепить, теперь я и сам такой, перед тем как что-то делать надо подумать, а можно ли это потом будет расширить изменить да ещё и так чтоб не переделывать весь код и чтоб всё оставалось понятно как работает даже джуниорам, а ведь раньше мог сотни строк кода захерачить лишь бы оно заработало не думая о сложности и как потом с этой простынёй разбираться