Как стать веб-разработчиком с нуля

188
Как стать веб-разработчиком с нуля
Фото: fotostrana.ru
Н
Нина Бурминская
Инженер-программист 1 категории компании ICL Services
Сергей Полуэктов
Сергей Полуэктов
Директор ИТ-компании MediaSoft
Р
Роман Ромадин
Руководитель бекенд разработки, mc2соф

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

Как стать программистом, не имея опыта программирования. В самом начале хочу отметить, что существует некая «карта» развития и движения в области программирования и Вам нужно постараться найти себя на этой карте, рассказывает Роман Ромадин.

Под «картой» я подразумеваю несколько высокоуровневых абстракций:

  1. Это ниша и области знаний, технологий.
  2. Это стек технологий.
  3. Карта развития софт-скилов.
  4. Знание английского языка.

Постараюсь максимально точно, насколько это возможно, раскрыть эти темы.

Какой вы разработчик

  • Во-первых, нужно понимать какие идеалы Вами движут, что и кто Вас вдохновляет, какие задачи позволяют Вам чувствовать прилив сил в процессе выполнения или после завершения. Например, Вам видится идеальной роль программиста (или администратора), придумывающего некий алгоритм, который перевернёт технологию вычисления по одному направлению, например, поиск простых чисел или системы шифрования. А может Вас вдохновляет образ хакера, который в одиночку или собрав команду, взламывает самую современную банковскую систему. И получает кучу денег и славы от своего дела. А может Вас окрыляет то, что Вашим продуктом будут пользоваться миллионы людей, использующих свои девайсы — например, мобильные телефоны. Если смогли найти такой образ — поздравляю, первая половина Вашего становления произошла. Вы уже мотивированы на эту «стезю». А дальше, только труд и труд. Но труд, без которого Вы уже не мыслите себя.
  • Во-вторых, определитесь, где Ваша роль находится на общей карте. Вы не поверите, но в IT очень много крупных областей, которые пересекаются в базовых вещах, связанных с программированием и вообще с отраслью. Это алгоритмы, структуры данных, базовые понятия в информатике, а также более приземлённые требования по технике и технологиям (железо). Градация на высокоуровневые и низкоуровневые ниши не является абсолютной, а призвана лишь сориентировать с вектором развития IT специалиста.

Выбираем высокоуровневые ниши

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

Примеры высокоуровневых ниш:

  • вёрстка сайтов, интерфейсы программ на компьютере, на мобильном девайсе, Smart TV, носимые устройства;
  • алгоритмы (flow) данных между системами (и между людьми на их устройствах) — как будут получены данные, где они будут храниться, что с ними будут дальше происходить и на каких устройствах это будет обработано;
  • системы, которые агрегируют и обрабатывают определенным образом данные для удобного использования людьми (простой агрегатор или система на основе нейронных сетей и машинного обучения). Здесь мы получаем не только сами данные, но и можем на их основе получать «правила» обработки похожих данных (обучение нейронных сетей).

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

В низкоуровневой нише Вам придётся работать с самыми базовыми вещами в информатике и с «железом». Вам желательно знать ассемблер и обязательно C/C++, знать как устроены операционные системы и драйверы для самых разных версий «железа». Например, у меня есть друг, который разрабатывает программы для плат из Китая, драйверы для которых различаются для каждой новой версии. Документации или совсем нет, или ее не достаточно — просто ещё не успели описать и/или есть баги. Да, как и в любом другом программном продукте — в драйверах тоже могут быть баги.

Стек технологий

Теперь поговорим, о стеке технологий. Большая часть обзоров по тому, как стать программистом, начинаются с выбора именно стека. Тут хочется сказать, что стек можно сменить, если он схож с другим по одной нише. Но если ниша разная — то будет сложнее. То есть если вы выбрали стек веб-разработка на основе Java и захотите перейти в веб-разработчика на Python — это будет сравнительно легко. Сложнее — если после первого захотите стать ML/AI разработчиком на Python, тут нужно будет подтягивать математику и осваивать совсем другие методы. А вот перейти на программирование встраиваемых систем или микроконтроллеров будет гораздо сложнее. Вам нужно от полугода на освоение технологий, а работодателю нужно будет понять насколько можно доверять Вам создание нового для Вас продукта.

