Full stack android developer

И швец, и жнец. Кто такой Full-stack разработчик и как им стать?

«Full-stack разработчик — это технический волшебник, который знает все языки программирования и технологии, а также прекрасно поет и танцует» Иэн Питерс-Кэмпбелл (Ian Peters-Campbell),
опытный разработчик и основатель
софтверной компании Stickbuilt.

Есть в сфере IT-разработки позиция, о которой до сих пор идут жаркие споры, потому как программисты и прочие технические специалисты не могут прийти к единому мнению о компетенциях этого IT-джедая. Речь идет о позиции Full-stack разработчика.

Потребность в таких специалистах растет с каждым месяцем в силу их универсальности, потому как один IT-джедай может заменить трех-четырех узких специалистов, легко выполняя самые разнообразные задачи. Full-stack разработчики могут работать с большим набором технологий, они способны создать веб-проект в одиночку, паралелльно выполняяя задачи Frontend-программиста и Backend-разработчика: верстка дизайна сайта, настройка функционирования форм и кнопок, создание серверной части, настройка сервера и даже создание мобильной разработки при необходимости портировать веб-приложение на соответствующие платформы.

Конечно, у каждого разработчика был свой путь к фуллстеку:

  • От дизайнера, который научились не только рисовать интерфейсы, но и качественно их верстать;
  • от Frontend-разработчика, который верстал и анимировал большое количество интерфейсов и научился их рисовать;
  • от Backend-разработчика, написавшего столько серверных приложений, что от скуки научился создавать сами мобильные приложения. Кстати, это наиболее частый путь развития.

Знания Full-stack разработчика

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

Full-stack Developer — это разработчик, который принимает непосредственное участие во всех этапах разработки веб-приложений — от создания клиентской части (визуальная часть + пользовательская логика) до реализации серверной (базы данных, серверная архитектура, программная логика). Выделяют 4 основных столпа, на которых базируются компетенции IT-джедая:

Frontend-стек технологий практически всегда одинаков и отличается лишь используемыми JavaScript-фреймворками (Angular, React или Vue.js.):

  • язык верстки HTML и язык стилей CSS;
  • языки программирования JavaScript и TypeScript;
  • препроцессоры SASS и LESS;
  • библиотека jQuery;
  • фреймворк Bootstrap;
  • фреймворк Angular/React/Vue.js;
  • технологии DOM, AJAX, JSON;
  • навыки адаптивной и кроссбраузерной верстки.

Вариаций Full-stack-программистов множество и отличаются они лишь языком/платформой – основой Backend-разработки:

  • Java Full-stack Developer;
  • PHP Full-stack Developer,
  • Node.js Full-stack Developer
  • ASP.NET Full-stack Developer
  • Python Full-stack Developer и другие

Стек технологий Java Full-stack Developer:

  • язык Java + Java Core;
  • веб-сервер Apache;
  • инструменты для комфортного взаимодействия с БД — JPA/Hibernate;
  • фреймворк Spring (Spring MVC, Spring Boot, Spring REST, Spring Web);
  • применение облачных сервисов Google Cloud, AWS или Azure;
  • знание сервлетов, JSP (Java Server Pages);
  • знание микросервисов.

Стек технологий PHP Full-stack Developer

  • язык PHP;
  • фреймворк Yii2/Symfony/Laravel.

Стек технологий Node.js Full-stack Developer

  • язык JavaScript
  • платформа Node.js;
  • фреймворк Express.js;
  • пакетные менеджеры npm, yarn;
  • Web Sockets;
  • понимание REST API.

Стек технологий ASP.NET Full-stack Developer

  • язык C#;
  • знание инфраструктуры .NET;
  • платформа ASP.NET MVC / ASP.NET Core (Web API);
  • Entity Framework;
  • облачный сервис Azure;
  • язык T-SQL;
  • понимание RESTful API.

Стек технологий Python Full-stack Developer

  • язык Python;
  • фреймворк Django/Flask;
  • REST API;
  • Web Sockets;
  • навыки работы с ОС Linux и веб-сервером Nginx/Apache (возможно);
  • опыт работы с облачными сервисами.

