Колко печели програмист с пълен стек? Какво лошо има в това да бъдеш full stack разработчик? Работа с данни

Издадохме нова книга, Маркетинг на съдържание в социалните медии: Как да влезете в главите на вашите последователи и да ги накарате да се влюбят във вашата марка.


Fullstack разработчике общ специалист. Неговите задачи включват самостоятелно създаване на уебсайтове и уеб приложения: от дизайна и потребителския интерфейс до сървърната част. Почти невъзможно е да се даде детайлна дефиниция на работата на даден специалист, какво точно трябва да знае и какви умения да притежава. Не всеки човек може да изпълнява функциите на пълен стеков програмист.

Кой е Fullstack разработчик?

Въпреки трудността при дефиниране на пълния набор от отговорности, има общо мнение за това как да се определят full-stack програмисти - специалисти, които са в състояние да създадат пълноценен продукт от шаблон за проектиране на потребителски интерфейс, който ще отговаря на минимални, но достатъчни (да задоволяване на нуждите на потребителите на уеб ресурси) функции.

Често срещана шега сред професионалистите е, че този човек е този, който опитва всичко наведнъж, но нищо не се получава. Въпреки факта, че това е просто професионален хумор, тук има известна истина: програмистът с пълен стек работи сам на всички етапи от проектирането и изпълнението на даден проект, така че често опростява много, прави грешки, но като правило винаги се връща към тях след тестване и стартиране на уеб ресурс или приложение.

Разработчикът на пълен стек съчетава отговорности за писане на преден и бек-енд. Той има огромен брой умения и може да се справи с проект самостоятелно, без да включва допълнителни специалисти, било то UI или UX дизайнери. По-специално той може:

  • Управлявайте съхранението на цялата информация, намираща се на сайта.
  • Работете с HTML страници, изображения, файлове, медийни потоци и други данни.
  • Той има добро разбиране на системното инженерство и може да приложи научни, инженерни и управленски умения, необходими за превръщане на нуждите на клиента в описание на системната конфигурация.
  • Ако е необходимо, той може да действа като разработчик на мобилни приложения или уеб ресурси. За целта той трябва да може да борави с различни маркиращи езици, бази данни, графични редактори, готови оформления и шаблони.

Струва си да се отбележи, че за разработчик на пълен стек не е необходимо да бъде дълбоко професионалист във всички свързани области и да има подробно разбиране на технологиите: първо, той просто не се нуждае от такъв масив от данни, и второ, това е почти невъзможно да комбинирате това в един човек. Достатъчно е да познава основните принципи на програмите и също така да може да ги прилага на практика.

Предимства и недостатъци

На първо място, разработчиците на Fullstack могат бързо да се заемат с работа и да създадат прототип на продукт за сравнително кратко време. В сравнение с front-end и back-end специалистите, те имат по-обширни познания, благодарение на които постоянно имат собствено мнение по проблемите на текущия проект – не е необходимо да търсят помощ от колеги от други области на уеб разработката. Напротив, ако екипът разполага с пълен стек, той може да взаимодейства с всички участници в проекта, като по този начин намалява времето за работа и техническите разходи за комуникационните канали.

В допълнение към предимствата има и недостатъци. По-специално, такива хора почти никога не са специалисти в едно нещо, за разлика от техните колеги, които имат високоспециализирани знания и умения. Разбира се, те могат да се впуснат в подробно изучаване на даден предмет, но това, като правило, няма да им донесе никаква полза, тъй като знанията само в една област са практически безполезни за тях. Няма и ясно дефинирана зона на отговорност. Ето защо, ако възникнат проблеми, необходимостта от отстраняването им пада върху раменете на разработчика на Fullstack, дори ако е причинено от друг специалист. В резултат на това този факт често се злоупотребява.

Как да станете разработчик на Fullstack

Човек може да се нарече професионалист само ако има достатъчен набор от знания и умения за работа с основни технологии за ефективно създаване на уеб ресурси и приложения.

Първият етап на обучение трябва да започне с езици за програмиране. Достатъчно е да изучите подробно един, например JavaScript, PHP или Python. Голяма част от проектите ще бъдат свързани с тях. Разбира се, не всички от тях ще бъдат търсени, но потребителят трябва да има основни познания за структуриране, проектиране, внедряване и тестване на проект.

Втората стъпка е използването на рамки. Какъвто и език за програмиране да бъде избран, той ще бъде придружен от допълнителна разширена функционалност на софтуерната платформа с отворен код Spring, Hibernate и др.

Независимо от целта на проекта, той ще се нуждае от база данни и кеширане, за да може по-късно да съхранява голямо количество разнообразна информация. Специалистът трябва да разбира една или повече системи за управление на база данни и да може да използва техния потенциал. Препоръчителните СУБД включват MySQL, Microsoft SQL Server и др.

Какво означава да си Fullstack разработчик?

