что нужно знать для устройства на работу веб программистом
Как стать веб-разработчиком с нуля, почему это актуально и что нужно знать
Профессия веб-разработчика жива, пока живы сайты. Разберёмся, как прийти в неё и что нужно знать новичку. От ситуации на рынке до обучающих ресурсов.
Текст подготовлен на основе вебинара «Как стать веб-разработчиком с нуля за три месяца» с участием Михаила Овчинникова из компании Badoo.
Для полного погружения в профессию у Skillbox есть курс «Веб-разработчик», где теория становится знаниями, практика — навыками, а работа — оплачиваемым призванием.
Ведущий инженер-программист в Badoo Development LLC, специалист по разработке высоконагруженных веб-сервисов.
Ситуация на рынке
Рассматривая общую картину рынка, можно выделить наиболее востребованные направления в IT-сфере:
Почему стоит идти в веб
1. Веб-разработка — это интересно
Стоит изучить одну технологию либо фреймворк и начать с ними работать, как через два-три месяца на рынке появится что-то совершенно новое и все начнут использовать именно это. С вебом не соскучитесь.
2. Веб-разработка — это творчество
Веб-разработка постоянно пополняется молодыми специалистами с новыми идеями, а сама сфера — новыми инструментами, возможностями и сервисами.
3. Веб-разработка — это развитие
Senior-программистов с десятью годами стажа можно встретить довольно редко: либо из них вырастают управленцы, либо они учатся новому. Бурный рост профессии формирует широкое информационное поле и крепкое сообщество.
Поэтому, если вы молоды, полны энергии, имеете чувство вкуса, да ещё и с любовью относитесь к программированию, веб-разработка — для вас.
Сколько зарабатывает веб-разработчик
Изучив сайты поиска работы, мы увидим диапазон зарплат веб-разработчиков:
Многое зависит от страны, региона, выбранного языка и компании, предлагающей вакансию.
Кто такой веб-разработчик и чем он занимается?
Продакт-менеджер курсов «Веб-разработчик с нуля» и «Разработчик игр на Unity»
Веб-разработка — одно из самых популярных направлений. По данным Stack Overflow, в этой сфере работают около 49% программистов. Вместе с Игорем Багинским, продакт-менеджером курса «Веб-разработчик с нуля», рассказываем, как появилась веб-разработка, чем frontend отличается от backend и какие навыки нужны, чтобы начать писать код.
Кто такой веб-разработчик
Веб-разработчик — это специалист, который создает и поддерживает сайты и приложения. Он может работать как над внешним видом сайта, так и над его внутренней, серверной частью. Тестирование и поиск багов — хоть и не основная, но тоже одна из задач веб-программирования.
Какие типы веб-разработчиков бывают
В профессии разработчика есть три больших направления: это frontend, backend и fullstack. Все они популярны среди разработчиков:
Frontend-разработчик создает внешний вид сайта. Веб-специалист верстает страницы и отвечает за то, чтобы сайт был красивым и удобным. Но работа фронтендера не ограничивается только интерфейсом. В функции веб-разработчика входит не только программирование новых элементов сайта. Он также следит за тем, чтобы все они хорошо работали. Например, если мобильная версия сайта вылезает за края экрана или не работает кнопка отправки товара в корзину — это зона ответственности frontend-разработчика.
Fullstack-разработчик умеет делать и то и другое. Он разрабатывает сайт, проектирует его архитектуру и занимается системным администрированием. Fullstack-разработчики — самая востребованная профессия.
Читайте также: Что выбрать: frontend, backend или fullstack?
Очень краткая история веб-разработки
1991 год — первый сайт. Он выглядел как набор простейших веб-страниц, которые презентовали мировую паутину — World Wide Web. Сайт до сих пор доступен по тому же адресу.
1994 год — впервые используют CSS — каскадные таблицы стилей. На сайтах появилась система навигации, веб-разработчики стали добавлять на страницы изображения.
2003 год — появилась WordPress — система управления контентом, которая базируется на PHP и MySQL. WordPress с ее плагинами и шаблонами очень упростила разработку и сделала ее доступной для широкой публики.
2005 год — начинается бум социальных сетей: появляются Facebook и Myspace. В основе концепции — активное привлечение пользователей к проектам и сервисам. Растет внимание к контенту, он начинает ориентироваться на SEO.
2007 год — начало эры мобильных сайтов. большинство сайтов не имело мобильной версии. С телефона смотреть страницы было жутко неудобно — они медленно загружались, не подстраивались к экрану, вылезали за края. Основой мобильного веба становятся фреймворки Bootstrap и Foundation — с их помощью удалось сделать страницы более адаптивными.
2014 год — выходит пятая версия стандарта языка HTML. Разработчикам становится проще работать с аудио- и видеоконтентом, Adobe Flash окончательно умирает.
Что нужно знать веб-разработчику
Навыки backend-разработчика
— Владеть одним из языков программирования (PHP, Java, Go или Python).
— Уметь работать с пакетными менеджерами (package manager) — это специальные утилиты, которые позволяют добавлять в приложения сторонние библиотеки, чтобы создавать новые функции и расширить свои возможности. Для каждого языка пакетный менеджер свой (В Python он называется pip, в PHP — Composer, в Ruby — RubyGems и т.д.).
— Знать язык запросов SQL.
— Понимать, как устроены базы данных, и уметь с ними работать.
— Знать основы работы с системой контроля версий Git.
— Уметь работать с фреймворками — они объединяют набор технических средств, которые упрощают выполнение какой-либо задачи. Для backend-разработки чаще всего используются фреймворки Laravel, Symfony и Yii.
Читайте также: Что выбрать: PHP или Python?
Навыки frontend-разработчика
— HTML, CSS и JavaScript. На HTML создают каркас страницы, CSS помогает настроить цвета, шрифты и внутреннее наполнение. С помощью JavaScript можно добавить на сайт слайдеры, анимацию и другие динамичные элементы.
— Иметь базовые навыки работы в консоли и пользования пакетным менеджером NPM, который позволяет быстро и удобно загружать JavaScript-библиотеки и приложения.
— Уметь пользоваться системой контроля версий Git.
— Уметь работать со сборщиком проектов. Это небольшой код, определяющий последовательность действий при автоматическом запуске приложения из командной строки. Сборщиков проектов несколько, самый популярный — gulp.js.
— Уметь верстать и адаптировать сайт под разные браузеры и экраны.
— Знать один из современных фреймворков: React, Angular или Vue.js. Фреймворк управляет состоянием отдельных компонентов страницы. Соответственно, пользователю не придется по каждому клику перезагружать страницу целиком, так как фреймворк обеспечивает мгновенный отклик приложения.
Навыки fullstack-разработчика
— Fullstack-специалист должен одинаково хорошо разбираться как во frontend, так и в backend — он выполняет полный цикл разработки.
— Ему необходимо знать один или несколько языков программирования. Для frontend-разработки: JavaScript, для backend-разработки — Python.
— Уметь применять основные фреймворки. Для frontend-разработки используют JavaScript и фреймворки React, Angular или Vue.js. Для backend-разработки — Python с фреймворками Django, Flask или Sanic, JavaScript с фреймворками Express или Fastify, PHP и фреймворк Laravel.
— Знать язык SQL и язык разметки CSS.
— Разбираться в системах контейнеризации Docker и Git, знать основы системного администрирования.
Требования к разработчикам по софт-скиллам для всех профессий одинаковые: это коммуникабельность, умение работать в команде и стремление развиваться, так как технологии постоянно меняются и усложняются. И, конечно, хорошее знание английского языка — на нем написана вся техническая документация.
Веб-разработчик с нуля
Освойте веб-разработку за 12 месяце и делайте сайты и приложения любой сложности.
Сколько получают веб-разработчики
В среднем backend-разработчик зарабатывает 140 тыс. рублей в месяц, frontend- и fullstack-специалисты — около 120 тыс.рублей.
Зарплаты веб-разработчиков постоянно растут. Например, по итогам первого полугодия 2021 года (по сравнению с аналогичным периодом 2020-го) рост зарплат backend-разработчика составил более 7%, frontend и fullstack — около 9%.
Перспективы профессии
Сегодня все идут в веб. Пандемия дала мощный толчок развитию облачных сервисов, бизнес ищет эффективные IT-решения и внедряет цифровые инструменты. Активно развиваются искусственный интеллект, чат-боты и виртуальные помощники, прогрессивные веб-приложения (PWA), совершенствуются веб-поиск и навигация.
В отрасли дефицит кадров: по оценкам представителей рынка, всего в российской IT-индустрии не хватает от 500 тыс. до 1 млн человек, а веб-разработчики входят в топ-10 самых востребованных профессий 2021 года.
Какие технологии популярны в мире и зачем их знать
Для frontend-разработки
HTML — это язык разметки гипертекстовых документов. Он нужен, чтобы в браузере отображался отформатированный документ с вложенными элементами: заголовками, абзацами, списками, расположением изображений, видео и аудио.
CSS — это язык таблицы стилей. Он позволяет прикреплять шрифты и цвет к уже структурированным документам (например HTML). CSS используется для создания и изменения стиля элементов веб-страниц и пользовательских интерфейсов.
React — это JavaScript-библиотека с открытым исходным кодом для разработки пользовательских интерфейсов. React был создан в 2013 году Джорданом Валке, разработчиком программного обеспечения из Facebook. Поддерживается Facebook, Instagram и имеет многомиллионное сообщество разработчиков. React облегчает создание интерфейса за счет того, что разбивает каждую страницу на отдельные фрагменты.
PHP — скриптовый язык программирования. Он входит в топ-10 лучших языков программирования по версии рейтинга TIOBE (по состоянию на ноябрь 2021 года). На PHP написано множество сайтов и веб-приложений. Среди них такие гиганты, как Facebook, ВКонтакте, YouTube и многие другие. Несмотря на то что языку уже более 25 лет, с каждой версией внедряются новые возможности. Многие компании нанимают разработчиков на PHP, чтобы поддерживать работу уже действующих проектов (а их на PHP немало) и писать новые.
JavaScript (JS). Впервые выпущенный еще в 1995 году JS продолжает оставаться одним из самых популярных языков программирования: по данным Stack Overflow, его используют более 60% веб-разработчиков. Он поддерживается на всех операционных системах и на всех видах браузеров. JS полностью интегрируется с версткой страниц и серверной частью. Кроме того, у JS мощная экосистема и широкое комьюнити.
Для backend-разработки
Laravel — бесплатный фреймворк с открытым кодом для создания приложений на PHP. Созданные на Laravel приложения легко масштабируются. Поскольку Laravel — opensource-проект с большим комьюнити, разработчики любят добавлять в него новые инструменты для решения различных задач. Кроме того, он предоставляет встроенные библиотеки и модули, которые помогают улучшить приложение. У Laravel есть автотесты — это позволяет экономить время на проверку багов, а также у него есть встроенные функции безопасности.
Docker — контейнеризатор приложений с открытым кодом. Помогает «упаковать» приложение в контейнер, который потом можно развернуть на любой Linux-системе. В отличие от виртуальных машин, контейнеры не создают дополнительной нагрузки, так что с ними систему можно использовать более эффективно.
С чего начать
Для frontend-разработчика в первую очередь можно начать изучать HTML, CSS и JavaScript с помощью бесплатных курсов и видеоуроков. Например:
Или почитать книги, посвященные веб-разработке:
Для backend — для начала начать учить один из языков программирования, например PHP или Python.
Вот подборка ресурсов, чтобы самостоятельно изучить Python
Подборка книг по самостоятельному изучению PHP:
PHP Cookbook, Д. Скляр, А. Трахтенберг;
Начать учиться можно и без самостоятельной подготовки. На курсе «Веб-разработчик с нуля» вы научитесь создавать веб-проекты, даже если до этого никогда не кодили. Можно выбрать frontend, backend или все сразу — и прокачаться до уровня middle. В тренажерах вы отточите навыки HTML, CSS, JavaScript, PHP, SQL, React. В течение курса вы выполните мини-проекты по темам для закрепления навыка и полноценные проекты по блокам программы.
Веб-разработчик с нуля
За 12 месяцев вы освоите базовую верстку, frontend и backend. В конце обучения у вас будет готовое портфолио из проектов.
Продакт-менеджер курсов «Веб-разработчик с нуля» и «Разработчик игр на Unity»
👨💻️ Как стать профессиональным веб-разработчиком с нуля и найти первую работу
Итак, вы решили или задумались о том, чтобы стать веб-разработчиком. Интерес рациональный:
Однако веб-разработка – настолько широкая область, что соприкосновение с ней может показаться высадкой на незнакомую планету. Особенно если ранее вы не сталкивались с программированием.
Этот гайд поможет преодолеть неуверенность и выбрать направление для развития. Мы разберём, что должен уметь веб-девелопер, где этому научиться и куда идти с новыми навыками. Специально для тех, кто делает первые карьерные шаги или меняет сферу деятельности.
Знакомьтесь – веб-разработчик
Веб-разработчик – это программист, который создает и поддерживает сайты и веб-приложения. Они могут использовать разные технологии и языки, но все работают во Всемирной паутине, передавая данные между устройствами.
Социальная сеть ВКонтакте, виджет с погодой Яндекса, фрагмент кода, отправляющий информацию о ваших счетах в личный кабинет Сбербанка – дело рук веб-разработчиков.
Как видите, название профессии мало говорит о том, чем именно занимается человек. Выделяют две большие группы веб-девелоперов:
Профессионалов, освоивших оба направления, называют Full-Stack Web Developer (фулстек разработчик). Но начинать лучше с чего-то одного. Выберите:
Выбор определит, что вы будете изучать и применять на практике.
Как стать веб-разработчиком
1. Начните с основ
В зависимости от специализации вам понадобится различный набор навыков.
Фронтенд
HTML/HTML5
HTML (Hyper Text Markup Language) – язык для отображения данных на сайте. Без него веб-страницы напоминают текст в «Блокноте». Заголовки, списки, таблицы, изображения, кнопки, формы и т. д. – всё это HTML.
HTML5 – последний стандарт языка, поддерживающий ряд важных возможностей. Например, вставка аудио и видео, технология drag-n-drop, векторная графика в SVG, геолокация и т. п.
CSS/CSS3
CSS (Cascading Style Sheets) – способ придать сайту единое оформление, не используя лишний код. Это подобие библиотеки стилей, где вы описываете характеристики визуальных элементов. Например, цвет кнопок или шрифт текста.
CSS3 – активно развивающееся поколение CSS. С ним легко создавать анимации, для которых раньше был нужен JavaScript.
JavaScript
JavaScript – язык программирования, который оживляет сайты, делая их интерактивными. Слайдеры, всплывающие окна, анимация текста, «живой» поиск, мини-игры – всё это реализуется с помощью этого языка.
Три перечисленных столпа фронтенд-разработки (HTML, CSS, JavaScript) часто включают в один курс. Вот подходящие учебные материалы:
Если вы любите учиться по YouTube-роликам, обратите внимание на нашу подборку из 70 YouTube-каналов для фронтенд-разработчика. В ней множество образовательных каналов, в том числе по библиотекам и фреймворкам.
Бэкенд
Программирование
Бекэнд – это про функциональность сайтов и работу с данными. Та часть айсберга, что скрыта от глаз пользователей. Бекэнд-разработчики много и серьезно программируют. Разнообразие применяемых языков может сбить с толку, но обычно выбор состоит из следующих четырёх.
1. PHP – основа основ динамических сайтов, 79% всех сайтов работают на нём. Сколько вариантов отображения может иметь главная страница интернет-магазина? С одним товаром в корзине, с двумя товарами, для Москвы, для Новосибирска, если вход в аккаунт выполнен или не выполнен и т. п. – создавать под каждый случай отдельный HTML-файл было бы невыносимо.
PHP решает эту проблему, меняя содержимое страницы в зависимости от множества условий. Образно говоря, он «вбрасывает» в браузер нужные строки HTML-кода. Подходит для сборки страниц из модулей, упрощения работы с формами и авторизации пользователей, а также для создания движков сайтов.
2. Python – элегантный язык, созданный для повышения производительности программистов. Написать сайт на Python – вопрос 10 строчек кода. Встроенные приложения на страницах, чат-боты, парсинг данных – немногим больше. Практически под каждую сложную задачу есть готовая библиотека – от программирования игр до искусственного интеллекта и робототехники.
3. Ruby – еще один высокоуровневый язык, который используется для быстрого прототипирования крупных проектов. Известная платформа бронирования жилья Airbnb и сервис для стартапов Kickstarter написаны на Ruby.
4. JavaScript – на нем можно писать не только фронтенд, но и бэкенд. Для этого нужно познакомиться с программной платформой Node.js. Она позволяет использовать JavaScript не только в интернет-браузере, но и где угодно ещё.
Каждый из перечисленных языков используется не сам по себе, а как язык фреймворка: для PHP это обычно Laravel или Symfony, для Python это Django или Flask, Ruby стал особенно известен из-за Ruby on Rails, а у JavaScript каждый день появляются новые решения: Express.js, Next.js, Meteor.js и т. д.
Количество фреймворков и устойчивость развития показывают, что их выбор – лишь дело вкуса. Можно лишь посоветовать для начала выбрать один язык и фреймворк, и досконально их изучить. Тогда преимущества и недостатки других инструментов будут очевидны, а освоение необходимых решений не займет много времени.
Базы данных
2. Прокачайте soft skills
3. Практикуйтесь
Заказы и вакансии в веб-разработке часто требуют хотя бы минимального опыта применения полученных навыков. Начните с маленьких задач за небольшое вознаграждение или строчку в портфолио.
Поинтересуйтесь у знакомых, не требуется ли им помощь с сайтом. Найти задания для начинающих можно здесь:
Не беритесь за большие проекты, не попробовав свои силы. Полноценный веб-девелопмент работает по тем же принципам, просто в другом масштабе.
4. Станьте частью сообщества
Знаете, что говорят разработчики о хорошей технологии (например, фреймворке)? «У нее большое живое сообщество». Здесь любят коллективный труд и взаимную поддержку.
С любыми вопросами отправляйтесь по этим ссылкам:
Когда наберетесь опыта, сможете сами консультировать других. Иногда это даже учитывается при приеме на работу.
Для получения новых знаний подпишитесь на каналы Telegram:
Где найти работу
Если вы не сторонник full-time или хотите пройти «боевое крещение» на фрилансе, поищите проекты в нашей публикации «Где программисту искать удаленную работу?»
Вакансии веб-девелоперов также размещают здесь:
Создавая резюме для новой профессии, используйте универсальную формулировку «Junior Web Developer». В скобках добавьте «FrontEnd» или «BackEnd», в зависимости от специализации. Так работодатели увидят, что вы претендуете на стартовую позицию, и поймут, чем хотите заниматься.
Следующие ступени карьерного роста – Middle Web Developer (ставка 50 – 200 тыс. ₽) и Senior Web Developer (ставка 120 – 250 тыс. ₽). При смене компании с повышением позиции будьте готовы не только показать портфолио, но и выполнить тестовое задание. Часто оно проверяет знание нужных фреймворков и типичных задач – отличный стимул освежить и расширить навыки.
От обилия знаний, которые предстоит получить, и полезных ресурсов, которые помогут это сделать, голова может пойти кругом. Однако не стоит опускать руки. Помните о концентрации внимания: начните изучать все по порядку, и вы не заметите, как станете частью удивительного мира веб-разработки.
Для тех, у кого нет времени самостоятельно искать и изучать материалы, есть более простое решение. Пройдите курс факультета Веб-разработки GeekBrains и получите готовую базу навыков. В качестве бэкенда на курсе изучаются язык PHP и фреймворк Laravel, для фронтенда – фреймворк React. То есть самые популярные технологии в своих нишах. Курс поможет освоить профессию с нуля, получить диплом и создать портфолио с рабочими проектами, а в случае успешного прохождения команда университета поможет с трудоустройством. Ознакомиться с программой и отзывами можно, нажав расположенную ниже кнопку.
Как вырастить веб-разработчика от стажера до архитектора. Матрица компетенций
Когда в 2004 году я окончил университет, в нашем городе почти не было команд разработчиков. Где работать, у кого набираться практического опыта?
Выбор был прост: “админом” или “в Москву”. Или уйти из профессии.
Сейчас я преподаю веб-разработку в местных ВУЗах, руковожу большим коллективом и мне важно, чтобы в моем городе хотели жить толковые молодые ребята, чтобы наш город не считался “тухлым местом”.
Суть статьи коротко
Мы с коллегами умеем «растить» веб-программистов с “почти нуля” до уровня уверенного профессионала (Senior / Архитектор).
Хотим рассказать как все работает и поделиться с сообществом материалами и методикой.
Статья написана для студентов, начинающих и растущих веб-разработчиков.
Далее описан “трек развития веб-разработчика”, уровни компетенций “Стажер”, “Junior”, “Middle”, “Senior” и “Architect”, как я их вижу и даны примеры аттестационных заданий.
Пирамида способностей программиста или «что качать на старте»
Как стать хорошим веб-программистом? Нужно ли заканчивать «информатику» в хорошем ВУЗе? Или хватит месячных курсов? Или «с книжкой и мышкой» все можно изучить?
Три «кита», на которых стоит профессия любого разработчика на любом стеке технологий, это алгоритмизация, базы данных и собственно программирование (язык + ООП + паттерны).
Что такое алгоритмизация?
Близкий «житейский» аналог технического навыка «алгоритмизации» – ремонт вентилятора. Что делать, если «не крутится»? Проверить/сменить розетку, потом рукой крутануть лопасти, потом «прозвонить» провод.
Логика очевидна: «разделил на части и проверил каждую». Удивительно, но многие люди не умеют так мыслить. У настоящего программиста это «в крови».
Базы данных
Курс БД – один из основных, как физика для инженера. Плохо что часто преподают их одинаково плохо: сводят к «пересказыванию параграфов».
В БД важны и теория, и практика. Программист должен уметь и писать запросы, и разбираться в логике ORM, и проектировать структуру.
Какие технологии нужно знать программисту?
Из чего вообще состоит профессионализм разработчика? Указано примерное время освоения при классическом пути развития (начиная с ВУЗа).
“По уму” алгоритмизации учат в школе/ВУЗе. Тратится на это 1-2 года, и этот период определяет высоту будущего профессионального взлета. Если вы не освоите алгоритмизацию, то никогда не вырастете.
Особенности конкретного языка можно изучить довольно быстро. Если вы учите второй или третий язык, через неделю вы решите первую осмысленную задачу. А вот на “знаю в совершенстве” потребуется не менее года практики.
Фреймворки часто включают сотни модулей/классов/расширений и постоянно развиваются. Освоение фреймворка займет у вас несколько месяцев как минимум.
Многие самоучки идут по “легкому”, но неверному пути: вместо алгоритмизации начинают учить фреймворк. И уже через пару месяцев практики заявляют что умеют программировать. Серьезные собеседования они проваливают уже через 10 минут после начала.
Конкретные технологии (например AJAX, серверный рендеринг JS, push&pull, распределение нагрузки по гео-кластеру, профилировка долгих запросов в xhprof, очереди сообщений, NoSQL базы данных) бесконечно разнообразны. Учить их можно вечно.
Эту пирамиду нужно проходить “снизу вверх”. Если вы начнете с фреймворка и напишете красивое резюме, но не будете знать как работает “голый JS” или “чем get-запрос отличается от post” – профи вам не быть.
Какие задачи нужно решать?
Первый этап – “старт”. Сначала нужен навык уверенного и правильного решения относительно простых задач. Чаще всего это игровые, математические или логические задачи.
Для навыка “быстро пишу простой код” нужно прорешать на любом языке программирования любой из классических сборников задач по программированию. Например, Златопольского.
Вам может показаться странным решение 1000 скучных задач, но каждый хороший программист делал это в начале своего пути. Кто-то – в институте, кто-то в школе, наши дети будут делать это в детских садах.
Такой метод обучения у медиков называется “методом свинцовой ж*пы”. Простите за грубость, но из народного творчества слов не выкинешь.
Второй этап – “практика”. Нужно писать код, в котором через год вы сможете разобраться. Чтобы при появлении новых требований не приходилось все переписывать с нуля. Чтобы при росте проекта в 100 раз он остался “поддерживаемым”. Чтобы при добавлении в команду программистов они не покусали вас за странный стиль.
Это очень сложный переход. Многие программисты не делают его никогда: они становятся разработчиками “одной программы” или всегда пишут проекты не более чем в 200 строк. Это не уровень профи.
Чтобы научиться, нужно решать большие задачи в коллективе и параллельно читать правильные книги. Например, Роберта Мартина “Чистый код”.
“Большие задачи” – реальные сервисы, которыми пользуются люди, где команда состоит минимум из 2 человек, и состоящие из тысяч строк кода. Такие проекты формируют уверенного специалиста.
Третий этап – “мастерство”. Оно включает освоение конкретных фреймворков в рамках выбранного стека технологий. Вы должны научиться решать реальные современные задачи на высоком уровне.
Более сложная и более полезная книга – Шаблоны корпоративных приложений Мартина Фаулера. Ее тоже нужно прочитать, примерно через год-полтора работы в профессии.
А зачем? Можно просто закончить 3-месячные курсы “веб-разработчика”?
Удивительно часто на собеседование приходят “как бы программисты”. У них за плечами курсы, несколько мест работы, портфолио с красивыми сайтами (странная манера, как будто мы ищем веб-дизайнера).
При этом на простейший вопрос типа “что такое cookies” или “как работает подгрузка сообщений в ленте ВКонтакте” люди часто не знают ответа, у них даже версий толком нет.
Хороший программист знает теорию и применяет на практике, все время думая “как сделать правильно”. На “спинном мозге” и “копировании кусков кода из гугла” далеко не уедешь. Нужна база и практика.
Как получить эту “базу”? Где правильно учиться? Есть два пути. Первый – 4-5 лет в хорошем ВУЗе. Второй – несколько лет упорного самообучения и практики. Можно стать сильным программистом без профильного образования, если у вас светлая голова, открытое сердце, а вы сами готовы много работать.
Короткие курсы полезны, чтобы получить базовые знания и понять “куда рыть самому”. Профессионалом они не сделают.
Матрица компетенций. Стажер – Junior – Middle – Senior – Architect
Мы считаем что наша матрица и есть ответ на вопрос “как из новичка стать гуру веб-разработки”.
В нашем мире разработчик занимается в основном бекенд-задачами, но он не должен бояться фронтенда и администрирования (для злых задач есть узкие специалисты).
Это – таблица, разделенная на грейды (стажер, junior, middle, senior). Каждый грейд содержит набор уникальных компетенций. Вопросы сгруппированы по областям знаний (PHP, SQL, Frontend, веб-технологии в целом и управление серверным хозяйством)
Стажер
На старте стажер должен быть способен:
Почти каждый стажер удаляет базу, промахивается окном или решает заново давно закрытую задачу. Разумеется, 6ез вреда для боевых проектов.
Ошибки – нормальная часть обучения.
Junior
Junior способен решать задачи самостоятельно. Он часто советуется со старшими, но вопросы он задает совсем не стажерские.
Что практически должен уметь Junior на старте:
Middle
Middle – специалист, который способен решить сам любую типовую для отрасли задачу.
Что практически должен уметь Middle на старте:
Senior
Senior знает “свой стек” досконально, с готовностью изучает и применяет новые технологии, и работает как наставник.
Вот например, что сам Senior должен знать и уметь по блоку “Работа с серверами и Linux”.
Architect
Архитектор – следующий уровень развития специалиста, когда он продумывает архитектуры крупных проектов и руководит их реализацией. Он не только технический, но и проектный руководитель.
Такие специалисты играют ключевую роль в технически и организационно сложных проектах.
Качество архитектора определяет способность проекта выполняться в срок и развиваться много лет подряд.
Управление развитием программиста
Каждый месяц с каждым программистом индивидуально мы проводим «планерку по развитию» и разговор на другие темы о работе. Участвуют руководитель отдела, техлид и/или наставник.
Во время таких встреч мы вместе определяем приоритеты развития — сдать лабораторную или устный экзамен по компетенциям.
Как устроена проверка уровня (аттестация)?
Что такое «аттестация»? Это процедура подтверждения квалификации программиста. Ее проходят все программисты. Аттестация включает лабораторные работы и устные экзамены.
В результате аттестации в матрице компетенций появляются “Да” напротив подтвержденных компетенций. От этого увеличивается грейд, например, «Стажер-54%» → «Junior-27%».
Как проходит аттестация?
Аттестация включает теорию (устный экзамен) и практику (лабораторные работы). Цель – “закрыть” несколько компетенций в матрице, подтвердить уровень, получить новые задачи и повысить зарплату.
Практические задания можно сделать правильно только если изучить и понять теорию. Списывать и хитрить не принято, и наставник не пропустит халтуру.
Многие блоки матрицы компетенций закрываются практикой и теоретических вопросов по ним нет.
Теория. Устный экзамен
Компетенции, не покрытые лабораторными работами нужно подтвердить на устном экзамене.
По каждой компетенции мы задаем около 5 вопросов. По-хорошему ответить надо на все или почти все. Длительность устного экзамена зависит от уровня, обычно это 1-2 ч.
Практика. Лабораторные работы
Лабораторная работа покрывает сразу несколько компетенций. После выполнения лабораторной работы эти компетенции засчитываются как подтвержденные и не попадают в устный экзамен.
Лабораторная работа завершается отчетом. Отчет может включать демонстрацию чего-либо, код-ревью, устные вопросы. Набор проверок зависит от самой лабораторной.
Примерные формулировки заданий
Мы разработали около 20 заданий (называем их привычно для студентов «лабораторные работы»). Несколько – опубликуем.
Вот примеры простых заданий.
Задание 2а. «Базовый web». Реализуем CRUD на чистом PHP.
Задание 2б. Развитие CRUD-интерфейса на PHP.
Задание 10. Парсинг сайтов
Я уверен, что именно так, по шагам, с наставником и постоянным code review, через цепочку аттестаций, развивается правильный разработчик «от стажера до архитектора».
Бриллианты формируются под давлением.