Содержание

Войти в IT

Слово “айтишник” уже плотно вошло в обиход у белорусов. СМИ пугают людей большими зарплатами айтишников, а обыватели винят их во всех смертных грехах. Кто-то уже всерьёз думает, что весь этот постапокалиптический бесперспективняк на бульваре Тракторостроителей устроили именно айтишники, и уже ходят слухи, что сегодня с рюкзаком EPAM ходить по улице более рискованно, чем в майке Cannibal Corpse в 90-е. Всё это, безусловно, в какой-то мере преувеличено, но факт, что IT - это одна из немногих сфер нашей экономики, где можно неплохо зарабатывать, если не умеешь красть и если твой папа не директор. Поэтому с недавних пор я уволился со своей старой работы и вот уже несколько месяцев тружусь в качестве drupal-разработчика в одной из минских веб-студий. Многие друзья и знакомые стали допытываться, как мне это удалось и где я всему этому научился, поэтому я и решил написать эту статью, чтобы ответить на вопросы тех, кто задумывается о том, чтобы изменить что-то в своей жизни.

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

  1. Здесь действительно больше платят, но те 2к$, о которых пишут СМИ, с ходу вам никто не предложит. Рассчитывайте на 600-700$ для начала.
  2. Относительно свободный график, главное отработать в неделю нужное количество часов и сделать всё запланированное. Думаю, это оценят те, кто ходил годами к 7 или 8 утра через заводскую проходную :) Также есть варианты удалённой работы, т.е. из дома, но я их не рассматривал, т.к. у меня дома есть жена, кот, бас-гитара, телевизор и холодильник, поэтому мне попросту некогда работать дома.
  3. Работать надо много. Вы больше не сможете наматывать километры ленты в соцсетях, сидя на работе.
  4. Работа сложная, но интересная.

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

Сколько нужно времени, чтобы чему-то научиться? Года два. Может три. Много? А теперь вспомните, в каком году вы впервые задумались о том, что неплохо бы зарабатывать больше? Если бы вы начали тогда, то сейчас уже были бы программистом, возможно даже со стажем и опытом. Так что лучше начинайте прямо сейчас. Опять же кто-то скажет, что на курсах всему могут научить за полгода. Но это совсем не так. Объём информации колоссальнейший, при этом ценность этой информации без опыта применения равна нулю. Так что либо запасайтесь терпением, либо продолжайте завидовать айтишникам.

Вместо дисклеймера.

Возможно, то, что я буду описывать дальше, подойдёт далеко не всем, но я буду делиться только личным опытом без всяких теоретических предположений. В начале пути у меня была совершенно обычная база: информатика в школе (при том, что половина уроков информатики проходила в кабинете географии, где мы решали системы линейных уравнений методом Крамера с помощью тетради и ручки), один семестр поверхностного изучения Delphi в универе, начальный этап курсов Java, куда меня зачем-то отправили с работы. Кстати, компьютерным задротом я никогда не был, первый комп у меня появился только на 4 курсе универа. В 2011 году я стал интересоваться HTML и CSS поковырялся пару дней и бросил на год, потом занялся PHP, поковырялся месяц и опять на год бросил. В 2013 я плотно взялся за Drupal и в 2016 меня позвали на собеседование в четыре компании и во всех четырёх я получил предложение о работе. Т.е. я пошёл не туда, куда взяли, а туда, куда захотел.

Итак, поехали!

Первым делом нужно определиться, какой язык учить. И тут вариантов нет: учите английский! Начинайте прямо сейчас, т.к. уже через год интенсивного изучения любого языка программирования, вы начнёте задаваться такими вопросами, на которые ответов в рунете не будет. Гугл-транслэйтор не вариант. Нужно уметь читать технический английский так, чтобы сразу всё было понятно. Писать по-английски тоже надо уметь, чтобы в случае чего быть в состоянии задать вопрос на англоязычных ресурсах. Говорить по-английски и воспринимать его на слух было бы идеально, но в первые годы это не обязательно.

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

  1. Сфера применения очень широка, поэтому информацию в этой сфере будет найти значительно проще, чем, скажем, для программирования микроконтроллеров.
  2. Вам будет на чём тренироваться. Сперва вы можете сделать своему дяде лэндинг для его автомастерской, потом своей тёте блог о вязании. Можно также начать с мелкого фриланса, вроде поменять кому-то за доллар баннер на сайте, а потом постепенно прокачиваться на всё более сложных заказах. К примеру, C#-разработчики напрочь лишены такой возможности.
  3. В процессе освоения технологий вы сможете определиться, что вам больше по душе: фронтенд или бэкенд. А может быть и вовсе поймёте, что программирование не для вас и займётесь СЕО.