Както беше отбелязано по-горе, програмистът с пълен стек не делегира правомощията си на други специалисти, а изпълнява цялото количество работа независимо. По този начин той има огромно количество различни знания.

  1. Сървърна администрация. Разработчикът на fullstack трябва да има основни сървърни умения. Това включва: управление на набор от софтуерни инструменти, които контролират и филтрират преминаващите мрежови пакети на различни нива; свързване към отдалечени сървъри чрез терминал, където няма графичен потребителски интерфейс; управление на междуплатформен софтуер Apache HTTP сървър и Nginx пощенски прокси сървър. Освен това той трябва да може да създава най-сигурните и надеждни изолирани среди за разработка в отворени платформи за разработване, доставяне и работа на приложения.
  2. Работа с облачни PaaS платформи. Хостинг на популярни уеб услуги може да е необходим по всяко време, когато клиентът изисква смяна на доставчика. Някои от най-популярните платформи включват Google Cloud и Azure.
  3. Софтуерна и хардуерна част от услугата. В допълнение към езика за маркиране и софтуера, създаден за комбиниране на различни компоненти на голям софтуерен проект, специалистът трябва да може да работи с уеб услуги Nginx и Apache, удобен дизайн на API (в края на краищата повечето уеб ресурси работят на API).
  4. Дизайн. Тук специалистът трябва да може да създаде прототип на проекта, преди да го конвертира в работещ формат. На този етап се използва цял набор от графични инструменти: редактор на Photoshop или Illustrator, Ngrok и др.

Това е само малка част от това, което един разработчик на Fullstack трябва да знае и може да прави. Тук обаче има някои нюанси: първо, много професионалисти избират само част от необходимите технологии, тъй като е невъзможно да се вземе предвид всяка програма; второ, дори ако познаването на повечето технологии не прави човек висококвалифициран специалист, той все пак може самостоятелно да определи какво ще бъде полезно при работа по даден проект и какво няма да бъде полезно.

В областта на развитието на информационните технологии професията разработчик е много търсена. Следователно въпросът за доходите, колко печелят ИТ специалистите, интересува много хора.

Възнаграждение в Русия

Средната заплата на разработчика в Русия е: 90-155 хиляди рубли. в зависимост от областта на работа на специалиста:

  • Java,
  • Оракул,
  • Android и др.

Статистика на заплатите в столицата (руб.)


  • млади специалисти в областта на ИТ с малък трудов опит могат да разчитат на заплата на разработчик в Москва - 40 000-60 000,
  • средните могат да получат средно 90 000-120 000,
  • ръководители на екипи, ръководители на проекти с 3 години опит получават 100 000 или повече.

Отворени свободни работни места в столицата и доходи от тях за работа ru (rub.):

  • В LLC ПРИСКО„Необходим е разработчик на Delphi, заплата - 70 000-120 000 От кандидата се изисква поне една година трудов стаж, познания по Firebird, Delphi, SQL.
  • В " iCraft Optical Ню Йорк” изисква се разработчик Python Odoo ERP, заплата до 120 000 Изисква се минимум 1 година опит. Автобиографията ще бъде прегледана след изпълнение на тестова задача за проверка на нивото на знания на кандидата.
  • JSC “Бизнес проекти” изисква RHP разработчик, заплата - 80 000-120 000 Всяко образование, трудов стаж от най-малко 3 години, пълен работен ден.
  • Към компанията АвиопродажбиНеобходим е full stack разработчик, заплата от 2000 в долари, работа на o. Пукет. Необходимият опит на кандидата е 3-6 години. Работата е много отговорна. Този специалист трябва да е отворен към нови знания, да разбира back-end и front-end технологии, дизайн, инструменти за уеб разработка и системна администрация.
  • В LLC Комуникационни системи„Необходим е разработчик на уеб сайт, заплата 50 000 на месец. Официална регистрация.

Доходи в различни области на работа (в рубли):

Доста популярна професия в Русия - уеб разработчик, заплата - 2 5 000-150 000 на месец.

средно - 52 000.

Освен това заплатите за уеб разработчиците варират в зависимост от региона на страната:

  • Астраханска област — 132 500,
  • Калужка област — 105 000,
  • Алтайска територия - 70 000,
  • Република Алтай - 60 000,
  • Калининградска област - 52 500.


Печалба в други страни:

  • Украйна — 4500-55 000 UAH. Средна заплата - 8000 UAH.
  • Казахстан - 60 000-300 000 тенге.
  • Беларус — 550-4300 бел. търкайте., средно - 950 бел. търкайте.


Ценоразпис на работите, колко средно струват услугите на уеб програмист за една работа:

  • Дизайн - 200$.
  • Банери - от $10.
  • Логота - от $100, но определено ще ви трябва пример. Ако това е търг за лого за голяма компания, цената на работата може да достигне $1000-10000.
  • Създаване на ресурс до ключ от $450.
  • HTML оформление - $90.
  • Системи за управление на съдържанието - 350$.
  • Уеб програмиране - 200$.
  • Flash - $150.
  • Онлайн пазаруване - 750$.
  • Промоция, SEO оптимизация - от $300.

Струва си да се отбележи, че колко получава програмист зависи от обема на извършената работа. Ако работи в екип, тогава печалбата се разпределя между дизайнера, мениджъра и другите служители.

