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

Начну издалека – в детстве мои родители дарили мне огромное количество энциклопедий и книг – на все случаи жизни. Любой повод подарить подарок – книга. Тогда я, конечно, не был им благодарен, а просто воспринимал это как должное. Но со временем, общаясь с другими людьми, я сделал странный вывод: многие не знали того, что знал я, не слышали каких-то имен, понятий, концепций, не читали авторов и не смотрели фильмов. В этот самый момент пришло озарение: вот оно, ЗНАНИЕ. Долгое время я не знал, где можно применить все это, ведь простое общение с людьми никак не оплачивается, а профессии рассказывать интересные истории в то время еще не было (сейчас есть какие-нибудь блогеры, YouTube, TED-ED и др.). Я изучал английский язык, долго и кропотливо, т.к. «это было перспективно и пригодится в будущем» — на тот момент уверенности в будущей профессии, конечно же, не было, поэтому через «не хочу» меня гнали на уроки снова и снова. Сейчас, конечно, я безумно благодарен, что не соскочил в тот момент и успел получить неплохую базу, которая, безусловно, сыграла важную роль в выборе моей будущей профессии.

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

Однако, проснувшись утром, я с удивлением осознал, что в моей голове поселилась назойливая и колючая мысль: «Надо идти в пед (педагогический)». Как она там образовалась: самостоятельно или в результате теневых процессов, как у Менделеева, когда он во сне систематизировал данные, обретя знание таблицы периодических элементов? Этого мне не узнать никогда, но я пошел к родителям, описал им проблему, получил несколько довольно пикантных оценок моих текущих мыслительных процессов, их направления и общего развития, но не отступил.

В конце концов, мы приехали в университет, забрали документы (хотя это было уже, скорее всего, незаконно, т.к. зачисление прошло) и поехали подавать документы в другой ВУЗ. Мой отец тогда был очень коротко подстрижен, только что сделал операцию на глаза и снял очки и в целом, выглядел как типичный «браток из 90-ых», несмотря на 2 высших образования и учительское прошлое. Конечно же, такому колоритному персонажу отказать не смогли. С тех пор я ни разу не пожалел, что поступил именно на факультет иностранных языков.

Работая с детьми, я понял две вещи:

  • Мне это очень нравится, я могу интересно рассказывать, вплетать в рассказ сведения, почерпнутые из книг и энциклопедий и, самое главное, добиваться результата на поприще преподавания английского языка
  • Денег катастрофически не хватает, даже если заниматься подработкой (частные уроки + языковой всесезонный детский лагерь)

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

На протяжении всей трудовой деятельности я рассматривал возможность смены профессии на что-нибудь более актуальное, не связанное с работой с людьми, предприняв около 10 попыток самостоятельного изучения языков программирования. C++, C#, Delphi, Python, Pascal, Java – все это было сложным, непонятным, пугающим, отнимающим время и не приносящим результата. На самом деле у меня просто не хватало мотивации: ни кризис 2008-2009 года, ни проблемы в 2014-2015 не изменили моего отношения к работе. А когда пришло эмоциональное выгорание – стало понятно, что дальше так работать я не смогу, ради детей, которых я травмировать никак не хотел.

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

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

  1. Выбрать наиболее простое, максимально быстрое в плане результата и с самого начала оплачиваемое не менее, чем на предыдущем месте направление работы. Им стала frontend-разработка. Посудите сами: зная английский язык на уровне C2, большая часть кода представляла для меня английские команды вперемешку с синтаксисом, который вполне неплохо запоминался (подгоняемый мыслями в стиле «или это или ты не работаешь совсем»). Результат во фронтэнде виден сразу – это готовая страница. Оплата – тоже неплохая, от 40 тысяч рублей (по данным hh.ru). Моя зарплата на тот момент была около 60-65 + личные подработки ~на 20 тысяч. Этого было мало, но когда тебе надо бороться с собой, чтобы просто прийти на работу – никакие деньги не радуют.
  2. Оплата и план действий: Нацелен же я 60+ рублей, поэтому начал изучать список актуальных для фронтэнда технологий: HTML, CSS, JavaScript (ES5-6), React. К ним прибавились инструменты, облегчающие на разных этапах согласование и работу с кодом: jQuery, Git, SASS, webpack, VS Code. Это позволило наметить план изучения всего этого постепенно, попутно применяя знания в создании сайтов, разборке и воплощении в коде макетов и консультаций с друзьями.
  3. Самообучение: С период с февраля 2019 по июнь 2019 я изучал все это, старательно штудируя документацию, читая StackOverflow и ища ответы на самые глупые вопросы, которые только могут возникать. Мне было тяжело – иногда код просто не хотел работать так, как я представлял себе. Но я не отчаивался – разбор примера кода + документация подсказывали, где я допустил ошибку, что поставил не так и что не дописал. Именно тогда я каждый день хвалил родителей за то, что настояли на моем обучении английскому языку в детстве – ведь вся актуальная документация именно на нем.

