Кем я хочу быть, когда вырасту

Главная сложность, с которой я столкнулась в начале обучение — куда двигаться. Я не очень разбиралась в сортах тестирования и понятия не имела, что мне может понравиться, поэтому изучала сразу всё и двигалась во всех направлениях и это очень сильно затормозило вхождение в профессию.
Не хочу сейчас обсуждать куда реально попасть человеку без опыта. Тестирование в частности и IT в целом настолько разнообразная и непредсказуемая вещь, что нужно быть готовым ко всему. В том числе и к тому, что вас пригласят руководить, например (знаю реальный случай, когда человек после курсов по тестированию сразу пришел на позицию тимлида, так как у него был начальный багаж знаний, но зато большой опыт по управлению маленькими командами).
Если у вас нет четкого понимания кем вы хотите быть точно, или хотя бы понимания кем вы точно быть не хотите, то я немного расскажу о возможных вариантах (хотя многие попадают в тот или иной вид тестирования случайно — например я пришла в бэкенд потому, что офис был в Петергофе, а я жила рядом, поэтому мы с работодателем как-то сразу полюбили друг друга, а потом я нежно полюбила тестирование API).
Итак, куда можно хотеть пойти работать (список с последующими размышлениями) тестировщиком:
- тестирование фронтэнда (интерфейсы)
- тестирование мобильных приложений
- автотестирование (fullstack — авто+ручное)
- нагрузочное и перфоманс тестирование
- тестирование бэкенда
- тестирование игр
- тестирование мобильных игр
- руководство командой тестировщиков
- тестирование девайсов
Тестирование фронтенда. Считается самым простым для начала, так как все мы немножко тестировщики — ходим на сайты, пользуемся интернет-магазинами, читаем блоги — чаще всего мы уже знаем где ждать от них подвоха. Но минимальный набор знаний тут все же нужен: техники тестирования, баг-трекинг (как правильно заводить баги), общие знания об архитектуре веба, умение пользоваться dev tools и прочее. Большинство курсов готовят именно тестировщиков интерфейсов, и некоторые даже готовят хорошо. В сети тонны литературы на эту тему, много бесплатных видео на ютубе, так что при желании можно подготовиться самостоятельно. Вникнуть в терминологию, понять что такое граничные значения, тест-кейсы, чек-листы.
Тестирование мобильных приложений. Все тоже самое, что и с фронтендом, но добавляются знания о мобильных платформах, о том, какие они бывают, что такое эмуляторы и симуляторы. Также нужно знать как себя ведут мобильные устройства (при включении-выключении GPS, во время входящего звонка, или при переключении окон — нюансов масса). Литературы на эту тему меньше, но она есть. Равно как есть и видео на тему мобильного тестирования.
Автотестирование (fullstack — авто+ручное). Сразу оговорюсь — речь сейчас не о чистых автоматизаторах, которые, скорее, разработчики, чем тестировщики (такие, которым приносят готовые сценарии, подробно расписанные, и они пишут для этих сценариев автотесты). Я сейчас хочу сказать о гибридных автотестировщиках. О тех, которые и продукт изучают, проверяют руками, и документацию знают, и могут автоматизировать сами то, что необходимо. Это такое тестирование полного цикла, для которого нужно хорошо знать и основы тестирования (все, о чем я говорила в той части, где рассказывала про фронтенд), и аналитику немного, и один из языков программирования + минимум один из тестовых фреймворков. Тут очень сложно угадать с языком. Если вы уже знаете азы какого либо, просто стоит развиваться в этом направлении. Если нет — проще всего взяться за Python+Selenium (благо есть отличные бесплатные курсы на Степике и много прочей информации). Самое распространенное тестирование идет на Java. Также начинает набирать популярность C#, иногда встречаются вакансии на Kotlin и т.п. Самое главное принять решение и двигаться в одном направлении, так как вас постоянно будут сбивать с пути вакансии, в которых будет указываться не тот язык, который вы сейчас изучаете и будет казаться, что все зря.
Нагрузочное и перфоманс тестирование. Сами себя такие люди называют иногда грузчиками. Это ужасно интересная часть тестирования, которая требует неплохого технического бэкграунда, умения работать с тестовыми стендами и тестовым окружением. Нужно изучить что такое докер, JMeter, знать один из языков программирования (не для всех вакансий актуально), представлять себе что такое метрики, понимать как расчитывать нагрузку, и вообще — это достаточно узкая специализация, которая к тестированию относится не очень сильно (хотя нет, понятие граничных значений у нагрузочников, конечно, есть). Я сама занимаюсь нагрузочным тестированием через SOAPUI, но только потому, что он основной инструмент в нашем проекте. Поэтому если вы уже используете его, то можно попробовать подергать LOAD тесты в нем. А вообще на странице со ссылками у нас есть целый раздел про нагрузочное. Для меня лично это один из самых интересных путей развития в данный момент.
Тестирование игр. Быть тестировщиком игр сложно двум категориям людей — запойным игроманам и тем, кто не играет вообще. Первые быстро потеряют вкус игры, а вторые просто будут мучаться, пытаясь разобраться что такое игра в целом и не смогут понять своих пользователей. Остальным тестирование игр может даже понравиться, несмотря на то, что занудных моментов и бюрократии в этом типе тестирования ровно столько же, сколько и в тестировании фронтэнда. Для геймдева нужно знать тот же набор главных вещей, что и для обычного тестирования (граничные значения, методики тестирования, уметь писать тест-кейсы и все вот это вот). Т.е. обычные курсы по тестированию здесь работают. Ну и, конечно, нужно знать как строятся игры (логика, сценарии, ожидания пользователей).
Тестирование мобильных игр. Просто вариант пункта выше — кроме всего вышесказанного, нужно еще понимать Андроид/iOS, знать чего ждать от игр на телефонах, изучить различные симуляторы и эмуляторы, знать как телефон устроен (блютус, gps, входящие звонки, пуши и прочее).
Руководство командой тестировщиков. С одной стороны руководителю не нужно знать всё. Это вообще может быть не самый талантливый тестировщик или автоматизатор. Но с другой, в лидерство и менторство нужно идти с хорошим бэкграундом и полевыми стрельбами. Т.е. не поработав в чистом тестировании, идти в тимлиды наверное не очень хорошо (хотя, возможно, и есть положительные примеры. Но если вы пришли в тестирование и поняли, что хотите расти в сторону руководтсва (далеко не каждый человек испытывает такое желание), то стоит кроме теории тестирования и как минимум года работы, хорошо бы пройти курсы по тест-менеджменту, тест-дизайну, тест-аналитике, так как в реалиях небольших команд тимлид воплощает сразу все эти роли и выполняет все эти обязанности. А еще хорошо бы взять курс по менторству в IT (сейчас у Яндекс.Практикума такой курс есть), так как здесь есть свои нюансы. Везде тимлиды, руководители группы тестирования, или менеджеры отдела тестирования занимаются немного разными вещами — кто-то сам занимается проверками, у кого-то для этого нет времени, но общие моменты есть у всех, и учиться быть лидером нужно точно так же, как мы учимся программированию или иностранному языку.
Тестирование девайсов (точнее тестирование ПО, связанного с девайсами). Это особый вид тестирования. Во-первых редко встречаются такие вакансии и поэтому нельзя заранее угадать, чему учиться. Но конечно — всему тому же, чему и для обычного тестирования. Все азы, теория и затертые до дыр истины будут работать и здесь. Однажды я тестировала фитнес-браслет, который производится в Петербурге, и это был странный, но интересный опыт.
Этот сайт поддерживают мои старые друзья — международный конкурс фортепиано для молодежи. Спасибо им!
Чем занимаются fullstack-разработчики: спрашиваем у них

Fullstack-разработчики — это универсальные специалисты, которые могут самостоятельно создать продукт, потому что разбираются и в программно-аппаратной части сервиса, и в построении интерфейса пользователя.
Компании открывают вакансии для FullStack Developers, поскольку часто нужно разработать MVP или же поддерживать технически несложный сайт. В таких случаях одному человеку проще разобраться в логике, и он может быстро вносить изменения.
Мы спросили у Кирилла Козака, Co-founder Lambda Team, Данила Толмачева, Fullstack Engineer и Team Lead в Techstack, и Олега Бильки, Fullstack-разработчика в Grid Dynamics, какие задачи они решают, как стать фулстеком и в чем плюсы и минусы профессии.
Базовые знания fullstack-разработчика
Fullstack должен знать в два раза больше, чем frontend- или backend-разработчик, и быстро разбираться в новых инструментах. Для этого ему нужна техническая база: основы ООП, знания алгоритмов и структур данных, основы сетевых систем. Также для fullstack обязательны знания баз данных. Для того чтобы «закрыть» весь стек веб-разработки, программист должен иметь хотя бы базовые знания DevOps.

Кирилл Козак:
«Есть фулстек-разработчики, которые понимают не только фронтенд и бэкенд, а еще и DevOps. Они закрывают цикл разработки самостоятельно, делают архитектуру на бэкенде, подсоединяют к дашборду, чтобы все работало. Таким образом, среду разработки и деплоя в продакшн строит один человек».

курс по теме: Алгоритмы и структуры данных
Артем Верещака Tech Lead в Bolt

Задачи и обязанности fullstack-разработчика
Fullstack-разработчики — эксперты во внешнем и внутреннем интерфейсе и владеют полным набором технологий, из которых состоит веб-сайт. Они работают как с клиентскими, так и с серверными языками и фреймворками в серверных, сетевых и хостинговых средах.

Олег Билька:
«Вокруг концепции разработчика полного стека много споров, потому что некоторые люди сомневаются, может ли такой человек существовать.
Появляется все больше элементов и функций для веб-сайтов и веб-приложений. Их количество выросло до такой степени, что быть по-настоящему “полным стеком” невозможно.
Термин fullstack означает разные вещи для разных людей, в зависимости от ниши. Он может быть отличным вариантом для стартапов и команд с ограниченным бюджетом. Как член команды fullstack-разработчик может взять на себя ответственность за проект, быстро итерировать продукт и устранить проблемы по мере их возникновения.
Этот специалист должен обладать навыками в разных нишах разработки: от баз данных до графического дизайна UI/UX. Он может заменить нескольких узких специалистов».
Основные обязанности fullstack-разработчика:
- Помощь в проектировании и разработке программного обеспечения;
- Написание чистого кода для frontend- и backend-частей;
- Тестирование и отладка;
- Проектирование модели данных и архитектуры;
- Обслуживание серверной части;
- Тестирование и поддержка адаптивного дизайна приложений;
- Работа с графическими дизайнерами над созданием новых фич;
- Разработка API и сервисов RESTful/GraphQL;
- Забота о безопасности, обслуживании, масштабируемости продукта.
Fullstack-разработчики также разбираются в бизнес-логике и пользовательском опыте, а это означает, что они могут участвовать в разработке стратегии.
Какие инструменты нужны фулстеку
Из frontend-инструментов нужно знать HTML и CSS, уметь сверстать и стилизовать веб-страницу. И поскольку «монополист» во фронтенде — язык JavaScript, знать его тоже необходимо.
Для того чтобы веб-страница не только отображала информацию, но и имела функциональность, разработчику нужны frontend-фреймворки. Сейчас популярны Angular, Vue.js и React. Для fullstack-специалиста достаточно знания одного из фреймворков.
В backend-части большой выбор языков. Стоит рассмотреть:
- — специально разработанный для веба PHP;
- — «классические» для enterprise инструменты: Java и ASP.NET;
- — молодой и популярный среди стартапов Node.js;
- — Ruby, Python, Scala и другие.
После того как определились с серверной технологией, нужно понять, где хранить данные. Базы данных делятся на два типа: реляционные (подходят для более структурированных данных, которые легко разделить на связанные между собой таблички) и нереляционные (данные хранятся без четкой структуры). Реляционные базы поддерживают язык запросов SQL. Самые популярные реляционные базы: PostgreSQL, MySQL, MicroSoft SQL Server, Oracle Database. Среди нереляционных (или NoSQL) баз данных популярна MongoDB.
статьи по теме:
Универсальность, развитое сообщество и популярность.
Рассказывает FullStack Developer (React/Node.js) в SoftServe.
Для fullstack-разработчика полезны и другие инструменты:
- — для хранения, версионирования и построения непрерывной интеграции и поставки (CI/CD) — Github, Gitlab, Bitbucket;
- — для запуска приложений — Docker, Kubernetes;
- — для документирования и тестирования API — Postman, Swagger;
- — для хостинга приложений — облачные сервисы AWS, MS Azure, GCP, Heroku.
Преимущества профессии
Среди плюсов для самого разработчика — гибкость в выборе карьерного развития. Он работает и с фронтенд-, и с бэкенд-частями веб-приложения, а значит, углубляется то в одну, то в другую сферу, поэтому может выбрать, в какой роли развиваться.
Разработчику можно быть гибким в выборе направления, потому что фулстеки — T-shaped специалисты.
Среди преимуществ для проекта — скорость разработки и самостоятельность девелопера.

Данил Толмачев:
«Фулстек-разработчик — мультифункциональный человек. Многие бэкенд-разработчики хотят писать код на фронтенде, потому что результат работы видно. И наоборот, некоторые люди не хотят заниматься фронтенд-разработкой и связываться с дизайнерскими задачами.
Когда работаешь фулстеком, приходится сталкиваться со всем сразу и отвечать за все. Это одновременно и преимущество, и недостаток работы.
Но маленький проект фулстек-разработчик может сделать без сторонней помощи. Это будет полноценный проект, включающий фронтенд-часть (например, HTML/CSS), которую можно будет презентовать или включить в резюме, и бэкендовскую часть, которая будет иметь сложную бизнес-логику, поддерживать состояние или работать с базой данных».

Олег Билька:
«Fullstack-разработчик не обязательно должен иметь глубокие знания во всех используемых технологиях. Он может очень быстро создать прототип продукта или MVP, а также помочь каждому в команде сэкономить время на общение и интеграцию между слоями. Многие из фулстеков становятся предпринимателями или техническими партнерами в стартапах».
Недостатки профессии
Для разработчиков есть явный минус: за всеми технологиями и так не угнаться, а фулстеку приходится бежать в два раза быстрее — изучая как бэкенд-, так и фронтенд-технологии. И хотя обширность знаний — не минус, потребность изучать все и сразу отнимает больше времени и сил.

Кирилл Козак:
«Фулстек-разработчик разбирается лучше либо во фронтенде, либо в бэкенде. Такие разработчики нужны рынку. Их будет все больше, потому что зарплаты у них выше, чем у фронтендера или бэкендера.
Недостатки для проекта — все завязано вокруг одного человека, и когда он пропадает, проект останавливается. Я считаю, что на проекте должны быть люди с разными ролями — тимлид, DevOps, фронтенд- и бэкенд-разработчики.
Фулстек — это скорость, которая нужна стартапам. Он хорош на early-stage, но когда проекту нужна стабильность — следует разделять роли».
Также часто заказчики дают слишком много требований, не разбираясь, что входит в компетенции фулстек-разработчика. Например, оценивают работу одного фулстека в такие же сроки, как если бы над проектом работали два отдельных специалиста — фронтендер и бэкендер.

Данил Толмачев:
«Если сравнивать хороших фронтенд- и фулстек-разработчиков, то фронтендщик будет чуть-чуть лучше в нюансах, в которых фулстек может быть поверхностным. Здесь играет роль и опыт, и то, как часто он встречается с определенными задачами и как их решает. Но это не значит, что фулстек выполнит задачу хуже — ему просто понадобится больше времени.
Фулстек-разработчик проигрывает бэкендщикам и фронтендщикам, когда нужен узкоспециализированный специалист. Заменить фронтендщика фулстеком можно, но на практике все зависит от технологий».
Исповедь full stack разработчика
Ну привет. Зовут меня Олег, если читал мою статью о переезде, то уже знакомы. Если нет – милости прошу, там и познакомимся, а потом возвращайся.
Давай сразу к делу. Здесь мы обсудим термин «full-stack developer» и всё, что с ним связано. Сам я (как и большинство, думаю) начинал с одной технологии. Но пришел к тому, что одной ограничиться нереально. Ну, собственно, и задался целью поделиться своим видением этого. Пристегивайся, начинаем…
В начале был С#.
В далеком 2012 (смешно) я начал узнавать, что такое программирование. То был второй курс техникума, и мы начали изучать программирование в целом. Так случилось, что из всего, что преподавали, мне наиболее зашел C#. Думаю, просто потому, что из вариантов были Assembler, C++, Pascal (не для разработки, но и он был) и C#. Ну тут выбор очевиден. Тогда я решил написать диплом на C# и даже не знал, что такое .NET, и что это как-то связано с ним. Я просто решил, что остальное, что мы изучали, точно не для меня. Еще услышал про XNA Framework, ну и, короче, диплом мой состоял из кучи «спрайтов» и двух тысяч строк в одном файле. В лучших традициях. Но в итоге именно так я определил свое основное направление и подсел на .NET.
Но я не ударился в изучение языка и всех его аспектов. Более того, понятия «full-stack developer» я и близко не слышал и не интересовался. Было принято решение плыть по течению и изучать все, что дают. Никаких дополнительных лекций, ни капли усилий, потраченных во внеклассное время на более детальное изучение, зафиксировано не было. А зря, ведь с нынешними тенденциями в ИТ-сфере (да и не только там), возможно, только самообразование и может принести самые богатые плоды. В дальнейшем у меня проявлялись огромные пробелы в знаниях, и это мне ой как понижало самооценку.
Пробелы в знаниях
Во времена первых собеседований я осознал, что у меня большие проблемы. Все из разряда «ты идешь на собеседование, а там, оказывается, знания нужны». Выяснилось, что я не так уж и много знал о том , как происходит взаимодействие на уровне памяти, мог взять и перепутать, кому выделяется процессорное время, и много всего другого. А еще одно из самых важных — в английском-то я был профан (я 5 минут пытался понять, что вопрос был про миграции баз данных). Да и не умел нормально держаться во время собеседования, нервничал, путался в словах, не понимал, почему-это меня так гоняют, если я пришел собеседоваться на позицию trainee. Было нереально стыдно. Так вот — возможно, я просто плохо готовился к собеседованиям. Но дело не в этом. Я осознал, что нужно изучать то, что действительно востребовано в моей области. Понимать, что следует прокачивать, а что уже не стоит потраченного времени, куда вкладывать усилия, а что лучше забросить. И волей-неволей я уже находился где-то близко к осознанию понятия той самой разновидности разработчиков.
После n-ного собеседования я узнал от товарища, что он проходил Академию, и что это была просто потрясающая прокачка скиллов. Я решил попробовать. И это была чуть ли не смертельная попытка. Потому что так я еще не пахал. Ну а там уже закрутилось: меня, можно сказать, принудительно окунули с головой в омут с огромным количеством различным технологий. А там — хочешь не хочешь, а разбираться нужно, и разбираться стремительно. Так что я даже не успел ощутить в полной мере всю ущербность своих знаний, так как начал их пополнять семимильными шагами. Тут мне, конечно, повезло, я попал на бесплатные уроки жизни. А дальше уже дело техники.
Кто такой «full-stack» разработчик
Так кто же такой фулстек? В принципе, можно и без определения обойтись, если неинтересно. Я, например, сначала стал им, а потом интересовался, кто это такой. Я нашел несколько обозначений, выдранных из комментариев на DOU. Некоторые из них:
- «Full-stack developer – это еще одна попытка «работодателей» получить задешево, то, что никогда дешевым быть не могло. Это такой же психологический прием, как и “вы же профессионал!”».
- «Вы в универе сайтики под заказ делали? Если да, то это оно и есть, только красивое название, в окультуренной форме».
- «Это из словарика “крутых названий для простых профессий”: “фулстек программист” – IT-разнорабочий».
- «Если кратко, full stack developer – это новое название вебмастера. То бишь человек, который умеет делать сайтики. То есть человек, который обладает околонулевыми знаниями в разработке ПО».
То есть, если обобщить все приведенное выше, то получается, что «full-stack developer» – это IT-разнорабочий, который клепает «сайтики», ничего не шарит в разработке, а местами является просто психологическим приемом для экономии на человеко-ресурсах. Мое мнение — сколько разработчиков, столько и определений. Можно, конечно, опираться на что-то общепринятое и, тыкая всем в лицо какую-то мнимую официальную формулировку, хвастаться и говорить, мол, “смотри, кто я такой, — здесь вот как написано!”. А можно просто делать то, что нравится, и с неизменным выражением лица, взвешенно и стремительно пополнять свой “сундук знаний”.
«Full-stack developer» — нечто большее, чем просто еще один вид разработчиков, как по мне. Это образ мышления, который позволяет раскрывать и изучать новые горизонты. Пребывая под влиянием таких же разработчиков, с огромной скоростью получается глубже разбираться в чем-то достаточно знакомом и узнавать что-то еще неизвестное. После некоторого времени нахождения в таком образе видения окружающего технологического мира начинаешь замечать, насколько легко можно переключаться не только между языками, но и между подходами к разработке, технологиями и архитектурным построением, и понимаешь, что это стоит затраченных усилий.
Говоря более конкретно, «full-stack» разработчики – это T-shaped люди, обладающие глубокими знаниями в своей основной сфере и имеющие дополнительные знания в смежных областях. Серверная часть, клиентское приложение, оптимизация производительности, DevOps — все выше перечисленное и многое другое подпадает под категорию того, чем может заниматься «full-stack». И я считаю такую широкую область потенциальных возможностей самым большим плюсом таких разработчиков.
Что нужно делать, чтоб стать «full-stack» разработчиком
Ну не будет ни здесь, ни где-либо мануала на подобии “Что нужно, чтобы стать full-stack?”. Так не работает. Для начала было бы хорошо разобраться в чем-то, что интересно, но если и пересекается с основным направлением изучения, то очень поверхностно. Ну и плюс, конечно, глубокое прокачивание в основной технологии. Дальше все будет приходить с опытом и с осознанием истинной ценности всестороннего развития. Нужно просто определить, что интересно, что в тренде и что может сделать жизнь проще. А там просто поспрашивать у знакомых / друзей / коллег, кто что изучал и что при этом использовал. И дальше за дело берется старая-добрая матушка учеба.
Так вот я так и сделал. Начал параллельно прокачивать JS, немного читать полезные книги по лидерству, продолжил посещать курсы английского. Каждый интересный вопрос или баг во время разработки или обучения подлежит обсуждению с другими. Более того, даже в моем .NET стеке есть еще довольно много чего, что стоило бы изучить более детально. Чтобы закреплять знания, можно писать какие-то свои мини-проекты чисто для понимания того, как это работает на практике.
В любом случае, всегда есть что изучать, и для меня главное — просто взяться за какой-то обучающий курс или книгу и довести до конца.
Почему бы не быть просто разработчиком
Да можно быть, почему нет. Все зависит от стремлений. Например, если моя цель быть просто гуру в том направлении, каким я занимаюсь, чтобы на какую-то конкретную узкоспециализированную позицию меня брали с руками и ногами, то пожалуйста. Да и в таком случае «full-stack’ом» будет довольно тяжело стать, а даже и не нужно – цели-то другие.
В моем случае есть довольно большое стремление изучать все, каким-либо образом связанное с моей специализацией, и я хочу иметь возможность презентовать свои знания как широкопрофильные. В этом случае всплывает определение «full-stack».
Я не говорю, что узкая специализация — это плохо. Или что мне просто лень разбираться в чем-то достаточно глубоко. Тем более, у меня есть основная технология, в которой я не перестаю прокачиваться. Но вместо траты всего доступного времени только на что-то одно конкретное, я выделяю достаточно времени на расширение своего кругозора путем изучения чего-то нового, но достаточно тесно пересекающимся с моими направлениями развития.
Меня больше привлекает обучение в сторону нескольких технологий, языков, подходов, прокачивание лидерских навыков, изучение как минимум английского, и все в таком духе. Мне просто нравится иметь представление обо всем, что окружает меня в технологическом плане. Потому-то я считаю, что быть «full-stack» разработчиком – самый правильный шаг для меня. Меня привлекает то, что чем шире область моих знаний, тем интереснее и полезнее общаться с людьми. Когда я копал и топил только за .NET, то я не мог участвовать ни в обсуждениях, ни в спорах людей с других направлений. Просто не имел достаточной информационной базы. А сейчас чувствую, что мои взгляды очень круто меняются и расширяются. И это то, что мне нравится.
И что в итоге
По сути, мое жизненное направление не изменило вектор своего движения, а окружение не перевернулось с ног на голову. Но есть такое чувство, что я раскрыл глаза намного шире. Я все также интересуюсь .NET’ом и прокачиваю его по максимуму. Но оно и понятно — основная технология, все дела. Но я также уделяю достаточное внимание всему, что связано с разработкой: тайм-менеджмент, смежные технологии, лидерские навыки, преодоление языковых барьеров — тщательно расставляя приоритеты. Для меня – это зона комфорта. Я рад тому, что для поиска того, что конкретно мне нужно и каким образом удовлетворять свое эго, я не потратил десятилетия. Также мне импонирует возможность общения вне круга моей основной области знаний. Таким образом я доказываю себе, что развиваюсь и прогрессирую. Конечно, есть вероятность, что в будущем я приду к еще более прогрессивному и эффективному способу развития. Но на данном этапе меня вполне удовлетворяет расширение своего кругозора путем изучения широкого стека технологий, ну и, конечно, постепенное совершенствование в среде .NET.
Кто такой Full-stack разработчик

![]()
29.07.2020
![]()
45765
Рейтинг: 5 . Проголосовало: 7
Вы проголосовали:
Для голосования нужно авторизироваться

- Споры вокруг Full-stack
- Разновидности Full-stack разработчиков. Стек языков и технологий для каждого
- Плюсы профессии Full-stack Developer
- Минусы профессии Full-stack Developer
- Как стать Full-stack разработчиком?
- Зарплаты Full-stack разработчиков
- Итоги
Обновлено 9 июня 2023 года
Привет, друзья!
Full-stack разработчик (произносится “фулл стек”) — это некий мастер на все руки в мире веб-разработки. Ему под силу реализовать как клиентскую, так и серверную сторону приложения, которыми, обычно, занимаются FrontEnd и BackEnd разработчики раздельно друг от друга. Таким образом, Full-stack специалист способен в одиночку вести проект от начала до конца.
Еще в далеких нулевых и ранее не существовало подобного разделения обязанностей между разработчиками. Относительная простота разрабатываемого ПО, равно как и технологии того времени, позволяли держать процессы, которые сейчас выполняют разные люди, в одних руках. К примеру, в те времена IT-специалист, именуемый веб-мастером, и внешний вид сайта создавал, и серверную часть реализовывал, и размещал сайт на хостинге. То есть, Full-stack разработчики существовали и раньше, просто никто их так не называл.
Однако, IT-сектор не стоял на месте. Требования к программным продуктам росли, появлялись новые языки и технологии, менялись подходы к разработке. Древо IT начало становиться все более и более ветвистым, порождая новые специальности. Вместе с этим, профессия универсального бойца разбилась на два отдельных направления, а затем вновь возродилась с гордым названием “Full-stack Developer”.
Споры вокруг Full-stack
Не все так гладко, как кажется с первого взгляда. Множество опытных программистов и IT-специалистов высшего звена не признают данную должность по определению. “Почему?” — спросите вы. Ведь раньше были те же веб-специалисты, которые успешно совмещали обязанности современных направлений — фронта и бэка. Почему сегодня понятие Full-stack вызывает споры?
Распространено мнение, что Full-stack разработчиков не существует, а те, кто таковыми называются, на самом деле не соответствуют требованиям этой специальности.

Например, Сергей Немчинский — программист с 20-летним стажем, руководитель и владелец учебно-производственной компании FoxmindEd — в опубликованном видео на YouTube отзывается о Web Full-stack разработчиках следующим образом (ссылка):
“В принципе, в идеале, Full-stack разработчик — это классно и замечательно. Проблема в том, что… Таких не бывает. Фактически, всё, что мы имеем на рынке из тех людей, которые называют себя Full-stack девелоперами — это примерно 50% BackEnd девелоперов, которые немножко подучили FrontEnd и уже могут Angular или React скомпилировать и, соответственно, собрать-подключить — плюс немножко понимают в верстке — даже не на уровне Junior верстальщика. Они в большинстве случаев сделать хорошо, красиво не могут никак. Максимум, что могут — сделать так, чтоб кнопка нажималась.
Либо же Full-stack девелоперы — это оставшиеся 50% FrontEnd разработчиков, которые немножко выучили BackEnd; в большинстве случаев — какой-нибудь Node.js. Может быть PHP. Такой разработчик минимально умеет что-нибудь подрихтовать, но, опять-таки, говорить о том, что он сядет и напишет вам нормальное Full-stack приложение — нет, нет и еще раз нет.
Честно скажу, мне идея с объединением в Full-stack девелоперов кажется, с одной стороны, не очень удачной, потому что фактически мы получаем “ни рыба, ни мясо”. С другой стороны, рынок требует — значит, надо. Поэтому востребованность у Full-stack девелоперов, по большому счёту, чуть больше, чем у “чистых” BackEnd или FrontEnd разработчиков. Однако, рынок уже осознал, что они (Full-stack разработчики) в своем большинстве “ни рыба, ни мясо” и потому термин “Full-stack” начинает пропадать. Теперь просто считается, что это BackEnd разработчик с небольшим знанием фронта и, наоборот, FrontEnd разработчик с небольшим знанием одного из BackEnd-языков. Мне кажется, что так гораздо правильнее”.
Другие разработчики склоняются больше к тому, что Full-stack разработка — это ни что иное, как уловки бизнеса. Работодатель не желает переплачивать за двух разных специалистов, предпочитая более дешевого аналога, умеющего всё то же самое.
По сути, весь спор касаемо Full-stack разработчика завязан на скептицизме. Сторонники мифологичности данной профессии не верят в существование разработчика, способного хорошо реализовать как FrontEnd, так и BackEnd части, поскольку за обеими скрывается множество технологий и языков, а выучить всё и работать не хуже фронтендеров и бекендщиков — практически невозможно.
Те же, кто занимаются Full-stack девелопментом, парируют, указывая на большое количество времени, проведенного за разработкой, в ходе которого так или иначе приходится заглядывать по другую сторону баррикад и разбираться во всех процессах, которые сопровождают разработку всего проекта от и до. Ну а дальше дело техники — учишь необходимые инструменты, практикуешься и можешь самостоятельно работать над целым проектом. Конечно, познания во всех используемых языках и технологиях у Full-stack специалиста будут не столь глубоки, как у узкоспециализированных собратьев по цеху, но сделать полноценный рабочий проект с нуля, реализовав как BackEnd, так и FrontEnd ему будет под силу.
Тема связана со специальностями:
Разновидности Full-stack разработчиков

Вариаций Full-stack разработчиков, на самом деле, множество: PHP Full-stack Developer, Node.js Full-stack Developer, Java Full-stack Developer и так далее. Название, которое стоит в самом начале специальности, говорит о том, какой язык/платформа берется за основу во время реализации BackEnd части. Стек технологий FrontEnd-а практически всегда одинаков и отличается лишь используемыми JavaScript-фреймворками — Angular, React или Vue.js. А вот бекенд предоставляет гораздо больше возможностей для реализации своих амбиций.
Еще раз проговорим, что Full-stack Developer — это разработчик, который принимает непосредственное участие во всех этапах разработки веб-приложений — от создания клиентской части (визуальная часть + пользовательская логика) до реализации серверной (базы данных, серверная архитектура, программная логика). Какой стек технологий и языков находится в распоряжении данного специалиста? Если говорить о FrontEnd составляющей (клиентская сторона), то она у всех примерно одинакова:
- язык вёрстки HTML и язык стилей CSS;
- языки программирования JavaScript и TypeScript;
- препроцессоры SASS и LESS;
- фреймворк Angular//Vue.js или библиотека React;
- технологии DOM, AJAX, REST API, знания об интернете и веб-технологиях в целом;
- навыки адаптивной и кроссбраузерной вёрстки.
А что нужно знать full stack разработчику из серверного набора? Теперь разберемся с ответвлениями в бекенде, которые указывают на популярные языки и технологии, использующиеся во время реализации серверной стороны разрабатываемых веб-приложений.
Node.js Full-stack Developer
BackEnd составляющая (серверная сторона) может иметь различную начинку, в отличии от FrontEnd. Если говорить о Node.js Full-stack разработчике, то в качестве основного языка выступает JavaScript, а сам стек следующий:
- платформа Node.js;
- фреймворки Express.js, Nest.js;
- пакетный менеджер npm;
- Web Sockets;
- понимание REST API;
- другие специализированные технологии.
Java Full-stack Developer
Главный акцент делается на язык программирования Java и связанные с ним технологии. BackEnd-стек у такого разработчика должен быть следующим:
- язык Java + Java Core;
- веб-сервер Apache;
- инструменты для комфортного взаимодействия с БД – JDBC, Hibernate;
- веб-сервисы;
- фреймворк Spring и его популярные модули (Spring MVC, Spring Boot, Spring REST, Spring Web и т. д.);
- применение облачных сервисов Google Cloud, AWS или Azure;
- знание сервлетов, JSP (Java Server Pages);
- знание микросервисов.
ASP.NET Full-stack Developer
.NET разработчики имеют широкий инструментарий для самореализации в вебе. В качестве основного языка программирования они используют C#. Копилка знаний BackEnd части у ASP.NET Full-stack Developer-а должна содержать:
- язык C#;
- знание инфраструктуры .NET;
- платформа ASP.NET MVC / ASP.NET Core (Web API);
- Entity Framework (Core);
- облачный сервис Azure;
- язык T-SQL;
- понимание RESTful API;
PHP Full-stack Developer
PHP — классический язык веб-разработки. Типичный BackEnd-стек данного разработчика отличается от остальных своей компактностью. РНР в вебе уже достаточно давно, а потому ему многого не нужно, а достаточно лишь:
- собственно, сам язык PHP;
- фреймворк Yii2/Symfony/Laravel.
Python Full-stack Developer
Универсальность Python не знает границ! Не стала исключением и сфера веб-разработки. BackEnd-стек Python Full-stack специалиста следующий:
- язык Python;
- фреймворк Django/Flask;
- REST API;
- Web Sockets;
- навыки работы с ОС Linux и веб-сервером Nginx/Apache (возможно);
- опыт работы с облачными сервисами.
Также, помимо специализированных технологий, всем Full-stack разработчикам необходимо:
- знать систему управления версиями Git + сервис для хостинга IT-проектов GitHub;
- знать реляционные (SQL) и нереляционные (NoSQL) базы данных, уметь их проектировать;
- разбираться в протоколах HTTP, HTTPS и работе FrontEnd + BackEnd в целом;
- уметь оперировать языком запросов SQL и одной из СУБД — MySQL / PostgreSQL / SQLite, либо одной из NoSQL СУБД (MongoDB, Redis, Cassandra, например);
- уметь проводить тестирование приложений;
- осуществлять Code Review;
- использовать Docker;
- владеть английским языком на уровне Intermediate и выше;
- знать популярные паттерны программирования и уметь их реализовывать;
- иметь хорошее знание алгоритмов и структур данных.
Также, от Full-stack специалиста могут потребовать навыки мобильной разработки, если работодатель будет намерен портировать веб-приложение на соответствующие платформы.
Как видите, список необходимых языков и технологий для создания хорошей серверной составляющей веб-приложений достаточно внушительный. В следующей главе мы разберемся, какие преимущества и недостатки подстерегают тех, кто таки намерился связать свою профессиональную деятельность с Full-stack разработкой.
Плюсы профессии Full-stack Developer

Возможность самостоятельно вести целый проект
Очевидное преимущество разработчика данной направленности заключается в объединении двух течений — FrontEnd и BackEnd — в одном специалисте. Помимо того, что такой профессионал способен реализовать обе части веб-приложения, он может беспроблемно настроить их взаимосвязь, что является частым камнем преткновения между фронтендщиками и бекендщиками. Тем самым устраняются недопонимания и противоречия, которые бы неизбежно возникли между несколькими разработчиками, трудящимися над одним и тем же продуктом.
Вячеслав Лобода, Senior Full-stack PHP Developer, о своей профессии отзывается следующим образом:
“Часто при решении задач веб-разработки возникает необходимость вносить правки одновременно и во FrontEnd, и в BackEnd. Для этого можно нанять двух разных специалистов или одного Full-stack разработчика. Последний вариант позволяет сэкономить время на коммуникацию”
Данный отзыв, а также все последующие взяты из статьи на dou.ua “Карьера в IT: должность Full-stack разработчик”.
Высокая скорость разработки, возможность принимать собственные решения, минимальные траты времени на лишнюю коммуникацию
Видео курсы по схожей тематике:

Практикум курса C# Стартовый на примерах из GTA 5

How To JavaScript

Unit тестирование в Java с JUnit
Full-stack разработчик — это уже специалист достаточно высокого уровня, который способен принимать определенные самостоятельные решения, не тратя время на лишние обсуждения и согласования с другими разработчиками, ведь проект целиком и полностью находится под его крылом.
“Нравится, что могу создавать веб-приложения в одиночку, меньше задержек при работе. Например, когда работаешь как FrontEnd и нужно, чтобы BackEnd отдавал новые данные, ты просишь коллегу внести изменения, ждешь. Full-stack разработчику ждать никого не нужно. Взял и сделал как надо” — Геннадий Догаев, Web Full-stack Developer
Легкость поиска работы на фрилансе
На биржах фриланса заказчики зачастую ищут такого веб-специалиста, который сделает всю работу самостоятельно без привлечения дополнительных разработчиков. Кто, как не Full-stack девелопер лучше всего подойдет на эту роль, имея такое преимущество перед узкоспециализированными собратьями? Так что, выбрав данный путь, вы не останетесь без работы и сможете пользоваться всеми благами, которые дарит фрилансерство.
Большие карьерные возможности
Широкоформатность профессии Full-stack разработчика позволяет реализовать себя в любой сфере веб девелопмента. Вы можете в любой момент переключиться на более узкий профиль — чистую FrontEnd или чистую BackEnd разработку (горизонтальное развитие, углубление в конкретную сферу деятельности), а можете стать сильным тимлидом либо архитектором, который прекрасно разбирается во всех процессах создания веб-приложений и имеет богатый опыт за плечами (вертикальное развитие, продвижение по карьерной лестнице).
Также, Full-stack разработчик может найти успешное применение своим способностям в стартапах. Стартап-команды, как правило, имеют очень малый бюджет и им гораздо выгоднее иметь тех, кто может взять на себя обязанности нескольких людей. Таким образом, вы и новый опыт получите, и сможете поработать над чем-то свежим, интересным, ранее не виданным.
Ну, а касательно нужд рынка в Full-stack разработчиках даже упоминать не стоит — множество компаний желает заполучить широкопрофильного специалиста в свой штат. Количество вакансий для них меньше, нежели для фронтендщиков и бекендщиков, однако, и конкуренции тоже не так много.
Мало рутины и выгораний
Богатая на разнообразие деятельность Full-stack разработчиков снижает риски погрязнуть в однообразной работе. Вы владеете большим арсеналом знаний, что позволяет вам периодически переключаться между проектами и меньше уставать от применения одних и тех же технологий.
Легкость в развитии своего продукта
Вы имеете в распоряжении достаточно знаний и умений, чтобы самостоятельно создать собственный проект. В будущем вы сможете организовать свою команду для совершенствования и дальнейшего развития программного продукта, однако, уже на старте вы имеете все необходимое для того, чтобы реализовать ваши идеи.
Минусы профессии Full-stack Developer

Проигрыш узкоспециализированному разработчику на его поле боя
Full-stack девелопер владеет многими инструментами, но не может знать каждый настолько же хорошо, насколько отдельно взятый специалист. Данная профессия предусматривает подобное распыление и делает практически невозможным углубление в какой-либо язык или технологию. Выходит, вы умеете все, но хуже, чем разработчик конкретного направления.
Много времени на обучение
Технологий, которые должен освоить Full-stack специалист, много. Во время изучения, например, бекенда легко забыть то, что ты учил по фронтенду. Чтобы все знания и умения удерживать на хорошем уровне, необходимо тратить много усилий. Справиться с этим можно следующим образом: изучаете одну специальность, устраиваетесь на работу, а затем подучиваете второе направление. Выходит, вы не только текущие знания сохраняете, но и приумножаете их, двигаясь к фулл-стек разработке.
“Наращивайте компетенцию постепенно, с небольших задач. Пройдите курс по недостающему вам направлению, чтобы вникнуть в базовые принципы. А дальше осваивайте знания на практике по правилу Learning by doing” — Алексей Голубев, Team Lead Full-stack Developer в GlobalLogic.
Трудно следить за новыми тенденциями
Мир IT очень гибкий и переменчивый. Словно империи — возникают и рушатся новые языки, технологии, подходы в разработке ПО, техники написания и ревизии кода. Вам, как специалисту широкого профиля, необходимо быть в курсе всех новинок, ведь, в конце концов, этого и будут требовать от вас работодатели — использования современных инструментов и подходов.
Слишком много обязанностей
Работодатели иногда начинают выдвигать большое количество требований к фулл-стек специалисту. Ранее упоминаемый Full-stack разработчик Геннадий Догаев имеет следующую точку зрения на этот счет:
“Заказчики хотят свалить на одного человека слишком много. Например, уже встречаются объявления Node.js + React.js + React Native, то есть к веб-стеку добавляется ещё и мобильная разработка. Это влияет на качество знаний и конечного продукта: чем больше технологий нужно охватить, тем поверхностнее знаешь каждую из них. Кроме того, человеку не могут нравиться все направления одновременно. Мне из этого набора не очень интересна мобильная разработка”
Вами хотят залатать очень много дыр
Фулл-стек разработчику могут часто делегировать разнообразные задачи на рабочем месте. Дописать за кем-то код, что-то пересмотреть, пофиксить, доделать. Работать вместо FrontEnd / BackEnd разработчика, который ушел в отпуск — милое дело. А если вас наняли как альтернативу 5-ти разработчикам, то и вовсе будут держать как раба.
Сложные задачи
Вы знаете больше остальных, а значит, вам под силу разобраться с той или иной тяжелой задачей. По крайней мере, так думает тот, кто будет вам их раздавать.
Большая загруженность
Как вы уже заметили по предыдущим пунктам, Full-stack разработчику не дадут отдохнуть. Дел невпроворот — это точное описание его состояния на каждый рабочий день.
Сложности в замене
Этот пункт одновременно является и преимуществом, и недостатком. С одной стороны, вам тяжело найти замену и, соответственно, вас будут ценить. С другой — вам будет проблемно уйти в отпуск, ведь где взять замену? Тут и начнутся звонки в любое время суток, невозможность перекладывания некоторых задач на других разработчиков и прочее.
Как стать Full-stack разработчиком?
Ответ прост — выберите наиболее близкий вам вариант профессии и изучите необходимые технологии при помощи различных ресурсов, или пойдите на курсы full stack разработчиков. Советуем сделать свой выбор в пользу образовательной IT-платформы ITVDN — здесь вы сможете найти 90% всех нужных вам видео курсов по любому из выбранных направлений. В конце статьи мы оставим полезные ссылки на все специальности, которые помогут вам в изучении Full-stack ремесла.
К примеру, вам понравился BackEnd-стек Python разработчика — тогда вам подойдут 2 курса по специальностям:
С каждой программой обучения вы сможете ознакомиться подробнее, перейдя по оставленным ссылкам.
Зарплаты Full-stack разработчиков

Согласно июльской зарплатной аналитике от DOU.ua (опрошено 6605 украинских разработчиков), медианная зарплата FullStack разработчиков следующая:
- Junior – 980 USD;
- Middle – 2475 USD;
- Senior – 4750 USD.
Бесплатные вебинары по схожей тематике:

Пишем игру “Dendy Tanks” на Java с нуля.

Laravel + Docker. Настройка окружения для разработки.

IТ в период войны: как найти первую работу
При этом ЗП у коллег по цеху – FrontEnd и Mobile разработчиков – приблизительно такие же. Единственные, кто заметно выделяются – BackEnd девелоперы уровня Middle и Senior. Их медианная оплата труда составляет 2800 USD и 5000 USD соответственно, что на несколько сотен долларов превышает зарплату фулстеккеров.
Если обратиться к международному веб-сайту по поиску работы Jooble (имеет украинские корни), то по состоянию на июль среднее предложение по зарплате для FullStack Developer в Киеве составляет 114 183 грн (приблизительно 3100 USD).
Согласно международному опросу Stack Overflow Developer Survey 2023 (более 90 000 респондентов со всего мира), годовая медианная ЗП FullStack специалиста составляет 71 140 USD (примерно 5930 USD в месяц).
Итоги
Full-stack Developer — универсальный веб-разработчик, который объединяет в себе силу FrontEnd и BackEnd направлений. Да, специализированные девелоперы сделают всю работу лучше, чем фулл-стек специалист, однако главный конек героя этой статьи — возможность разрабатывать полноценные веб-приложения самостоятельно, доводя их до полностью готового состояния. Как и любое другое, Full-stack ремесло имеет свои преимущества и недостатки. Однако, не зря говорили классики — терпение и труд все перетрут. Так что все в ваших руках!
Возможно, нас читают практикующие Full-stack разработчики? С удовольствием прочтем вашу точку зрения на позиции, изложенные в данной статье. Также, будем рады любым вопросам и замечаниям от всех читателей!
Ну а тем, кто решил выбрать профессию Full-stack Developer мы желаем быть упрямыми, оптимистичными и с неугасаемым огоньком жажды знаний в глазах.
Успехов и кодерского вдохновения на вашем пути!
Полезные ссылки
FrontEnd составляющая: видео курс по специальности FrontEnd Developer.