Печалби на специалисти, работещи с различни операционни системи

Една от най-търсените ИТ специалности за 2018 г. е iOS разработчик, като средните заплати в страната са в диапазона от 50 до 200 хиляди.


Специалността се счита за една от най-младите; средната възраст на програмистите е 25 години.

Сред желаещите има повече мъже - 94% и едва 6% жени.

67% говорят английски и само 44% от работещите в тази сфера имат шофьорска книжка. Заплатите на Android разработчиците също са няколко пъти по-високи от средните за страната 110 000 rub..

Максималните заплати достигат 170 000 на месец.

Съвместен отчет за приходите


Статистика на заплатите по градове:

  • Москва - 140 000,
  • Санкт Петербург - 110 000,
  • Екатеринбург - 64 000,
  • Челябинск - 58 000,
  • Самара - 57 000,
  • Красноярск - 57 000,
  • Казан - 50 000.

Данни за Москва

  • В Москва специалистите без трудов стаж и студентите от специализирани университети получават най-малко - 40-60 хиляди рубли.
  • Най-вече - 150-200 хиляди рубли. се получават от кандидати в Москва и Санкт Петербург с трудов стаж от най-малко 3 години и успешен опит в различни стартиращи компании.


Средна заплата за разработчици на игри през 2018 г. на различни платформи:

  • Русия - 25 000-100 000 rub.
  • Москва - 50 000-220 000 rub.

Йерархия на ранговете на служителите и техните доходи (в рубли):

  • юноши - 48 000;
  • средни - 98 000;
  • ръководители на екипи, мениджъри, водещи - 160 500 бр.

Печалба в други популярни направления (RUB):


  • Средна заплата Дж аваразработчик в Русия е 125 000 .
  • За фронтенд разработчик заплатата варира от 40 000 до 150 000 в Москва. интерфейссредна заплата на разработчици 110 000 на месец. С прости думи, такъв специалист се занимава със създаване на персонализиран изглед на сайта и неговия шаблон. Той трябва да има познания в различни области: дизайн, оформление, програмиране.
  • Бизнес индустриите често изискват специалисти, които работят с платформата Pega. Заплата на програмист от 40 000 до 200 000. Мениджърите на големи проекти могат да получат 250 хиляди или повече.
  • 40-100 хиляди рубли. месечна заплата флаш-разработчици, те също се наричат ​​флаш дизайнери. Основната им сфера на дейност е създаването на:
    • интерактивни приложения,
    • флаш игри,
    • интерфейси с анимация, графика, звук и други анимирани елементи.
  • Perl-разработчикът има среден доход от 95 000 . Диапазон на заплатите - от 60 000 до 180 000в ръцете ти. Основната характеристика на езика Perl са неговите многобройни възможности за работа с текст.
  • B.I.разработчик . Заплата в Москва – от 70 000 от Junior BI Developer до 200 000 BI архитект с повече от 3 години опит
  • Разработчик мобилни приложения. Заплатата, както и в други области, зависи от опита и мястото на работа на служителя. Ресурс Супер работапосочва цифрата на средната заплата в 110 000 rub./месец

Нива на заплати в САЩ

Търсена професия в Съединените щати е софтуерен разработчик.


Средна заплата - $73 200 на година, според статистика от ресурса PayScale.

  • Минимални годишни заплати - 46,5 хиляди долара.
  • Максимални заплати на година - 107 хиляди долара.


Заплати в големи световни компании:

  1. Средна работна заплата за Разработчик на софтуер V Microsoft Corpвъзлиза на $ 111 000 на година. В Microsoft заплатата на програмист програмист може да достигне $ 147 000 на година. Според статистиката 80% от служителите са мъже и 20% са жени.
  2. Средната заплата на SV Amazon.Com Inc за програмисти е $ 102 600 щатски долара на година. Диапазон на доходите по професии в компанията: $ 72 500-153 500 на година.
  3. Средна заплата на разработчици в IT компания Международни бизнес машини(IBM) Corp. през 2017 г. беше 85 000 долараСАЩ на година.
  4. Разработчик на софтуер в Google, Inc.. получава средна заплата от 86 000 долараСАЩ на година. Максимумът, който специалистите на Google могат да получат е $ 102 600 на година. За сравнение заплатите на разработчиците в Yandex: разработчик на интерфейс – 73 500 рубли. на месец, което е около 15 500 доларана година.


Първо, нека дефинираме термините. Има много различни идеи за това кой е разработчик на пълен стек, някои дори доста основателно вярват, че такива разработчици са мит, но в тази статия ще говорим за разработчик, който има знанията и уменията да напише нещо от нулата софтуер и да постави го в производство. В този случай софтуерът може да бъде предназначен за уеб платформа, мобилни приложения или десктоп такива. Идеален full stack разработчик е този, който до известна степен притежава всички платформи и може да разработи и инсталира собствен софтуер на тях. Но това наистина е по-скоро мит.

Не е лошо определение от quora.com

Когато хората търсят разработчик на пълен стек, те очакват да видят пеещ и танцуващ технологичен магьосник.
Или поне някой, който няма да се оплаква твърде много, когато бъде помолен да работи извън зоната си на комфорт.