Легче всего мне дались HTML и CSS – около 2 недель. За это время я собрал макет сайта какого-то дизайнера на чистом HTML и CSS и собрал все возможные костыли, изучил кучу подходов и понял, что вручную писать все эти строчки – безумно долго. Слегка погуглив, я сразу наткнулся на Bootstrap 4 и, ознакомившись с возможностями, принялся читать документацию. После пары дней вдумчивого курения мануалов, перемежающихся просмотром различных обучающих роликов на YouTube, я принялся за создание своего собственного totally responsive сайта, с картинками, карточками и анимациями. На это ушло примерно 2 недели, за которые я открыл для себя jQuery в качестве инструмента DOM-manipulation.

Конечно, это был не лучший выбор, но там было все просто, понятно, а мне был важен результат. Кстати, я рекомендую не слушать на данном этапе крутых программистов, которые предлагают оптимизации и улучшения, а просто найти самый частый вариант использования кода, смотреть примеры и просто копировать стиль. Задача на начальном этапе одна: лишь бы работало. Уже потом можно думать обо всем остальном, а уж когда вы будете работать в компании – вам объяснят и покажут местные стандарты, которым и нужно будет следовать.

Самое сложное началось на этапе изучения чистого JavaScript – в моей голове родился очень серьезный вопрос: зачем учить это, если jQuery легче? За ответом я пошел к гуглу: оказалось, что jQuery скоро уйдет в мир иной, за исключением legacy-кода, а все труЪ программисты используют JS, т.к. фреймворки приходят и уходят, а чистый JS актуален. Мы же хотим получить работу и делать ее долго, верно? Поэтому я начал смотреть видеоролики, пробовать писать код и функции на обучающих сайтах и переписывать свои предыдущие проекты. Естественно, сначала получилось чуть менее, чем ничего, но спустя пару дней я уже не думая прописывал всякие arrow-functions (которые оказались проще, чем обычные), работал с document.getElementById селекторами, сортировал массивы и извлекал элементы объектов с помощью .map, .filter, .reduce, работал с API и AJAX и т.д.