Помимо перечисленных технологий, Full-stack разработчикам необходимо знать:

  • реляционные (SQL) и нереляционные (NoSQL) базы данных, уметь их проектировать;
  • разбираться в протоколах HTTP, HTTPS;
  • уметь оперировать языком запросов SQL и одной из СУБД — MySQL / PostgreSQL / SQLServer,
  • либо одной из NoSQL СУБД (MongoDB, например);
  • уметь проводить тестирование приложений;
  • осуществлять Code Review;
  • использовать Docker;
  • владеть английским языком на уровне Intermediate и выше;
  • знать популярные паттерны программирования и уметь их реализовывать;
  • иметь хорошее знание алгоритмов и структур данных.

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

  • сервис для планирования и управления проектами (GanttPRO);
  • популярная система для планирования и отслеживания проектов (Jira);
  • инструмент для Project-менеджмента (LiquidPlanner).

Знание DevOps Full-stack разработчика могут сильно отличаться в зависимости от проекта. Как правило, к ним относиться все, что касается запуска программного кода: настройка серверов, обеспечение слаженной работы специалистов команды вместе с техническими решениям. Full-stack разработчику нужны знания:

  • систему управления версиями Git, сервис для хостинга IT-проектов GitHub;
  • CI/CD-инструменты (Ansible, Jenkins, Chef);
  • тулзы для коммуникации и коллаборации (Slack и Microsoft Teams);
  • сервисы облачных вычислений и хранения данных (AWS, Azure и GCP).
Читайте также:  Android studio linearlayout padding

Плюсы профессии Full-stack разработчика

  1. Вариативность переходов из фронтенда в бэкенд и наоборот.
  2. Карьерные перспективы: Full-stack разработчик может в одиночку спроектировать ПО или приложение и хорошо разбирается, как устроена разработка. Это упрощает переход в тимлида или архитектора.
  3. Работа на стыке технологий: такой специалист может в одиночку разработать решение, для которого обычно требуется несколько человек. Поэтому такому специалисту будет проще разработать собственный проект или запустить стартап: для MVP (минимального жизнеспособного продукта) не потребуется нанимать команду.
  4. Ниже риск выгорания: на позиции Fullstack постоянно приходится изучать новые технологии.
  5. Выбор лучшего решения: понимая, как взаимодействуют разные системы, такой специалист сможет выбрать решение, которое боятся использовать другие разработчики из-за недостатка опыта.

Минусы профессии Full-stack разработчика

  1. Из-за большого количества технологий, с которыми приходится работать, у Full-stack разработчика не остается времени на глубокое погружение в конкретную сферу. Поэтому в каких-то технологиях IT-джедай будет проигрывать узконаправленному специалисту.
  2. Сложности в развитии: необходимо распределять время между фронтендом и бэкендом – возможностей для профессионального роста в узких технологиях меньше. Чтобы все знания и умения удерживать на хорошем уровне, необходимо тратить много усилий.
  3. Непросто следить за новыми трендами: мир IT очень гибкий и переменчивый. Full-stack разработчику необходимо быть в курсе всех новинок, использовать современные инструменты и подходы.
  4. Много обязанностей: на Full-stack разработчика может большая нагрузка по проекту и знаниям технологий, а также управление проектом и мобильная разработка. При этом даже IT-джедаю могут нравиться не все направления.Периодически могут прилетать дополнительные задачи: дописать код, пересмотреть, доделать. Иногда даже поработать за коллегу с более узкой специализацией.Считается, что Full-stack разработчик решает сложные задачи, поэтому именно они попадают в зону ответственности IT-джедая.
  5. Постоянная включенность в проект: Full-stack разработчику сложнее отключиться от проекта, т.к. его невозможно заменить другим специалистом. Поэтому в любое время такой специалист должен быть на связи.

Заработные платы Full-stack разработчиков

На данный момент на известном работном сайте 442 вакансии Full-stack разработчика (выборка осуществлялась по г.Москве).

Размер заработной платы Количество вакансий
От 115 000 рублей 164
От 195 000 рублей 117
От 270 000 рублей 57
От 350 000 рублей 30
От 430 000 рублей 9