Може би, съдейки по заглавието, на някого ще изглежда, че това е жалка публикация, която говори за това колко лош е животът на неквалифициран ученик, който е получил всичко от различни статии в Интернет. Не, публикацията не е оплакване, говорим за пълен стак, а не за пълен слак и накрая списъкът с предимства също ще бъде разгледан. И няма да разглеждаме ученик, а разработчик с пет или повече години опит. Нека просто да видим какви недостатъци има в подобно развитие.

минуси

Във всяка една област си по-лош от специалист
Изглежда доста очевидно, но все пак ще обясня. Ако сте прекарали шест години в една технология, тогава очевидно знанията ви ще бъдат по-големи от тези на някой, който е прекарал шест години в работа върху няколко. Имахте повече проекти, участвахте повече в някои типични решения, четохте и писахте повече код.

По-трудно ти е да влезеш по-дълбоко
Добрият разработчик на пълен стек винаги е силно натоварен. И вашето време да научите нови неща се разпределя между всички технологии, с които работите. Естествено вашето развитие е по-бавно от това на високоспециализиран програмист.

По-вероятно е да изпитате претоварване със задачи
Ако работите върху няколко проекта от няколко страни наведнъж, тогава дори и при добро управление на времето често ще се случва всички проекти да изискват повишено внимание и време. Това ще трябва да се реши или чрез прехвърляне на част от задачите на други разработчици, или чрез разпределяне на приоритетите, или чрез внимателно планиране. Разбира се, всеки разработчик има възможност за претоварване - както знаете, в реалния свят всяка задача трябва да бъде направена „вчера“. Но такива задачи могат внезапно да се появят на партиди.

Трудно е да те заместя
Това може да изглежда като плюс за някои - трудно е да ви уволнят, вие сте обичани и оценени. Но другата страна на монетата е невъзможността за прехвърляне на задачи, обаждания по всяко време на деня, проблеми с излизането на почивка, трудности, когато се опитвате да направите нещо друго.

Нямате ясна зона на отговорност
Ако няма вода в крана, това означава, че пълният стек е виновен! Без значение какви проблеми възникнат, каквито и грешки да се появят, най-вероятно ще трябва да се справите с тях, дори ако проблемът всъщност трябва да бъде отговорност на друг разработчик. Просто вашата картина на света е много по-пълна и можете да локализирате и коригирате грешката по-бързо. За съжаление с това често се злоупотребява.

"О, дай му го - той ще го разбере!"
В ситуация, в която е необходимо да се справите с лош или стар код, най-вероятно ще бъдете въвлечени. Особено тъжно е, когато работодателят иска да спести пари, като наеме един разработчик за целия проект. И го отваряте и разбирате, че е по-лесно да го изхвърлите и пренапишете изцяло.

Не знаете всички библиотечни комплекти
Това следва съвсем очевидно от първата точка, но бих искал да го спомена отделно - макар и само защото свободните позиции често изискват опит в работата с конкретни библиотеки.

Не сте в крак с всички тенденции
Отново това следва от първа точка. По някаква неизвестна за мен причина те често търсят разработчик, който може перфектно да внедри нещо, пуснато преди шест месеца. Уви, не можете едновременно да знаете и да можете да използвате ES6, говорете за разликите между най-новата версия на Symfony и възможните проблеми при мигрирането от Oracle към Tibero в момента. Може да сте чели за него, но просто не сте имали време да го опитате.

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

Преглеждате ли често ръководствата?
Дори функциите за работа с низове изглеждат различно на всички езици, да не говорим за нещо по-сложно. Ако често превключвате между различни технологии и езици, тогава най-вероятно ще имате постоянно ръководство, което виси на компютъра ви, което надничате, което разбира се намалява донякъде скоростта на работа.

Може да започнете да завиждате на заплатите на специалистите
Ако започнете да търсите свободни позиции за най-скъпото си умение, може да останете разочаровани - специалисти с богат трудов опит могат да получат много добри пари за това. Нека бъдем честни - вие нямате такъв опит в работата с конкретна технология. Но дори и да се задълбочите в тази технология и да придобиете необходимите знания, бихте ли искали да продължите да правите само това до края на живота си? Например, администриране на СУБД Oracle?

Недостатъци на заетостта

Отделно бих искал да спомена трудностите, които възникват при смяна на работа.

Ще ви се обадя на работа, като използвам произволни ключови думи в автобиографията ви
HR не обръща внимание на факта, че сте работили по тази технология в малък проект преди три години. Той видя дума, която изглеждаше като празно място, което трябва да бъде заето, застана и се опитва да ви постави там на всяка цена, без да се интересува от вашите желания и текущи предпочитания.

Пълен стек пълен стек
Без значение колко широк специалист сте, малко вероятно е да намерите място, където да работите с точно същия стек от технологии. Случва се, но изключително рядко. Пресечните точки обаче често са доста големи и нищо не ви пречи да подобрите това, което липсва и да разширите още повече хоризонтите си.