И я не ошибся – при изучении React я столкнулся с тонной JS-кода, который нужно было разбирать и понимать, иначе ничего не работало. Глубоко вздохнув и пожалев себя слегка, я принялся с удвоенной силой вникать в суть процесса. Очень скоро оказалось, что React – это слегка измененный HTML (JSX) + обвес из разных инструментов, облегчающих обновление страницы и создание SPA (одностраничного приложения). Добавим щепотку JS – и у нас есть анимации, загрузки и переходы. Привыкнув к синтаксису, я взял первый попавшийся макет онлайн-магазина и написал простое SPA, которые позволяло выбирать категории, осуществлять навигацию по сайту и менять счетчики товаров в корзине.

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

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

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


  1. berez
    18.05.2019 17:53
    +3

    Ну так и чем все закончилось-то? «Читал-читал, пробовал-пробовал, писал наколенные сайты, вот вам полезные ссылки» — а где, собственно, про трудоустройство?


    1. Kacep91 Автор
      19.05.2019 09:50

      Благодарю за правки!
      С 1 июня начинаю поиск работы, буду дополнять статью :)


  1. Zenitchik
    18.05.2019 18:41

    C++, C#, Delphi, Python, Pascal, Java – все это было сложным, непонятным, пугающим

    Чё? Прямо сложнее, непонятнее и «пугающее» чем естественные языки?


    1. Kacep91 Автор
      19.05.2019 09:52

      К сожалению, да. Мне было проще выучить английский и немецкий, чем какой-либо из языков программирования, так как строгий синтаксис, ограниченные выражения и необходимость формировать правильно оформленные команды не способствовали быстрому прогрессу. Иногда тратил по 3 часа, гуглил, насиловал StackOverflow, но не получал ответа. Документацию тогда читать было сложно, так как я просто не знал о ней :)


      1. Zenitchik
        19.05.2019 16:53
        +1

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

        Почему? Меня, наоборот, отсутствие всего этого повергает в ступор.
        Отсутствие строгого синтаксиса не позволяет самому проверить, правильно я построил фразу или нет. А строить фразу неправильно но лишь бы поняли — мне внутренний перфекционизм не позволяет. Так ни на одном языке говорить и не научился.


        1. Kacep91 Автор
          20.05.2019 00:16

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


  1. sfi0zy
    18.05.2019 20:14
    +2

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

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

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


    1. Kacep91 Автор
      19.05.2019 09:59

      Спасибо за комментарий!
      Конечно же, я ориентируюсь на Best practices, обычно подсматривая за тем, как пишут код гуру на YouTube. Если уж нельзя верить коду программиста со стажем 10+ лет, то кому верить?
      В документации иногда прописаны варианты кода, который включает в себя лишние, на данный момент, сущности.
      А на StackOverflow очень часто deprecated варианты или же просто старое написание (ES5 и ниже, на примере JS или старые версии React). Можно легко запутаться, особенно, если у человека английский не на очень высоком уровне.
      Конкретно про "слушать программистов" — с высоты опыта советовать более сложные абстракции, безусловно, кажется хорошей идеей. Но пока человек слабо разбирается в базе — ему нужен шаблон, который заставит программу работать. Потом уже можно думать о рефакторинге, применении библиотек и т.д.


  1. dom1n1k
    18.05.2019 20:46
    +3

    «Из инженеров в повара: я уже умею жарить яичницу, пробовал делать бутерброды с сыром и почти освоил нарезку оливье».
    Не обижайтесь, но ваша статья звучит примерно так.


    1. Kacep91 Автор
      19.05.2019 10:00

      Спасибо за комментарий!
      Не обижаюсь и прекрасно понимаю, что так и есть. Но кто сказал, что я не стремлюсь стать лучше и не смогу работать, для начала, скажем, в придорожном кафе, где этих навыков будет достаточно? :)


      1. dom1n1k
        19.05.2019 14:00

        Не знаю, не знаю. Вот вы пишете «легче всего мне дались HTML и CSS – около 2 недель». Ну совершенно очевидно, что за указанный срок новичок может изучить синтаксис и тэги, но это не равно «уметь верстать». Это как знать список из сотни слов не означает «говорить на языке». Сколько-нибудь сносно верстать человек начинает через полгода-год регулярной практики. А настоящий профи рождается года за 3 и при условии склонности к данному виду деятельности (а склонность эта есть далеко не у всех). А между тем верстку многие считают самой лоховской низшей ступенью в веб-иерархии :)


        1. Kacep91 Автор
          20.05.2019 00:18

          Согласен с вами, что я многого ещё не умею и не знаю, но, тем не менее, адаптивную вёрстку осилил, бутстрап тоже, Grid, flexbox и специфические особенности браузеров посмотрел (знаю, где искать примеры совместимости). А когда вижу сайт — мысленно делю и продумываю, что и где буду писать :)


  1. igor-sheludko
    18.05.2019 21:02

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


    1. Kacep91 Автор
      19.05.2019 10:01

      Спасибо за комментарий!
      С Git уже разобрался, сделал 3 репозитория, посмотрел основные команды на синхронизацию, push, pull, научился коммитить и писать комментарии.


      1. Fedorkov
        19.05.2019 17:21

        Ещё вам пригодятся пулл-реквесты.


  1. sbnur
    18.05.2019 23:04

    Без обид, но все эти рассказы подобны исповедям в обществе анонимных алкоголиков.


  1. Vasily_T
    18.05.2019 23:22

    Вообще то Вы не настоящий гуманитарий, так что не обманывайте себя…


    1. Kacep91 Автор
      19.05.2019 10:02

      Спасибо за комментарий!
      Вполне вероятно, я написал, что "гибрид". Мне всегда было интересно, как устроено все вокруг, поэтому я интересовался естественными науками.


  1. coderisimo
    18.05.2019 23:49

    Увы, куча подобных статей. Но, самое интересное-то начинается немного позже. Выучить что-то и начать кодить что-то — не проблема. Вот как дальше развиваться, как почувствовать, что ты не самозванец-гуманитарий в стане врага (людей технического склада).Мне в этом видится наиболее сложный момент.Уважаемый аффтор уже нашел работу? Ему платят? Если еще нет, то это, как написать статью «Из токаря в балеруны !», в конце которой токарь, кажется, освоил па-де-де, но неясно, видит ли массовый зритель его х… ю (хореографию) или это домашний театр для самого себя.


    1. Kacep91 Автор
      19.05.2019 10:06

      Спасибо за комментарий!
      Если человек с нуля выучил что-то и начал кодить хоть как-нибудь (работает и ладно) — это уже огромный прогресс, на мой взгляд. Я не претендую на супер позиции в компаниях, но сделать простой сайт, добавить анимацию, поправить верстку, написать функции смогу. Разве этого недостаточно, чтобы начать монетизировать свои навыки и набираться опыта?
      А насчёт чувствовать себя самозванцем — ни разу не испытывал такое, наоборот всегда казалось, что люди вокруг знают меньше, чем я. Область для меня новая, мне не 20 лет, поэтому на начальном этапе я буду спрашивать, слушать, кивать, получать люлей от более опытных людей и развивать себя и свои навыки. Как иначе войти в новую сферу деятельности, если твои знания заведомо ниже коллег по цеху?


      1. coderisimo
        19.05.2019 10:12

        Иначе никак, но я бы не обольщался. Дорогу осилит идущий.

        Разве этого недостаточно, чтобы начать монетизировать свои навыки и набираться опыта?
        Время покажет. Не забывайте про эффект Даннинга — Крюгера!


        1. Kacep91 Автор
          19.05.2019 10:24

          Конечно, ради этого я и стал «идущим». Мотивации — вагон. Ошибок уже насовершал в прошлом, поэтому будет легче + софт-скиллз должны помочь. Про эффект наслышан, спасибо, но, думаю, если взять во внимание тот факт, что отступать некуда — у меня нет выбора :)


  1. karl93rus
    19.05.2019 14:55

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

    Без обид, но более вредного совета услышать трудно. Пока не научишься решать задачи только с помощью документации, будет очень-очень тяжело. Думать — это навык, который надо качать. Копировать ответы со stackoverflow — самое ужасное, что можно сделать для своего развития. Да, работать, наверное, будет, но шаг вправо, шаг влево и начинаешь сыпаться.
    Легче всего мне дались HTML и CSS – около 2 недель. За это время я собрал макет сайта какого-то дизайнера на чистом HTML и CSS и собрал все возможные костыли, изучил кучу подходов и понял, что вручную писать все эти строчки – безумно долго.

    Правда? ;) Я во фронтэнде работаю совсем мало. 10 месяцев. Шёл к этому, наверное, года 3. Перерывы, понятное дело, были. И изучал не только фронтовые штуки, а много чего. И С, и С++, и джаву (особенный упор был на ней сделан), и питон, и даже ассемблер. И вот за 10 месяцев работы (именно работы. На работе. За деньги.) я до сих пор встречаю много интересных плюшек в CSS, о которых даже и не подозревал. И уверен, что буду встречать ещё не один год подобные вещи. Так что про все возможные костыли и подходы пока не торопись :).
    Ну а в общем удачи, чё. Как скопировать JSON с вложенностью в n уровней? :)


    1. Kacep91 Автор
      20.05.2019 00:22

      Это уже JavaScript и запросы, там у меня пока на уровне "работа с вами, асинхронный вызов и разбор массива", опыта маловато :)


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


  1. Anshi85
    19.05.2019 22:56

    Очередная история «вайтишника», нет я против автора нечего не имею, но я уже как то в комментариях задавал в подобной теме вопрос. Что вам мешало изначально идти в IT? Почему когда порог входа стал низким, а зарплаты по рынку выше среднего, то вдруг у многих появилось желание/призвание «вкатываться» в IT? Где вы были раньше? Например 16 лет назад, когда я сам вошёл в IT, я шел туда не из-за денег или хайпа, я пошел потому что мне было интересно, потому что не было компьютера, но я дома на листочке писал листинг программы и с нетерпением ждал урока информатики. Меня кстати родители заставили поступить на юриста, я поступил, но в тайне также сдал вступительные экзамены на ВТ и ПО, документы сдал туда же. Я помню в то время было модно быть юристом, менеджером и т.д.

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


    1. Kacep91 Автор
      20.05.2019 00:28

      Спасибо за комментарий!


      В то время про профессию программиста в моем городе или не знали, или считали уделом совсем умных и подкованных в математике людей, коим я себя никогда не считал.
      Сейчас же, когда мой старый вид деятельности перестал приносить удовольствие от слова "совсем" — я задумался о смене направления. Проанализировав рынок, я понял, что перспективнее всего — разработка. Легче всего — фронтенд. Английский знаю — мне уже гораздо легче. Рвение есть? Отлично! Мотивация? Безусловно! Время? Нашел! Умею болтать, договариваться и управлять людьми — дополнительные плюсы, мне кажется, много программистов любят свое дело, но не умеют презентовать себя. Поэтому, совместил приятное, полезное, выгодное и перспективное. Ну а в целом, мне нравится то, что я собираюсь делать и делаю, хочу развиваться, цель — тим лид или ПМ, не сразу, но лет через 5-7 вполне реально.


      1. Zenitchik
        20.05.2019 00:39

        Рвение и мотивация, основанные не на личном интересе? Ну-ну. Интересно, через сколько пройдёт запал, и во что Вы выродитесь.


        1. Kacep91 Автор
          20.05.2019 00:44

          Личный интерес в том, что по-старому не могу уже, надо менять в любом случае. А чтобы не сменить шило на мыло, сделал выбор. Спасибо за ваши слова, мне в работе главное интерес и деньги. Если бы платили разносчику пиццы 100500 рублей, я бы туда не пошёл, ибо скучно. А в IT надо учиться постоянно, в отличие от учителя, где из нового только учебники, да новая методика, вид сбоку.


      1. Anshi85
        20.05.2019 08:29

        Ну ваш запал мне понятен, дай бог чтобы все так и было, как вы планируете, к сожалению все не всегда так как планируешь, иногда рутина работы, ( разработка это по большей части рутина, а не полет творческой мысли), съедает тебя и уже нечего не хочется. По поводу умение общаться и презентовать скажу что, это хорошие качества, только помимо этого нужны хороший опыт и знания, иначе рискуете примкнуть к армии пустозвонов в ИТ их ещё зовут «вые@щиками» сами по себе эти люди безобидны, но когда занимают благодаря своим софт скиллам руководящие позиции могут наломать дров, так как опыта или знаний нет. В любом случае желаю вам удачи, напишите через пол года, как у вас все сложилось.