Какие компетенции необходимы разработчику веб-приложений помимо умения писать код? Мы составили список скиллов для построения успешной карьеры. К ним относятся не только профессиональные знания, но и soft skills, то есть качества, помогающие работать в команде и более эффективно решать возникающие перед специалистом задачи. Этот пункт кажется очевидным, но все без исключения респонденты первым называли именно его. В качестве безусловно необходимого они отмечали знание JavaScript и PHP, языка разметки гипертекста HTML, стандарта CSS,  также крайне полезным сочли навыки программирования на Python. Еще одно требование — уверенное понимание фреймворков веб-разработки, таких как React, Angular, Vue, Laravel, Django и Ruby on Rails. Опытному специалисту по созданию веб-приложений необходимо умение обращаться с системами управления базами данных, в частности, MySQL, MongoDB и PostgreSQL. Немаловажно знакомство с такими инструментами для разработки дизайна веб-интерфейсов, как Sketch, Adobe XD, Figma и InVision. Почему перечисленные знания по-настоящему важны, объяснять не нужно: это фундамент, без которого не то что успех, а даже сама работа в профессии невозможна. В то же время технологии, языки и фреймворки развиваются стремительно, потому процесс обучения не заканчивается никогда. Это похоже на поездку в гору на велосипеде: если решишь остановиться, с большой долей вероятности покатишься назад. Иными словами, совершенствовать свои знания и навыки программирования нужно на любом уровне компетенции: от джуна до синьора. Удивительно, но факт: далеко не все веб-разработчики знают, как обращаться с Git и GitHub. Тем не менее, владение системами контроля версий особенно важно, если над проектом работает несколько сотрудников, а в большинстве компаний дела обстоят именно так. Кроме того, если речь идёт о крупномасштабных приложениях, Git значительно облегчает развёртывание проекта в рабочей среде, поэтому умение уверенно обращаться с этой технологией часто является обязательным требованием к кандидатам в командах разработчиков. Безопасность веб-приложений — важнейшая составляющая их архитектуры, и ошибки в этой области могут стоить очень дорого. Даже если разработчик отлично владеет языками программирования, в совершенстве знает соответствующие библиотеки и прекрасно знаком с системами управления базами данных, пробелы в области безопасности веб-приложений способны привести к утечке персональных данных пользователей, компрометации их учётных записей или выходу из строя всего веб-сервиса в результате удачной хакерской атаки. И, как следствие, к значительным репутационным и финансовым рискам для компании-работодателя. В некоторых случаях дыры в веб-приложении могут привести злоумышленника во внутренний периметр IT-инфраструктуры предприятия. А это уже очень серьёзно. Что входит в понятие веб-безопасности? Прежде всего, знание алгоритмов шифрования, технологий аутентификации, понимание того, как устроен и работает протокол HTTPS. Кроме того, было бы неплохо, если бы разработчик хотя бы в общих чертах представлял себе современный ландшафт киберугроз, знал, что такое XSS, XXE, какие уязвимости в базах данных являются излюбленными у киберпреступников. Важно знать, как обезопасить приложение при использовании сторонних библиотек и компонентов, например, позаимствованных на том же GitHub. Здорово, если специалист умеет обращаться с инструментами для тестирования безопасности веб-приложений, например, знает, с какой стороны подойти к Burp Suite. Такие скиллы — отличное конкурентное преимущество. Бекэнд многих веб-приложений развертывается в облачной инфраструктуре, поэтому умение уверенно работать с такими платформами, как AWS, Google Cloud и Microsoft Azure крайне важны. Нужно учитывать и то обстоятельство, что в современных условиях некоторые зарубежные облачные сервисы недоступны отечественным компаниям — прежде всего, из-за объективных сложностей с оплатой. Поэтому нужно освоить и отечественные облачные сервисы, по крайней мере, знать, чем они отличаются от зарубежных аналогов, каковы их особенности и технологические ограничения.Помимо собственно сервиса для хранения данных и работы приложений, облака предоставляют развернутую аналитику по проекту, а также богатый инструментарий для управления инфраструктурой. Умение пользоваться этими инструментами, прежде всего, аналитическими сводками, позволят специалисту проанализировать работу веб-приложения, выявить его слабые места и при необходимости оптимизировать код. Кроме того, облачные сервисы предоставляют широкий спектр функций безопасности, включая шифрование, управление идентификацией и доступом. Используя эти функции, разработчики могут обеспечить дополнительную безопасность своих веб-приложений от киберугроз на уровне платформы. Наконец, инструменты облачных провайдеров дают возможность совместно работать над кодом и следить за ходом проекта. Важно только уметь грамотно использовать весь этот арсенал. Веб-приложение должно работать не только стабильно, но и быстро: для пользователей важна скорость отклика и производительность. Никто не станет пользоваться сервисом, который непрерывно тормозит и лагает. Если речь идёт о сайте, быстродействие важно и для его индексации поисковыми системами: тот же Google учитывает скорость работы сайта как важный фактор в своих алгоритмах ранжирования. Оптимизируя производительность веб-приложения, можно уменьшить объём ресурсов, необходимых для обработки того же объёма трафика. Это может привести к снижению стоимости хостинга, а в больших проектах — к уменьшению количества серверов, необходимых для поддержки сервиса. Именно поэтому знание методов повышения производительности, таких как кэширование и оптимизация запросов к базам данных, а также умение их использовать — важный навык для веб-разработчика. Стандартизация подходов к проектированию взаимодействия в веб-приложениях значительно упрощает их разработку, а REST предоставляет стандартный набор принципов для построения API. Придерживаясь этих принципов, намного легче создавать предсказуемые API, позволяющие решать даже самые сложные вопросы с совместимостью. Веб-приложения, использующие RESTful API, обладают лучшей масштабируемостью, потому данная технология используется во многих проектах, которые, как ожидается, будут расти с течением времени. Кроме того, RESTful API применяется при создании сложных веб-приложений, требующих интеграции с несколькими системами. Иными словами специалист, знакомый с этими моделями, может принимать участие в создании гибких, масштабируемых и безопасных веб-приложений, взаимодействующих с другими приложениями и сервисами. Этот навык крайне востребован в компаниях, реализующих крупные проекты. Каждый разработчик знает, пусть даже где-то на интуитивном уровне, что такое «хороший код». Как минимум, это понятный структурированный и правильно закомментированный код, который не просто приятно читать: важно, чтобы в нём смог без труда разобраться любой новый сотрудник, только что подключившийся к проекту. На самом деле, понятие «хороший», то есть, чистый, поддерживаемый и масштабируемый код, подразумевает целый ряд формальных критериев, соответствовать которым не так уж и сложно. Этот навык вполне можно прокачать и развить. Тестирование проектов — задача тестировщиков, но для начала нужно как минимум выявить дефект, описать условия его возникновения, и, в конце концов, объяснить тестировщику на понятном ему языке, чего от него желает добиться разработчик. Это в идеальном случае. В небольших командах или при создании маленьких проектов с ограниченным бюджетом веб-разработчик очень часто оказывается одновременно и швецом, и жнецом, и дизайнером интерфейса, и тестировщиком в одном флаконе. Но даже если тестированием проекта занимается специально обученный сотрудник, он вполне может неожиданно уйти в отпуск, заболеть или сгореть на работе в условиях очередного аврала. Если коллега сможет его оперативно подменить и выполнить хотя бы базовое тестирование собственного веб-приложения, с точки зрения работодателя  это будет огромным плюсом. В отношении этого пункта картина в точности такая же, как и с тестированием: разработчик веб-приложений не обязан быть дизайнером интерфейсов, но понимание пользовательского опыта (UX) и дизайна интерфейсов (UI) даёт ему неоспоримое преимущество. Базовые знания в этой области позволят проектировать и создавать интуитивно понятные и удобные приложения, обеспечивающие положительный опыт для конечных пользователей. К тому же, программист сумеет объяснить профессиональному дизайнеру, что он желает от него получить. Если девелопер способен собрать прототип или макет дизайна приложения, это поможет выявить потенциальные проблемы или области для улучшения на ранних стадиях разработки. Как минимум, непосредственно перед релизом внезапно не выяснится, что вот эту кнопку или меню невозможно поместить в нужную позицию, потому что там недостаточно свободного места. К Agile можно относиться по-разному, но многие крупные компании активно используют эти методы в своих производственных процессах. Agile позволяет разработчикам быстро реагировать на изменения требований или рыночных условий, а сама методология предполагает разбиение проекта на более мелкие, более управляемые части, что значительно упрощает менеджмент. Поэтому если сотрудник не знаком со Scrum или Kanban, ему придётся изучать их, что называется, на ходу. Намного лучше озаботиться этим заранее — после погружения в проект на обучение может попросту не хватить времени. Веб-разработка — как новогодний корпоратив: мероприятие коллективное, она очень часто предполагает тесную работу в команде. Без прокачанных навыков взаимодействия и коммуникации специалисту, даже работающему удаленно, будет очень непросто.  Коммуникативные навыки относятся к категории софт-скиллов, но при приёме на работу многие крупные компании оценивают их далеко не в последнюю очередь. Педантичность и способность уделять пристальное внимание деталям  — синонимы качественной работы. Руководители проектов ценят это умение в сотрудниках очень высоко:  чем выше у разработчика способность фокусироваться на отдельных элементах проекта, тем меньше ошибок придётся потом вылавливать в коде. Способность эффективно управлять своим временем позволяет специалисту правильно определять приоритеты задач для выдерживания сроков разработки. А дедлайны, как известно, следует четко соблюдать, чтобы ненароком не подставить всю команду. Кроме того, правильный тайм-менеджмент — один из важнейших критериев личной продуктивности и гарантия от профессионального выгорания. Неумение планировать работу приводит к повышению уровня стресса, поскольку программисты пытаются уложиться в сроки или справиться с конкурирующими тасками в условиях растущего объёма задач, и не справляются с ними. В общем, как известно, очень многие тим-лиды больше всего на свете любят котиков и эффективных разработчиков, которые никогда не нарушают дедлайны. Котиком стать непросто, а вот научиться управлять своим временем и правильно расставлять приоритеты — вполне посильная задача. Способность мыслить творчески и находить инновационные решения сложных проблем — ещё одно полезное качество для веб-разработчика. Задачи перед ним возникают самые разные, а требования клиентов и заказчиков порой бывают столь заковыристыми, что без креативного подхода найти решение становится очень непросто. Нестандартное мышление тоже можно развить, причём этот навык будет полезен в любой профессии, да и в жизни он обязательно пригодится. Способность адаптироваться к новым технологиям, методологиям и рабочей среде — очень важна, как и готовность постоянно приобретать новые навыки и следить за развитием технологий. IT — сфера очень динамичная, поэтому разработчик должен  всегда «держать руку на пульсе». Наиболее успешными и востребованными специалистами являются те, кто хорошо адаптируется и постоянно учится. Это качество, среди других, способствует карьерному росту, а также открывает возможности работать над более сложными и интересными проектами. «За всё время, пока я наблюдаю за ростом разработчиков, мне удалось выделить одно свойство, которое гарантирует их развитие и крутые результаты. Это горящие глаза.   Когда я нанимаю на работу джунов и мидлов, то смотрю, насколько они фанаты своего дела. Если вновь устроившиеся постоянно что-то придумывают, доказывают, пробуют, читают книги, слушают подкасты — это ребята, которые мне нужны. Я точно знаю, что каждый час, который в них будет вложен, станет максимально полезным и эффективным. Такие люди будут перманентно расти, задавать нужные вопросы и развиваться. Моей же задачей в этой ситуации будет помочь им в их стремлении, а не стоять над душой. Если говорить про учёбу — одного желания недостаточно. Нужен другой навык: когда человек умеет учиться и самостоятельно интегрировать полученные знания в ежедневную деятельность. Важно быть жадным до знаний: увидел что-то новое — сел, прочитал, разобрался, применил в проекте. Также этот скилл развивается во время работы и помогает стать хорошим разработчиком. Если человек не умеет учиться, он просто ждёт, что кто-то придёт и поможет ему. Поэтому грустно слышать, когда люди по 15 лет работают в IT и не продвигаются дальше мидла», – рассказал Глеб Михеев, директор по развитию образовательной платформы в Skillbox и руководитель программного комитета конференции FrontendConf.