Не ти вярват
Да, това е толкова смешен и истински проблем. Ако поставите твърде много неща в автобиографията си, те просто няма да ви повярват и дори няма да се опитат да проверят или попитат за нивото на знания, които имате. Ето защо, колкото и смешно да изглежда, най-добрият начин е безмилостно да премахнете от автобиографията си цялата информация, която смятате за нерелевантна за вашето бъдеще. Още по-добре, съобразете автобиографията си с всяка свободна позиция.

По-трудно ви е да намерите подходящо свободно място
Рядко се търсят fullstack разработчици и не винаги е възможно работодател с такава свободна позиция да се конкурира с тясно специализирана свободна позиция по отношение на условията. И възниква въпросът - какви ключови думи да използваме, когато търсим свободна позиция? Ако сте, да речем, Java разработчик, тогава просто сте посочили Java в търсенето и сте започнали да щракате. Но пълният стек е малко по-сложен. Обикновено проблемът се решава, като се абонирате за няколко различни филтъра според думите, които са най-интересни за вас - или просто изберете според желаното ниво на заплата. Последното не винаги работи, защото за мое голямо недоумение все още има огромен брой свободни позиции без посочен диапазон на заплатите. Явно HR се страхуват, че тогава всички ще искат описания максимум? Странно. Ако някой знае аргументите в полза на такава стратегия за набиране на персонал, моля да ги посочи в коментарите.

плюсове

Сега най-накрая за вкусните неща.

Можете да изберете с кого искате да работите следващия път
За вас е много по-лесно да промените ориентацията (простете за неяснотата), отколкото за обикновен разработчик. Виждате много в приложението, можете да го разберете и да разберете какво ви интересува. Да, ще трябва да отделите време за по-дълбоко - но това ще бъде добре прекарано време. Да, най-вероятно ще трябва да започнете няколко проекта за домашни любимци, за да опитате всичко, което искате. Но отново, това се отплаща щедро.

Изгаряте по-малко
Ако имате възможност периодично да променяте проекти, тогава ще се уморите много по-малко от използването на едно и също нещо. Разбира се, освен ако не сте хардкор фен и обичате просто да пишете всичко на, да речем, vanilla C или asm.

За вас е по-лесно да израснете до ръководител на екип или архитект
Доста очевиден плюс - колкото повече разбирате общата структура, толкова по-големи са шансовете ви да израснете в лидер. Разбира се, ако имате желание и комуникативни умения.

Можете да дебъгвате всичко
Очевиден плюс. Вашето системно мислене е достигнало ниво, на което можете да поправите всичко и навсякъде.

Работата е по-забавна, интересна и поучителна
За един ден можете да придобиете много нови умения и знания в съвсем различни неща.

Сами можете да създавате прекрасни неща в пресечната точка на различни технологии.
Вие сами можете да направите това, което стандартният подход изисква 3-4 души. Програмирайте микроконтролер за Интернет на нещата, който комуникира с уеб сървър, пише в база данни и данните от която могат да се преглеждат на уебсайт, приложение или мобилно устройство? лесно! Вие сами можете да си представите цялата система и да я внедрите без договорки, недоразумения и забавяния.

Вашите решения работят по-бързо и по-надеждно
Като разберете как си взаимодействат различните системи, можете да изберете по-добри начини за комбинирането им. Разбирате по-добре всеки компонент и не се страхувате да го използвате. Като пример, нека вземем „умните технологии“ (мопедът не е мой, споменато е в публикации). Като цяло облакът е чудесен начин за решаване на огромен брой проблеми, включително проблеми с мащабирането. За съжаление все по-често виждам, че облачните решения се използват просто защото разработчикът не знае как и се страхува да реши проблема си по друг начин, а го представя като допълнителен плюс. И много може да се направи много по-евтино и по-добре, ако имате поне повърхностно разбиране на проблема.

Можете да използвате почти всеки източник
В свят, в който практически всеки приложен проблем вече е решен, прекарването на време за писане на друг велосипед е просто престъпление по отношение на продължителността на живота ви. Сега можете да вземете всяко хранилище на всеки език и да го използвате като отправна точка за вашето решение. Ще полетите със свеж бриз над рейка, който хиляди други разработчици са събрали преди вас.

Получаваш Дзен
Сега знаете, че няма език за разработка, който да е по-добър от останалите. Знаете, че няма най-добра база данни. Може да предположите, че някой инструмент е по-подходящ за вашите цели... но сте напълно готови да използвате алтернативи, ако има някаква причина за това, например квалификацията на други разработчици. Вече не пишете статии за синтетични тестове, създадени, за да покажат предимствата на една технология пред друга. Знаете, че пет процента увеличение на производителността вероятно не си струва два от вашите човекомесеци. И най-накрая можете да прекарате времето, освободено от holivars, за нещо полезно. Например, за да установите връзка с момиче (например, нека я наречем Катя). Вече разбирате, че технологиите са различни, че хората са различни и просто трябва да намерите правилния начин да свържете всичко заедно. Обичаш света и

Противоречието около дефиницията на „разработчик с пълен стек“ не само предизвиква разгорещен дебат онлайн, но също така води до непоследователност по отношение на това как да се оценяват, привличат и наемат такива разработчици.