Если я вас убедил, идём дальше. Забегая наперёд, скажу, что для определения оклада разработчика ключевое значение имеет стек технологий, которыми владеет разработчик. Суровый мужской мир - у кого стек длинее, тот и круче. (Девушки, не обижайтесь, на самом деле правильно говорить “глубина стека”, но я предлагаю не развивать эту тему :)) Если для простого лэндинга достаточно стека HTML+CSS, то для красивого лэндинга нужен ещё и JavaScript. Чтобы лэндинг отправлял данные из формы обратной связи, нужен ещё и PHP, а чтобы эти данные сохранялись на сайте, нужен MySQL. А чтобы понимать, чем лэндинг отличается от одностраничника, нужно хоть немного понимать в маркетинге и SEO. А чтобы устроиться на работу друпал девелопером, нужно также уметь пользоваться как минимум Apache, Linux, Drush, SSH, Git, LESS, SASS, Gulp, Compass и хотя бы дюжиной API. Как видите, всё довольно просто :) Поэтому рассмотрим более подробно, как и в какой последовательности овладеть этим стеком.

Этап первый. HTML+CSS

HTML и CSS неплохо бы знать каждому. Даже контент-менеджеру сайта без этих знаний придётся тяжело. Самоучители и справочники можно найти на htmlbook.ru или на других подобных сайтах. Если вдумчиво выполнять все примеры из самоучителей, то за пару дней можно получить вполне чёткое представление, что это такое и с чем это едят. Сразу хочу отметить: начинайте с чистого CSS без препроцессоров (таких как SASS и LESS). Препроцессоры CSS сильно ускоряют работу, я например, без них вообще не верстаю никогда, но без знания обычного CSS вы с ними попросту не сможете работать. Кроме того, настройка компиляторов для них может занять довольно много времени, поэтому просто примите к сведению, что есть такие штуки, но пока они не нужны вам.

Этап второй. JavaScript

Никогда не путайте JavaScript и Java! Это совершенно разные вещи. Вы же не путаете мотоцикл и остров, вот и это не путайте тоже. Джаваскрипт, он же JS, нужен для динамического контента и всяких красивостей вроде слайдеров и всплывающих окон. Кстати, если вы думаете, что анимацию можно делать только на JS, значит вы плохо усвоили первый этап. На JS нужно делать только ту анимацию, которую нельзя сделать средствами CSS. Есть очень много популярных JS-фреймворков, если начать загибать пальцы на каждый, то вам понадобится несколько человек. Не учите их сразу. Ограничьтесь только JQuery. Если сразу начать разбираться во всех этих нодах, реактах и ангулярах, то вы научитесь писать Hello World на всех языках мира, так и не научившись ничему более сложному. Моё мнение, что к этим фреймворкам имеет смысл обращаться только тогда, когда умеешь строить полноценные веб-приложения и в состоянии оценить целесообразно ли использовать какой-либо фреймворк в конкретной задаче.

Этап третий. PHP+MySQL

Сейчас все начнут кричать, что PHP мёртв, а я буду смеяться им в лицо. Да, пхп, возможно, не самый лучший язык программирования. Но он востребован. Более 80% сайтов в интернете используют PHP, даже всеми любимые фэйсбук и вконтакте написаны на пхп (правда потом там началась всякая канитель вроде kphp и hiphop). На втором месте идут сайты вообще без серверных скриптов, т.е. статичный HTML. Сейчас многие говорят, что Node.js или что-нибудь ещё скоро потеснит php. Но 5 лет назад то же самое говорили про Ruby on Rails - прекрасный язык, но почему-то не прижился и мода на него ушла. Многие продолжают успешно на нём разрабатывать, но давайте лучше оставим анализ рынка маркетологам. В общем решили, берём PHP и MySQL. А это значит, что нужно заводить свой локальный сервер. В идеале, конечно же сделать это на линуксе, но если вы никогда не имели с ним дело, оставьте линукс на потом. К нему лучше подходить осознанно. Не пользуйтесь денвером. Потом будут проблемы. Скачайте Openserver, он куда более стабилен, значительно проще в использовании, значительно более гибок и, что немаловажно, в его полной версии помимо самого сервера включено огромное множество программ, необходимых для веб-разработки. Включите сервер, как описано в мануалах и приступайте к изучению самоучителей по PHP и SQL. Кстати, не надо путать: MySQL - это СУБД (система управления базами данных), а SQL - это структурированный язык запросов. На этом этапе нужно разобраться, как происходит взаимодействие серверного скрипта с базой данных. Также обязательно разобраться с куками и сессиями. В общем, если вы можете самостоятельно сделать страничку, на которую может залогиниться пользователь, значит, минимальное понимание есть.