Конечно же, уровень заработной платы зависит в том числе и от уровня разработчика: Junior, Middle, Senior. Именно так в среде разработчиков определяют уровень компетенций. Он не зависит от возраста, а различается лишь кодом и уровнем выполняемых задач. В следующей статье мы поговорим об этом.

Заключение

Full-stack developer – сегодня это уже отдельная категория специалистов, крайне востребованная и распространенная.

Full-stack-разработка – это умение воспринимать самые разнообразные идеи. Со временем такой талант будет становиться все более востребованным. Быть Full-stack разработчиком не означает мгновенно переключаться с настройки сервера на программирование связующего ПО на Java, а потом на JavaScript, работающий в браузере. Специализации придуманы не зря. Но разработчик, понимающий весь стек технологий, будет писать более качественные приложения.

Спор вокруг профессии Full-stack разработчика только подчеркивает важность ее появления в IT-сфере. Очевидно, что ее содержательное наполнение и значение самого термина еще будут меняться.

Источник

Чем плохо быть full stack разработчиком

Минусы

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

Вам сложнее продвигаться глубже
Хороший full stack разработчик всегда сильно нагружен. И ваше время на познание нового распределяется между всеми технологиями, с которыми вы работаете. Естественно, что ваше развитие происходит медленнее, чем у программиста узкой специализации.

У вас больше вероятность перегрузки задачами
Если вы занимаетесь сразу несколькими проектами с нескольких сторон, то даже при хорошем тайм менеджменте часто будет случаться так, что все проекты требуют к себе повышенного внимания и времени. Придётся это решать или передачей части задач другим разработчикам, или распределением приоритетов, или тщательным планированием. Конечно, вероятность перегрузки есть у любого разработчика — как известно, в реальном мире любую задачу нужно делать “вчера”. Но у вас такие задачи могут внезапно появляться пачками.

Вас сложно заменить
Кому-то это может показаться плюсом — вас сложно уволить, вас любят и ценят. Но обратная сторона медали — невозможность передачи задач, звонки в любое время суток, проблемы с уходом в отпуск, сложности при попытке заняться чем-то другим.

У вас нет чёткой зоны ответственности
Если в кране нет воды — значит, виноват full stack! Какие бы проблемы не возникали, какие бы баги не вылезали — скорее всего, именно вам придётся ими заниматься, даже если проблема на самом деле должна быть в ведении другого разработчика. Просто ваша картина мира гораздо полнее, и вы быстрее сможете локализовать и исправить ошибку. К сожалению, этим часто злоупотребляют.

“О, дайте ему — он разберётся!”
В ситуации, когда необходимо разобраться с плохим или старым кодом, скорее всего задействуют именно вас. Особенно печально, когда работодатель хочет сэкономить, наняв одного разработчика на весь проект. А ты его открываешь и понимаешь, что проще это выкинуть и целиком переписать.

Вы не знаете всех наборов библиотек
Это довольно очевидно следует из первого пункта, но хочется упомянуть отдельно — хотя бы потому, что в вакансиях часто требуется опыт работы с конкретными библиотеками.

Вы не успеваете за всеми тенденциями
Опять же это следует из первого пункта. По непонятной мне причине, часто ищут разработчика, который в совершенстве умеет применить что-то, что вышло в релиз полгода назад. Увы, вы не можете одновременно знать и уметь применять ES6, рассказать об отличиях последней версии Symfony и о возможных проблемах миграции с Oracle на Tibero в текущий момент. Возможно, вы об этом читали, но попробовать просто не успели.

Вы не всегда пишете оптимальный код
Скорее всего, ваш код понятен, хорошо систематизирован и откомментирован. Но наверняка более квалифицированный специалист мог бы сделать его чуть лучше. Другой вопрос, что это обычно не критично. Действительно плохо, если каша из языков в голове заставляет вас применять подходы и решения, которые никак не годятся в текущем проекте. Ужасно видеть, как некоторые даже пишут функции, которые были бы созвучны привычным для них реализациям в другом языке.

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