И докато би било по-лесно тази дискусия просто да бъде оставена на заден план, терминът „разработчик с пълен стек“ няма да изчезне. Търсенето на професионалисти с тези умения се е увеличило със 198% само през последната година. Освен това повечето разработчици от цял ​​свят използват тези думи, за да опишат своя вид дейност (според нашите).

В тази статия ще се опитаме да обясним защо има объркване относно името на тази специализация и ще представим гледната точка на всяка страна. Ние също така ще помогнем на специалистите по набиране на персонал и мениджърите по наемане да се споразумеят с екипа какво се има предвид под „пълен стек“ и какви умения са им необходими.

За да разберем по-добре текущия спор около термина „програмист с пълен стек“, ще разгледаме откъде започна всичко.

Раждането на full-stack разработчик

Терминът "" дойде на мода не толкова отдавна. Едно от най-ранните споменавания датира от 2008 г., а първото търсене на „разработчик на пълен стек“ в Google се появи едва през 2010 г. Оттогава популярността на тази заявка започна да расте.

„Разработчик на пълен стек“ е в тенденциите при търсене в Google от 2004 г. Нарастването на популярността се отразява в различни изписвания, като „разработчик на пълен стек“ и „разработчик на пълен стек“.

Но ако този тип дейност е съществувала под някаква форма във времената преди Интернет, защо не виждаме увеличаване на популярността на термина до началото на 2010 г.? Оказва се, че отговорът на този въпрос изисква кратък исторически екскурз.

История

Късните 1970-те/началото на 1980-те

Преди интернет, преди мобилната ера, обикновено един човек участваше в писането на програма от началото до края. Работил е и върху хардуера. Разделянето на чисто програмни отговорности беше доста рядко.

Късните 80-те/началото на 90-те години

Организацията клиент-сървър идва на бял свят - групи от програмисти започват да си сътрудничат, за да създават приложения. Работата в екип се превръща в нова норма.

Късните 1990-те/началото на 2000-те

Интернет „идва” – технологиите стават все по-специализирани и съответно хората, занимаващи се с тях, развиват тясна специализация.

Средата на 2000-те

Разработката става много скъпа поради трудността да се управлява голям брой специалисти, участващи в един проект. От друга страна уеб 2.0 сайтовете стават все по-разбираеми и добре функциониращи.

Късно 2000-те

Свързаните технологии се опростяват до степен, в която много програмисти могат отново да създават приложения и уебсайтове от началото до края. Официалното раждане на термина „програмист с пълен стек“.

Началото на 2010 г./настояще

Бързото нарастване на по-сложните технологии доведе до това стекът да стане по-„слоест“. За разработчиците стана по-трудно да поддържат знания на подходящо ниво. Започват да се появяват front-end и back-end специалисти. Разработката на „пълен стек“ придобива ново, по-широко значение.

Според историята на термина „разработчик с пълен стек“ за първи път придоби популярност в средата на 2000-те години, когато по-простите и по-рационализирани технологии позволиха на много разработчици да завършат проекти напълно. Този подход беше диаметрално различен от този от края на 90-те и началото на 2000-те години.

С течение на времето преминаването към по-сложни технологии и повече слоеве в стека (началото на 2010 г.) доведе до ново разделение на ролите. Бекенд и фронтенд работата стават все по-разделени, което води до популяризиране на термините „frontend разработчик“ и „backend разработчик“.

В отговор през същия период от време терминът „програмист с пълен стек“ също придоби популярност. Това се дължи на опит да се откроят разработчици, които не се вписват в двоичната система на специалистите по фронтенд/бекенд. Вместо това, те се позиционират като трета порода разработчици, които могат да се справят както с фронт-енд, така и с бек-енд отговорности.

Но, разбира се, не цялата технологична общност е съгласна с тази интерпретация. Въпреки че е трудно да се каже кога са започнали тези спорове, две събития действат като катализатор за тях. Първият беше пост от бившия инженер на Facebook Карлос Буено от 2010 гза това какво е пълен стек. Второто събитие беше, когато Лорънс Гелерт чу служител на Facebook да казва на конференция, че компанията наема само „Full Stack разработчици“ (2012).

Какво имаме в резултат? Разгорещен дебат относно терминологията продължава почти 10 години по-късно.

Минусите да бъдеш full-stack разработчик

Членовете на лагера на разработчиците против пълен стек доминират в дебата за това какво прави (или от какво не се състои) пълен стек. Накратко, техният аргумент се върти около идеята, че full-stack разработчикът е някой със „способността лесно да управлява бекенда и фронтенда на старши ниво“.

Въпреки че има някои вариации на тази идея, този лагер вярва, че разработчиците на пълен стек трябва да могат:

  • Напишете първокласен фронтенд код на същото ниво като тесен фронтенд специалист.
  • Напишете еднакво отличен бекенд код на същото ниво като бекенд специалист.
  • Управление на сървърна инфраструктура.
  • Разберете нетехническо управление на проекти и бизнес изисквания, въз основа на които можете да координирате работата си с продукта.
  • Наблюдавайте работата на QA, DevOps и проблеми, свързани със сигурността.