Этап четвёртый. Экспериментируем с CMS

CMS - это система управления контентом, в простонародье движок. Надо скачать пару-тройку популярных движков и согласно инструкции установить да посмотреть: что там как устроено. Даже если вы, к примеру, решили заниматься node.js, всё равно не лишним будет посмотреть, как устроен тот же Drupal или Wordpress. Это нужно для того, чтобы разобраться в общих чертах, как разные системы подходят к управлению контентом и настройками сайта. Далее необходимо разобраться, как на сайт устанавливаются различные расширения и темы оформления, разобраться, как, к примеру, изменить вёрстку сайта, не затронув при этом его функционал. Всё это можно найти в видеоуроках, я делал свои первые шаги в изучении друпал по курсу видеоуроков на сайте podrupalim.com.

Этап пятый. Выбор дальнейшего пути

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

  1. Распространённость. И хотя Wordpress по этому параметру уверенно лидирует во всём мире, не стоит торопиться с выбором. На том же друпале в мире порядка миллиона сайтов - этого более, чем достаточно, чтобы вы смогли найти себе пропитание, зная друпал. Тут главное не остановиться на чём-то слишком экзотическом.
  2. Расширяемость. Обязательно наведите справки, как обстоят дела с расширениями под выбранную платформу. Обратите внимание не только на количество расширений и модулей, но и на их качество и удобство установки. Обратите также внимание, насколько хорошо задокументировано API платформы, ведь вы можете захотеть писать и собственные расширения. Кстати, если API на английском языке - это не недостаток платформы, а ваш личный недостаток, над которым нужно постоянно работать.
  3. Масштабируемость. Просто узнайте, какие самые большие и посещаемые сайты сделаны на той или иной платформе. Если в движке не заложен потенциал для адаптации к Hi-Load нагрузкам, то работая с этим движком, таких нагрузок не получат не только ваши сайты, но и ваш кошелёк.
  4. Сообщество. Надо было поставить этот пункт на первое место. Очень многое зависит от сообщества разработчиков, ведь вам придётся с кем-то советоваться, а со временем, вы не только сможете делиться своими знаниями, но и найти через это сообщество себе работу. К сообществу относятся не только региональные форумы, но также чаты в различных системах, например тот же скайп, телеграм и т.д. Очень важен средний уровень подготовки активных членов сообщества, к примеру, лично мне показалось, что на форуме Opencart сидят в основном владельцы сайтов и начинающие разработчики, а вот на том же drupal.ru полно матёрых специалистов. И пожалуйста, отнеситесь с пониманием к тому, что ваши вопросы будут считать дурацкими, т.к. обтекание картинки текстом - это вопрос по CSS, а не CMS. И ни в коем случае не пренебрегайте ценностью сообщества. В любой статье о друпале написано, что достаточно влиться в сообщество и на вас свалятся чуть ли не золотые горы. И это действительно так. Я всего лишь зарегистрировался, чтобы спросить небольшой вопрос, который решил в итоге сам :) потом стал изредка почитывать форум и отвечать на чьи-то вопросы. А потом мне стали предлагать всякую разовую работу разной степени сложности при том, что я даже не создавал тему о поиске работы и не откликался ни на чьи предложения о работе.

Ну в общем, ищите то, за что платят деньги, на что есть спрос, где можно развиться и где кто-то сможет вам помочь :)

Этап шестой. Рост

Итак, вы уже умеете создавать простые сайты на основе CMS. А это значит… , что вы по-прежнему никому не нужны. В IT-сфере, как и в любой другой, чтобы устроиться на работу, нужен опыт. Но вовсе не обязательно устраиваться на работу, чтобы этот опыт получить. Сделайте сайт себе, потом своим знакомым и друзьям (через пару лет вы не сможете смотреть на эти работы без слёз), потом ищите фриланс-подработки. Старайтесь браться за ту работу, выполнение которой даст вам какие-то новые навыки. Когда почувствуете, что готовы к тому, чтобы искать себе постоянную работу веб-разработчика, откройте любой сайт о поиске работы, введите там в поиск название технологии или CMS, на которой решили специализироваться и почитайте требования к вакансиям, на которых обещают зарплату от 1500$ и выше. Все те требования, которые там стоят в разделе обязательных, необходимы даже в том случае, если вы рассчитываете всего на каких-то 500$. А ведь это надо только для того, чтобы вас пригласили на собеседование, а на собеседовании у вас спросят множество других, порой совершенно невероятных вещей.

Итог

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

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

Текст взял у Алексея Кузнецова, за что ему оромное спасибо! Оригинал можно почитать тут.

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