Вы можете начать завидовать зарплате узких специалистов
Если начать искать вакансии по самому вашему дорогому навыку, то можно огорчиться — специалисты с большим опытом работы могут получать за него весьма неплохие деньги. Скажем честно — у вас такого опыта работы с конкретной технологией нет. Но даже если вы углубитесь в эту технологию и получите необходимые знания — хотели бы вы дальше всю жизнь заниматься только этим? Например, администрированием СУБД Oracle?

Минусы в трудоустройстве

Отдельно хочется упомянуть сложности, которые случаются при смене работы.

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

Full stack full stack’у рознь
Какой бы вы ни были широкий специалист, вряд ли вы найдёте место работы с точно таким же стеком технологий. Бывает, но крайне редко. Однако пересечения часто довольно большие, и ничто не мешает вам подтянуть недостающее и ещё больше расширить кругозор.

Вам не верят
Да, вот такая смешная и реальная проблема. Если вы указали в резюме слишком много всего, то вам просто не поверят и даже не будут пытаться проверять или спрашивать о том, на каком уровне вы что знаете. Поэтому, как ни смешно, лучший способ — безжалостно удалять из резюме все сведения, которые вы считаете неактульными для своего будущего. А ещё лучше — подгонять резюме под каждую вакансию.

Вам сложнее искать подходящую вакансию
Fullstack разработчиков ищут довольно редко, и не всегда работодатель с такой вакансией может конкурировать с вакансией узкой специализации по условиям. И возникает вопрос — какие использовать ключевые слова при поиске вакансии? Если вы, скажем, Java разработчик, то просто указали в поиске Java — и погнали кликать. Но full stack’у немного сложнее. Обычно проблема решается подпиской на несколько разных фильтров по словам, которые вам наиболее интересны — или просто выборкой по желаемому уровню зарплаты. Последнее не всегда срабатывает, поскольку к моему величайшему недоумению до сих пор висит огромное количество вакансий вообще без указаний зарплатной вилки. Видимо, HR боятся, что тогда каждый захочет описанный максимум? Странно. Если кто знает доводы в пользу такой стратегии рекрутинга — приведите, пожалуйста, в комментариях.

Плюсы

Теперь, наконец, о вкусном.

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

Вы меньше выгораете
Если есть возможность периодически менять проекты, то вы гораздо меньше устаёте от применения одного и того же. Конечно, если вы не хардкорный фанат и не получаете удовольствие просто от того, что пишете всё, скажем, на vanilla C или asm.

Вам проще расти в тимлида или архитектора
Довольно очевидный плюс — чем больше вы разбираетесь в общей структуре, тем больше у вас шансов на рост в руководителя. Конечно, при наличии желания и коммуникативных навыков.

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

Работать веселее, интереснее и познавательнее
За один день вы можете получить много новых навыков и знаний в абсолютно разных вещах.

В одиночку вы можете создавать чудесные вещи на стыке разных технологий
Вы один можете сделать то, на что при стандартном подходе требуется 3-4 человека. Запрограммировать микроконтроллер для интернета вещей, который общается с веб сервером, пишет в базу данных, и данные с которого можно просматривать на веб сайте, в приложении или на мобильном устройстве? Легко! Вы один можете представить всю систему и реализовать её без согласований, недопониманий и проволочек.

Ваши решения работают быстрее и надёжнее
За счёт понимания взаимодействия различных систем, вы можете выбрать лучше пути для их комбинирования. Вы лучше понимаете каждый компонент и не боитесь его использовать. Как пример — возьмём “кляудные технологии” (мопед не мой, в публикациях проскакивало). В общем и целом, облако это чудесный способ решения огромного количества задач, в том числе задач масштабирования. К сожалению, всё чаще вижу, что облачные решения используются просто потому, что разработчик не умеет и боится решить свою задачу как-то ещё, а представляет это в виде дополнительного плюса. А многое можно сделать гораздо дешевле и лучше, если иметь хотя бы поверхностное понимание вопроса.

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

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

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

Источник

Читайте также:  Java runtime для андроид
Оцените статью