И докато тази група признава, че много разработчици могат да се представят някоиработа в рамките на двете дисциплини, те вярват, че малко хора могат да го направят еднакво Добре. Накратко, те смятат истинския full-stack разработчик за нещо като еднорог. И хората, които наричат ​​себе си full-stack разработчици (и има твърде много от тях), правят това, без да имат подходящата квалификация.

Твърденията на този лагер по отношение на термина „разработчик с пълен стек“ се свеждат до следните точки:

  • Това е начин компаниите да поставят нереалистични изисквания към служителите.Това им позволява да натоварят един служител с огромен брой отговорности, което е от полза за компанията, но ползата е за сметка на служителя. Компаниите искат да получат много свършена работа и много опит на ниска цена (в сравнение с наемането на няколко специалисти).
  • Този термин предполага общо ниво на опит, което повечето разработчици нямат. Истинският full-stack разработчик трябва да бъде „двойно опитен“ – както в предния, така и в задния край – а това е невъзможно предвид скоростта на развитие на технологиите. Когато някой нарича себе си пълен стак, като има по-малко от това ниво на опит, това е неразумна употреба на термина.
  • Това насърчава широки, но повърхностни знания.Разработчикът с пълен стек никога не може да се потопи нито в бекенда, нито в фронтенда. Разработчик, който се опитва да покрие целия стек, е „швед, жътвар и играч на тръба“ и не постига майсторство в нито една област.

Представителите на този лагер са съгласни, че има много малко истински разработчици с пълен стек. Въпреки това, те са склонни да вярват, че хората, които се определят като full-stack, всъщност са front-end разработчици с известни back-end познания (или обратното).

Случаят да бъдеш разработчик на пълен стек

Лагерът на пълния стак, от своя страна, се застъпва за по-широко разбиране на този термин. Те отхвърлят идеята, че разработчикът на пълен стек трябва да има еднакви умения във всеки слой на стека. Вместо това той се нуждае от работни познания за целия стек и експертни познания за няколко от неговите слоеве.

Дефиницията за пълен стек, с по-малко ограничителен набор от изисквания, описва лице, което е в състояние да:

  • До известна степен имайте увереност в писането както на предния, така и на задния код.
  • Генерирайте минимален жизнеспособен продукт сами или с малко помощ от други, ако е необходимо.
  • Бъдете експерт в множество технологии.
  • Покажете поне основно разбиране на технологии, които не са специализирани.

С други думи, от тази гледна точка, разработчикът на пълен стек не е необходимо да бъде експерт във всички слоеве на стека. Вместо това, той трябва да бъде ефективен и опитен генералист. Това трябва да е човек с широка база от знания, собствена специализация и желание да признае липсата на задълбочени познания в това, в което не е специализиран.

Има няколко ключови съображения в защита на термина „програмист с пълен стек“:

  • Добрият разработчик не съхранява знанията си.Повечето разработчици работят или в предния, или в задния край. Но за да сте добри в някоя от тези области, трябва да разбирате и двете. Правенето на строга разлика между тях обезсърчава разработчиците да учат нещо извън собствената си специализация. Но в известен смисъл границата между бекенд и фронтенд е изкуствена.
  • Компаниите се нуждаят от генералисти.Специалист може не винаги да ви подхожда за всички бизнес цели. Малките компании и стартиращи фирми с ограничени хора и средства се нуждаят от разработчици с богат опит и разнообразни знания. Големите компании са по-склонни да делегират работа на отделни специалисти, но те също могат да привлекат разработчици с пълен набор в контекста на управлението на проекти.
  • Разработчиците на пълен стек изграждат мостове между фронтенда и бекенда.Разработчиците, които са специализирани в една от тези области, заемат свои собствени ниши, но разработчиците с пълен стек помагат да се преодолее пропастта между тях. Тъй като разбират и двете страни, те могат да идентифицират проблеми и възможности, които могат да убегнат от вниманието на специалист.

Тези аргументи доказват, че full-stack разработчиците не заместват, а допълват работата на front-end и back-end специалистите. Тяхната стойност се състои в способността им да разбират и работят с целия проект и да прилагат общи технически познания към всичко, с което се занимават.

Тази философия може да бъде обобщена с цитат от The Pragmatic Programmer:

„Колкото повече знаете, толкова по-ценни сте... колкото повече технологии познавате, толкова по-добре можете да се адаптирате към промяната.“

Общ знаменател

За тези от нас, които по време на дебата се опитват да дешифрират концепцията на термина „разработчик с пълен стек“, има добри новини. И двете страни са съгласни, че разработчикът на пълен стек трябва да разбира всички слоеве на стека. Основната разлика между дебатиращите е колко знания за всеки слой трябва да демонстрира такъв разработчик.

За да се доближим до общ знаменател, документ, публикуван наскоро от Асоциацията за информационни системи, анализира 5-те най-често използвани дефиниции на термина „разработчик с пълен стек“. Това беше опит да се изведе общо определение на термина. Ето какво се получи в резултат:

„Разработката на пълен стек е методология, която обхваща всички слоеве на стека и в същото време създава цялостно, приложимо решение за бизнес изискванията. Разработчиците на пълен стек имат богат опит във всички слоеве на стека и експертно ниво на познания в някои от тях. В даден стек те трябва да могат да произведат минимален жизнеспособен продукт, “Към консенсусно определение за разработка на пълен стек, 2018 г.

Ако сте специалист по подбор или мениджър по наемане на персонал и искате да насочите дискусията в конструктивна посока, можете да предприемете следните стъпки:

  • Уверете се, че вашите искания са разумни.Никой и от двата лагера не очаква разработчик с пълен стек да може да осигури резултати, равни на тези на цял екип от разработчици. Ако решите, че има смисъл вашият екип да наеме full-stack разработчик, уверете се, че не сте започнали по невнимание да търсите „еднорог“ и не молете един човек да отговаря на резултатите на много хора. Най-важното е да сте подготвени за възможността да има повече от един набор от умения, за да успеете в тази роля.
  • Разберете как вашата компания си сътрудничи с разработчиците.Как членовете на вашия екип си поделят работата и кой ги контролира? Какво ниво на гъвкавост по отношение на front-end и back-end очакват от всеки отделен колега, пълен стек или не? Ако специалистите по набиране на персонал и мениджърите по наемане на персонал възприемат тази перспектива, те ще имат по-лесно време да разберат как трябва да функционира full-stack разработчик в контекста на тяхната компания. Това ще помогне процесът на наемане да стане по-ефективен.
  • Съсредоточете се върхунуждите на вашата компания.Като цяло, колкото по-голяма е компанията, толкова по-специализирани разработчици (и други професионалисти) могат да работят за нея. Ако вашият екип е в процес на разрастване, помислете как един разработчик на пълен стек ще работи върху него - не само днес, но и в дългосрочен план, докато екипът расте. Екип от 300 души може да има повече място за разработчици с пълен стек, отколкото екип от 8 хиляди души.
  • Мислете за "пълен стек" като грубо ръководство.Диапазонът от мнения относно тълкуването на този термин предполага, че разработчиците на пълен стек могат да бъдат много различни. Само защото кандидатът се нарича, това не е индикация, че той е подходящ за вас. От друга страна, кандидат, който нарича себе си front-end или back-end разработчик, може да има достатъчно широки познания, за да се класира за вашата позиция с пълен стек. Не пренебрегвайте терминологията, но и не се вкопчвайте твърде много в нея, оставете уменията на кандидатите да говорят сами за себе си.

Към кой „лагер“ принадлежите вие ​​и вашият екип? Споделете в коментарите!

Fullstack разработчикът е специалист, който може да създаде уеб приложение от нулата: клиентска и сървърна част. Не всеки ще може да отговори на въпросите с какви технологии трябва да работи такъв специалист, какви умения да има и какви знания да има. Ще ви кажем кой е full-stack разработчик и какви са неговите предимства по отношение на заетостта.

Необходими умения за full-stack разработчик

Мина много време от 2000-те години, така че стандартният LAMP (Linux, Apache, MySQL, PHP), който беше използван от почти всеки втори разработчик тогава, не е достатъчен, за да се считате за full-stack разработчик. В днешно време разработчикът на пълен стек трябва да има напълно различни умения и способности в своето портфолио.

Сървър и хостинг

Разбиране на операциите на сървъра и хостинга. Познания за използване на файлова система, хостинг в облачно хранилище. И също така работете с управление на достъпа до данни и мрежови ресурси.

Работа с данни

Разработчикът на пълен стек трябва да може да създаде балансиран модел на данни, да е запознат с релационни и нерелационни бази данни и да може да работи с XML/JSON формати.

Бекенд технологии

Това включва познания по PHP, Python или Ruby езици, способност за изграждане на взаимодействие клиент-сървър, разработка на API, работа с анализи и свързани рамки.

Потребителски интерфейс

Разработчикът на пълен стек трябва да може да работи с оформления, да владее оформлението и да знае езици за маркиране. Познаването на JavaScript също е необходимо за създаване на визуално привлекателен интерфейс.

UX дизайн

Способността за разработване на UX е задължителна точка, с която всеки full-stack разработчик трябва да е запознат поне на основно ниво. Необходимо е да се разбере как потребителят ще взаимодейства с интерфейса - това е важна част от успеха на проекта.

Какви са предимствата на разработчика с пълен стек?

Важна характеристика на full-stack разработчика за работодател: такъв специалист може да заеме позициите както на front-end, така и на back-end специалисти. Съществува мит, че Facebook е набирал изключително full-stack разработчици през 2000-те години.

В сайтовете за лов на хедхънт всеки ден се появяват 7-10 нови свободни работни места за разработчици с пълен стек и е налична заплата от 119 000 рубли на месец, ако имате поне една година опит в разработката.

Получаване на необходимите умения

Можете да учите сами, за да придобиете всички горепосочени умения, но този подход няма да гарантира вашия успех. По-добър начин е да се запишете в онлайн университет