Основные стеки на сегодняшний день: мобильная разработка, разработка фронтента и/или бекенда для веба, разработка встраиваемых систем, машинное обучение, нейронные сети и Data Science, десктоп разработка. А выбор языка программирования производите от понимания той программы (или той системы), которую хотели бы создать.

Карта развития софт-скилов

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

И если есть исключения про героев-одиночек, то в большей части это красивая «маркетинговая сказка», потому что гер

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

В данном вопросе стоит обратить внимание на современные методики работы, такие как Agile, Scrum и Kanban. Из своего опыта скажу, что очень помогает вести дневник и карту целей на короткие, средние и длительные сроки и производить периодический сбор обратной связи (раз в полгода-год) от коллег и клиентов.

Нужно ли знать английский язык программисту

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

Главное, — не стоит «каменеть» в своих знаниях, а постоянно развиваться и осваивать новые технологии. Каждое из направлений постоянно расширяется, и не так давно программисты были веб-мастерами, а теперь это группа разработчиков: фронтенд, бекенд, DBA, DevOps, UI/UX. В каждом из этих направлений постоянно (раз в месяц или раз в полгода) появляется, что-то новое, что укореняется и будет использоваться в дальнейшем. И нужно выстроить свою систему сбора и фильтрации этих знаний.

Это был обзор основных моментов в становлении и развития IT специалиста.

Здесь мы не коснулись зарплатных ожиданий (в среднем по рынку IT специалист получает в 2-4 раза больше других отраслей).
Главное, решить для себя, что хочется освоить именно Вам и какую программу (и для кого) Вы создадите сегодня.

Ни дня без практики и новых знаний

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

Для каждого у меня свой набор советов и предложений, но в основном они сводятся к следующему:

  1. Понять, что придется делать много монотонной и рутинной работы;
  2. Математическая база – must have;
  3. Письменный, устный английский язык (как минимум на уровне Elementary) – обязательно;
  4.  Много и постоянно учиться чему-то новому, прилагая максимум усилий.

Если на все эти пункты ответили «Да», то дальше нужно начинать с базовых знаний о программировании и языке. На рынке вакансий наиболее востребованными сегодня являются программисты Java, Python, Ruby, программисты для Android, iPhone. По моему мнению, Python — отличный язык для старта и понимания возможностей программирования.

Для изучения можно порекомендовать книги издательства O’Reily, не стоит обходить вниманием различные вебинары, tutorials на видеохостингах от практикующих специалистов. Курсы от известных площадок нужно брать с осторожностью и с имеющейся базой.
Для практики и изучения английского языка метод «смотри сериалы на английском» не сработает. Необходимо делать упор на технический английский: стараться читать книги, работать с IDE на английском. Для усовершенствования знаний необходимы очные курсы по языку, желательно в небольших группах.

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

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

Заключение

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

Для дальнейшего обучения подойдут не только курсы, но и самоучители или сайты. Ищите что-то простое. Например, php.su — там первый урок рассказывает о том, как написать hello world и поставить окружение. То есть все очень-очень просто. Я сам начинал с чего-то подобного, когда сел изучать PHP.

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

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

А еще не бойтесь кардинально менять профессию. При большом желании ограничений нет ни в возрасте, ни в сфере деятельности. В нашей компании есть успешные кейсы, когда специалисты приходили в разработку из совершенно разных сфер и возрасте: из рекламы и связей с общественности в frontend-разработку в 25, из типографии в тестирование и видеопродакшна в backend в 30+ лет.

4
Обсудить Содержание