Контакти

Що таке full stack технологія. Full-stack розробник: міфічний персонаж чи цілком реальний співробітник? Чи можливе індивідуальне навчання

Стартапер, IT-директор і дизайнер звинувачують full-stack розробників у нереальності їхнього списку навичок, низької якості продуктів та відсутності універсальності. Full-stack розробники захищаються.

В закладки

У своєму блозі на сайт IT-Академія Олексія Сухорукова наводить найжорсткіші та суперечливі думки професіоналів IT-індустрії про те, чи насправді існують full-stack розробники і наскільки добре вони справляються зі своїми завданнями.

За даними щорічного звіту StackOverflow (у 2018 році в опитуванні взяли участь близько 100 000 розробників з усього світу), майже 50% з них вважають себе full-stack розробниками.

Перші пошукові запити full-stack developerз'явились не раніше 2010 року. І з цього моменту їхня кількість починає сильно зростати. На графіку зображено динаміку популярності (100 балів - максимальна популярність) запиту full-stack developer у всіх його варіаціях у Google.

Full-stack developer- сьогодні це вже окрема категорія фахівців, вкрай затребувана та поширена. Однак не всі згодні навіть із самим фактом її існування.

Сьогодні у нашому матеріалі супротивники поняття full-stackпред'являть свої жорсткі звинувачення щодо якості, універсальності та реальності існування таких розробників. А самі full-stack розробникиїхні думки спростовуватимуть.

В центрі уваги - три найгостріші питанняпро цю професію

1. Чи можливо знати все з переліку вимог для full-stack?

"Справжні" full-stack розробники існують - так само, як існують генії та люди, які програмують з 12 років. Опис "full-stack developer" так само безглуздо як "геній" або "той, хто може зробити все, що завгодно". Розкрию цю думку глибше. Ілюстрація нижче показує неповну версію того самого "stack", про який йдеться у всіх цих вакансіях.

Найчастіше розробнику потрібні лише одне чи два вміння з кожного шару. Деякі вміння можна отримати за пару годин (наприклад, найпростіша компіляція за допомогою “./configure && make && sudo make install” або використання VPS). Набуття інших умінь може зайняти роки.

Те, що очікується від розробника «повного стека», набагато перевершує можливості звичайної людини. Так, є люди, які на це здатні, я знаю деяких із них. Але є багато чудових розробників, дизайнерів і менеджерів проектів, які точно не підходять до поняття full-stack. Є й ті, хто називають себе full-stack, але навряд чи можуть визначити більш ніж півдюжини слів у стеку, який я розмістив вище

Повторюю, на мою думку, розробник з повним стеком - це той, хто має значний досвід роботи у всіх точках стека і почувається комфортно з одним або двома інструментами. Такі розробники цінні не тому, що вони знають все, що ви використовуватимете, а тому, що вони можуть швидко адаптуватися на основі знань, які вони набрали.

Ґрунтуючись на цьому розумінні, я впевнено можу назвати себе розробником повного стека. Тим не менш, я віддаю перевагу терміну «Розробник» або «Інженер-програміст» тільки тому, що вони трохи менш злоякісні та досить неспецифічні.

2. Чи може розробник full-stack зробити якісний продукт?

Я бачу поганий дизайн всюди в інтернеті, і я вважаю, що це через брак навичок. Не тому, що дизайнери погано підготовлені до поставленого завдання або через те, що інженери не знають веб-стандартів. Ні, причина полягає в тому, що існує цілий спектр навичок веб-розробки, які залишаються повністю проігнорованими. Незважаючи на докази того, що front-end development – ​​це цілеспрямована діяльність, яка потребує повної зайнятості, я бачу, що багато компаній наймають інженерів full-stack.

Я постійно бачу дико недоступні інтерфейси, які не мають фокусних станів та форм, які не дозволяють ефективно переміщатися за допомогою клавіатури. Я бачу непридатні мобільні інтерфейси та гігантські веб-додатки, повільні та незграбні, тому що ніхто не прорахував, як браузери працюють на базовому рівні. Якщо ви наймаєте інженерів з повним стеком, то ви отримуєте нестачу фокусу та досвіду. Тому що немає такого поняття, як єдиноріг, і немає такої речі, як інженер із повним стеком.

Full-stack розробка - це вміння сприймати найрізноманітніші ідеї. Згодом такий талант ставатиме все більш затребуваним. Бути full-stack розробником не означає миттєво перемикатися з обслуговування кластера Hadoop на програмування сполучного ПЗ на Java, а потім на JavaScript, що працює виключно в браузері. Спеціалізації придумані не дарма. Але розробник, який розуміє весь стек технологій, писатиме якісніші програми.

Так, розробник машинного інтерфейсу розумітиме, чим займаються розробники клієнтської частини, зможе взаємодіяти з ними. Програма не генеруватиме запитів, через які база даних злітає з котушок. Клієнтський розробник, який знається на проектуванні, зможе допомогти дизайнеру підготувати красиву програму, яка при цьому ефективно функціонуватиме на будь-якій платформі.

На думку Марка Лукідеса, full-stack розробники це не єдинороги, як їх дехто уявляє. Вони більше нагадують дерево, що розгалужується на інструменти, хмарні сервіси, дизайн, дані та мережу.

Чим активніше ви сприймаєте різні ідеї, тим більше ви дізнаєтеся про інші спеціалізації, а не лише про вашу власну. Тим більше ефективно ви працюватимете – з тієї простої причини, що навчитеся взаємодіяти з колегами. Більше того, володіючи великим арсеналом ідей і концепцій, ви краще справлятиметеся і зі своїми основними завданнями. Ось чого ми прагнемо, саме в цьому і полягає вся користь full-stack розробки.

3. Чи є full-stack розробник універсалом?

Давайте концепцію «розробника повного стека», яку останнім часом все палко використовують. Особливо на таких сайтах як Hacker Noon або Medium, які намагаються допомогти розробникам-початківцям стати «розробниками повного стеку». Дедалі більше компаній публікують вакансії, де потрібний «розробник повного стека».

Однак, прийнявши цей універсальний термін, ми, роботодавці, змушені тепер переглядати свої погляди на навички, які необхідні для виконання цієї роботи. Під терміном "розробник повного стека" стоїть абсолютно безглуздий перелік вимог.

Перелічені у цьому списку вимоги здаються мені кумедними. Повний стек - це термін, який визначає те, чого не існує, не може існувати, тому що це нездійсненний стандарт. Наші роботодавці не повинні використовувати цей термін – викладіть ваші вимоги, а не приховуйте їх під кумедною назвою. Якщо у вас хороша робота в хорошій компанії під заголовком «повний стек», спробуйте переконати свого начальника, що краще використовувати більш чітку назву, яка краще відображає специфіку ролі.

Я пишу свій власний покроковий посібник про те, як стати full-stack розробником. Знати всі компоненти у списку вимог до full-stack неможливо, але можна значно звузити цей список, якщо ви можете заздалегідь встановити стек devops. Крім того, ви можете охопити кожен шар до достатнього знання, особливо на початку проекту.

Я треную свою команду, щоб вони стали «інженерами з повним стеком», але кожен із них фокусується на певній галузі розробки: на iOS, на Android, в Інтернеті та на API. Переважно ми використовуємо тільки JavaScript та React / React Native, тому я можу змінювати їх позиціями. Зрештою, як тільки структура буде завершена, я можу перепризначити їх на позиції по конкретним вертикальним стекам. Наприклад, один на споживача, один на постачальників, один на admin та один на devops. І всі чотири будуть при цьому взаємозамінними. Така універсальна команда «інженерів з повним стеком» може суттєво скоротити витрати на персонал та зменшити час розробки.

Вакансія: Full Stack-веб-розробник

Один із найпопулярніших напрямків у галузі ІТ – це веб-розробка. Важливе місце у ній займають Full Stack-веб-розробники. Це універсали, які можуть створювати як клієнтські (фронтенд), так і серверні додатки (бекенд), а також мають знання системного адміністрування. Ми попросили представників компаній розповісти про знання, навички, досвід, актуальні для Full Stack-веб-розробників сьогодні

  1. Які знання та навички повинен мати Full Stack веб-розробник?
  2. Яким є інструментарій Full Stack-веб-розробника?
  3. Якими є вимоги компанії до рівня освіти потенційних співробітників?
  4. Які вимоги висуваються до досвіду роботи?
  5. Чи є особливі вимоги, які зумовлені специфікою діяльності компанії?

Олександр Майоров, керівник відділу Frontend-розробки у Tutu.ru

1. Спочатку визначимося з термінологією, хто такий веб-розробник. З назви зрозуміло, що це програміст, який працює з Інтернетом. Але веб складається з клієнтської та серверної елементів. Клієнтська пишеться із застосуванням мови розмітки, мови опису каскадів стилів та скриптової мови програмування JavaScript. При цьому збірка цього «добра» здійснюється на сервері і деплоїться на продакшен спеціальними утилітами. Серверна частина може бути написана на всьому що завгодно, але обов'язковою умовою є наявність HTTP веб-сервера як мінімум (хоча не тільки HTTP).

Якщо описати весь список компетенцій, виходить, що знання та очікування від Full Stack-веб-розробника виходять за межі можливостей звичайного програміста. Такий розробник повинен розбиратися в масштабуванні програми до декількох мільйонів запитів на хвилину, вміти вибирати між MongoDB і MySQL, застосовувати та налаштовувати хмарні сервіси, володіти десятком засобів керування конфігураціями для розгортання додатків на Ruby, PHP, JavaScript (щось ще) або їх комбінаціями , Розбиратися на відмінностях сервіс-орієнтованої архітектури від монолітних додатків і ще безлічі різних речей.

2. Звідси виходить, що Full Stack-розробник - це якийсь джедай або ніндзя, сеньйор девелопер, який володіє знаннями в багатьох областях:

  • одна або кілька серверних мов програмування (PHP, JavaScript, Perl, Ruby, Python, C#, Java…);
  • знання однієї чи кількох реляційних БД та вміння з ними працювати: MySQL, PostgreSQL, MS SQL…;
  • знання одного або декількох NoSQL-сховищ та документоорієнтованих БД: MongoDB, Redis…;
  • знання принципів роботи HTTP-протоколу, його версій та особливостей, мережевого стека загалом;
  • загальні знання з адміністрування та вміння працювати з Linux подібними системами;
  • знання клієнтських технологій та мов: JavaScript, CSS, HTML.

І на все це накладається знання фреймворків як для серверної розробки, так і для клієнтської, а також уміння все це поєднувати архітектурно в єдине ціле, уміння створювати сервіси та API для взаємодії. Кожен із пунктів – це окремо велика область вивчення, яку можна витратити кілька років.

Full Stack-розробник повинен мати хороше розуміння кожного компонента в стеку веб-технологій, щоб мати можливість приймати обґрунтовані рішення про їх впровадження та використання. Він також має вміти пояснити свій вибір колегам та менеджерам.

Розмірковуючи, приходимо до висновку, що, можливо, Full Stack-веб-розробник зовсім не варто займатися активним програмуванням, а замість цього фокусуватися на ролі системного архітектора. Людина зі знанням всього стеку технологій може передбачати проблеми комунікації та інтеграції між шарами до того, як вони зможуть завдати шкоди проекту, що розробляється.

Але навіть у такому разі роль архітектора має на увазі якусь обмежену спеціалізацію. Неможливо писати на всьому та вміти ефективно використовувати усі існуючі інструменти.

Навіть у такому вигляді Full Stack – це великий набір умінь, з глибоким розумінням взаємодії технологій у рамках стеку та того, як зміни на одному шарі стека впливають на інші його шари.

Але в реаліях, найчастіше на рекрутингових сайтах, під Full Stack розуміють веб-розробника із середніми або навіть мінімальними знаннями в кожній з областей (причому переважно лише пов'язаної з мовами розробки та вмінням працювати з БД, але не їх налаштуванням і адмініструванням).

Тому цей термін може викликати різні асоціації та емоції у різних людей (у тому числі негативні).

3. Мінімальні вимоги:

  • знання Unix-подібних систем, уміння працювати з Bash, базовий досвід адміністрування;
  • знання та вміння працювати з реляційною СУБД MySQL або будь-якою іншою SQL-базою;
  • знання мережевого стека, знання принципів роботи HTTP-протоколу та його версій;
  • вміння працювати з сервером Nginx, Apache (розуміння їх відмінностей, переваг, особливостей…);
  • знання однієї та більше серверної скриптової мови програмування (у нашому випадку мінімум PHP);
  • знання клієнтського шару середньому рівні (JS, HTML, CSS);
  • вміння працювати із системою контролю версій;
  • вміння працювати із системами кешування (redis, memcache…);
  • вміння працювати з NoSQL БД: MongoDB;
  • досвід написання Unit-тестів.

Список вимог може бути ширшим, залежно від проекту та завдань.

4. Досвід роботи у хорошого Full Stack-розробника від 5 років і більше. Як показує практика, більш-менш опанувати на професійному рівні навички в кожній з областей можна в середньому за 1,5-2 роки безперервного трудового стажу, при цьому кожен шар стеку – це кілька різних інструментів та мов програмування.

5. Специфіка описана в пункті 3. По-хорошому, Full Stack-розробник – це або одинак, який працює над якимсь завданням, можливо, RnD, або це тимлід якоїсь команди, системний архітектор, який розуміє всю архітектуру веб-додатку та визначає , яким має бути веб-додаток.

Євген Кузін, начальник відділу мережевих проектів, ТОВ «Доктор Веб»

1. Full Stack-розробник – це людина, яка має практичні знання про кожен рівень інформаційного середовища, в якому він працює, і вміє ці знання використовувати. Якщо ми говоримо про веб-розробника, то це знання від глибокого бекенда і до самого фронтенду, знання операційної системи, що використовується, та її механізмів (кешування, міжпроцесної взаємодії, роботи з пам'яттю), сильних і слабких її сторін.

Потім необхідне серверне програмне забезпечення, конкретика завжди визначається завданням, але багато інструментів можна назвати стандартними - веб-сервер, СУБД, кеш-сервер, сервер черг. Ефективне налаштування цього зоопарку з урахуванням знань про платформу та свої завдання.

Потім безпосередньо код бекенда, мережа і протокол HTTPS, код фронтенда, часом навіть верстка та її рендеринг браузерами.

Причому FS-розробник не обов'язково безпосередньо займається всіма етапами розробки програми, широко поширена думка про те, що FS-розробник - це знахідка для компаній, які прагнуть скоротити свої витрати на штат програмістів/системних адміністраторів, вірно лише частково. Важливіше, що FS-розробник обов'язково використовує свої знання, і в результаті це дозволяє створювати якісніші програми як з технічної точки зору, так і в цілому.

2. Найбільший, що безпосередньо випливає з того факту, що FS-веб-розробник займається буквально всім: утиліти для налаштування та оптимізації ОС, прикладні бібліотеки, фреймворки, аналізатори коду та профайлери, відладники, утиліти аналізу трафіку, інтегровані середовища розробки та, звичайно ж , браузер з усіма потрібними розширеннями.

3. Спеціалізована технічна освіта була і буде великим плюсом, тому, що б не говорилося, повністю розкрити свої здібності та розвинути правильне інженерне, програмістське мислення без освіти надзвичайно складно. Проте остаточне рішення завжди приймається за результатами співбесіди, трапляються випадки, коли формальний недолік освіти у кандидата компенсується досвідом.

4. У принципі тут те саме, що і з освітою. Будь-яких безумовних вимог до досвіду, що виражаються в роках стажу або кількості реалізованих проектів, немає, але за фактом без певного досвіду розробник просто не зможе приймати вірні технічні рішення та створювати якісні програми. Який вибрати підхід, які платформи безпечніші, які інструменти, бібліотеки та чому варто використовувати – це досвід.

5. Існує особливий акцент на безпеку, зумовлений специфікою діяльності «Доктора Інтернету». За своєю діяльності ми постійно протидіємо вірусописувачам та іншим зловмисникам у мережі, тому наші веб-сервіси регулярно досліджуються з метою знайти вразливість. Безпечна мережева архітектура, своєчасне оновлення вразливих компонентів та бібліотек, акуратність у обробці даних, що надходять із недовірених джерел, – цим аспектам приділяється першочергова увага.

Юрій Трухін, експерт з хмарних технологій InfoboxCloud

1. Для Full Stack-веб-розробника необхідні знання у таких областях:

  • розуміння принципів роботи серверів, мереж та хмарних технологій;
  • вміння проектувати та розробляти рівні даних та бізнес-логіки, аргументуючи архітектурні рішення;
  • навички розробки високонавантажених сервісів. Розуміння можливостей масштабування;
  • знання алгоритмів;
  • вміння проектувати та розробляти API та інтегрувати сервіси за допомогою API;
  • знання веб-технологій (HTML, CSS, JavaScript) та навички проектування сучасних інтерфейсів користувача;
  • розуміння User Experience;
  • вміння працювати із замовниками та з бізнес-вимог формувати технічне завдання;
  • знання гнучких методик розробки та вміння працювати в команді;
  • навички роботи з мікросервісною архітектурою;
  • бажання постійно вчитися та вдосконалюватися.

2. Голова, IDE (IntelliJ IDEA), текстові редактори (Atom, SublimeText, vim), Git.

3. За інших рівних результатів на співбесіді обирається кандидат із вищою освітою або вченим ступенем.

4. Бажаний досвід розробки сервісів та/або бекенда не менше 1 року.

5. Потрібне розуміння принципів роботи Odin Automation та Microsoft Azure Pack, вміння розробляти APS-пакети (https://www.apsstandard.org).

Бобір Рахімов, розробник інтерфейсів «Лабораторії Касперського»

1. Full Stack-розробник – це розробник, який може постачати веб-рішення в цілому. Тобто клієнтська частина та серверна частина (звідси і назва – Full Stack – весь стек). Крім стандартного набору знань фронтенд-розробника у вигляді JavaScript, HTML, CSS, від нього потрібно знати і вміти реалізовувати серверну частину. Він може бути реалізований на різних фреймворках: JavaScript (Node.js програми), C# (ASP.NET Web Forms/MVC), Java, Python (Django), Ruby (Ruby on Rails). Вибір того чи іншого фреймворку обумовлюється самими вимогами до застосування в плані продуктивності та типу операцій, які передбачається здійснювати на сервері.

2, 3. Вимоги відрізняються залежно від обраної платформи з наведених вище.

4. До досвіду роботи – як мінімум 2-3 роки (серверної розробки) плюс наявність реалізованих додатків.

5. Особливих вимог немає.

Олексій Скібін, Web Developer у СТОВ «Гейм Стрім», мінському центрі розробки Wargaming,

Лариса Бугаєва, Recruiter у СТОВ «Гейм Стрім», мінському центрі розробки Wargaming

1. А. З.: Для початку необхідно визначити, що таке Stack для розробки проекту У моєму розумінні це набір технологій, які використовуються на конкретному проекті. Наприклад, це можуть бути JavaScript та HTML для фронтенду, а Python + Django + PSQL + AMQP для бекенда.

Насправді, просто знати технології недостатньо. Щоб бути Full Stack-веб-розробником, необхідно розуміти підхід до застосування.

Ідеальний набір для Full Stack-веб-розробника:

  • знання технологій веб-сервера;
  • розуміння проектування/моделювання шару бази даних;
  • розуміння проектування бізнес-логіки;
  • розуміння, як зовнішній фронтенд взаємодіє з бізнес-логікою та шаром даних (API-шар).

Також корисно вміти писати юніт-тести та профільувати свій код, оцінювати/аналізувати роботу з БД.

2. А. З.: Я не особливо прискіпливий до інструментів Використовую:

  • PyCharm;
  • Django-extentions або пітонівський профайлер для аналізу коду;
  • Analize у базі даних та New Relic для аналізу запитів;
  • Zabbix або щось подібне для перевірки стану сервера.

3. Л. Б.: У нашій компанії немає особливих вимог до рівня освіти У моїй практиці був кандидат, який чудово знав С++, здобувши при цьому лише середню освіту. Він працює у серверній команді вже кілька років.

4. Л. Б.: Якщо говорити про позиції Full Stack-веб-розробників, з якими я працювала, був потрібний релевантний досвід на high load-проектах Ми шукали сильного бекенд-розробника, який не мав би проблем написати необхідну функціональність на JavaScript. Також ми шукали фахівців із знанням фреймворків Knockout та React.

5. Л. Б.: Наша специфіка – високі навантаження. Відповідно, досвід роботи на таких проектах дуже бажаний. Плюсом буде досвід роботи в продуктової компанії, т.к. ваутсорсингу часто не приділяють належної уваги тестуванню та автоматизації процесів.

Марина Трокай, HR generalist, Андрій Брюханов, керівник відділу веб-розробки, компанія Auslogics

1. Компанія Auslogics розробляє низку програмних продуктів, для просування та підтримки яких працює команда Full Stack-розробників. Команда стабільно розширюється та поповнюється новими висококваліфікованими фахівцями. Як і на будь-яку іншу посаду в компанії, для Full Stack-програмістів обов'язковим є виконання тестового завдання, а після успішного його проходження слідує технічне інтерв'ю.

Ми працюємо з PHP, JS, MySQL, HTML та CSS. Серед загальнодоступних фреймворків віддають перевагу Yii, Symfony, jQuery. Для контролю версій – Git

2. Кожен розробник самостійно вибирає зручні інструменти. З IDE, як правило, використовуються NetBeans та PHPStorm.

3. Як було зазначено раніше, у компанії Auslogics виконання тестового завдання є невід'ємною частиною процедури розгляду претендентів. Крім цього, є також технічне інтерв'ю. Саме ці дві складові відбору дозволяють оцінити відповідність заявленого рівня знань претендента на вимоги компанії. Проте тестові роботи відправляються не всім претендентам, які подали своє резюме, а лише тим, у кого цей досвід відповідає вимогам вакансії. Освіта, підвищення кваліфікації та наукова діяльність відіграють, звичайно, важливу роль, але не вирішальну. Ухвалюючи остаточне рішення на користь того чи іншого кандидата, ми аналізуємо вміння претендента розмірковувати, шукати оптимальні рішення поставлених завдань, якісно вивчати нові технології. Ці навички набагато важливіші за дипломи і сертифікати.

4. Для участі у конкурсі на посаду Full Stack-розробника фахівець повинен мати впевнені знання HTML, CSS, PHP, JavaScript та SQL. Бути знайомим з будь-яким із сучасних PHP-фреймворків. Знання основ *nix (bash, LAMP) та (або) вміння використовувати Photoshop у рамках верстки шаблонів за готовими макетами завжди є незаперечною перевагою.

Оскільки компанія австралійська, то потрібні впевнені знання англійської мови, достатні для розуміння технічної документації та ведення стандартного листування. Безперечною перевагою завжди є знайомство із суміжними технологіями. Наприклад, для автоматизації тестування ми використовуємо Codeception, для continuos integration – Capistrano.

5. Колектив компанії Auslogics працює у відмінному від більшості інших ІТ-компаній форматі – всі співробітники, окрім офісу Сідней, працюють на умовах повної зайнятості, але віддалено. Це дає чимало свободи, але й потребує більшої самостійності, самоорганізованості та ініціативності. Креативний підхід, ретельне ставлення до написання коду, бачення кінцевого продукту та чітка його реалізація є запорукою успіху роботи над проектом. Для нас важливе ставлення співробітника до продуктів і проектів компанії. Саме «продуктовий» тип мислення розробника визначає майбутню якість коду. Широкий кругозір, знання предметної галузі та ринку додатків – переваги, які дозволять розробити справді якісний продукт. Наші програмісти не тільки не побоюються змін вимог та переробки архітектури, а часом і самі є ініціаторами цього, приймаючи це як виклик та мотив самовдосконалення.

Єгор Малишев, веб-розробник у JetBrains

1. Full Stack веб-розробника це кваліфікований спеціаліст, який здатний брати активну участь у всіх етапах розробки веб-додатків, починаючи від серверної логіки та її реалізації за допомогою різних технологій та фреймворків, і закінчуючи клієнтським кодом, що працює безпосередньо у браузері.

На мій погляд, на першому місці стоїть саме уявлення загальної картини процесів, що відбуваються в додатку. Найбільш цінне вміння планувати структуру додатка, уявляти, як всі його частини взаємодіятимуть один з одним і із зовнішніми компонентами. Тонкощі та нюнси тих чи інших реалізацій у цьому випадку не такі важливі, їх можна делегувати коханням, більш сфокусованим на фронт-або бекенд-розробці.

Першорядне завдання Full Stack веб-розробника – забезпечити створення правильного скелета програми, який надалі витримає функціональне навантаження, що наростає, у вигляді фіч і компонентів.

2. Так як більшу частину часу доводиться працювати з кодом, то інструмент №1 це, звичайно, IntelliJ IDEA Ultimate. Не обходимося і без інших наших продуктів: використовуємо YouTrack для встановлення та відстеження завдань, TeamCity для автоматизації побудови збірок.

3. Сама собою наявність диплома або навіть дисертації мало що говорить про людину. Ми не вимагаємо формальних «кірочок», а оцінюємо кандидатів з їхнього досвіду, які демонструються вмінням, тому, як вони знаються на складних ситуаціях і знаходять із них вихід.

4. Як і у випадку з освітою, самі по собі сухі цифри на кшталт «від п'яти років досвіду розробки великих додатків» не є визначальним фактором. Звичайно, стаж важливий, але ми оцінюємо сам досвід, а не час, протягом якого його було отримано.

5. Письмова та бажано розмовна англійська мова. Крім того, що він активно використовується для спілкування всередині компанії (у нас багато англомовних співробітників), сама по собі фронт розробка вимагає написання різних текстів. До того ж, значна частина документації різних API та програмних продуктів часто написана тільки англійською, і він є де-факто стандартом для спілкування в різних спільнотах і на конференціях.

Компанія надає співробітникам велику ступінь свободи в роботі, що накладає велику відповідальність і пред'являє підвищені вимоги до вміння самоорганізовуватись та ефективно керувати своїм часом, щоб виконувати поставлені завдання вчасно.

Підготував Ігор Штомпель


Насамперед визначимося з термінами. Є багато різних уявлень про те, хто ж такий full stack розробник, хтось навіть цілком обгрунтовано вважає, що такі розробники - це міф, але в цій статті буде на увазі розробник, який має знання та вміння, що дозволяють з нуля написати якийсь софт та вивести його в продакшн. При цьому софт може бути розрахований на web-платформу, мобільні програми або десктопні. Ідеальний full stack розробник - це той, хто володіє певною мірою всіма платформами і може розробити та встановити на них свій софт. Але це справді скоріше міф.

Непогане визначення з quora.com

Коли люди шукають full stack розробника, вони очікують побачити співаючого та танцюючого техномага.
Ну чи хоча б когось, хто не надто сильно скаржиться, коли його попросять попрацювати поза його зоною комфорту.


Можливо, за заголовком комусь здасться, що це жалібний пост, який говорить про те, як погано живеться некваліфікованому школяреві, який захопив всього із різних статей в інтернеті. Ні, пост не жалібний, ми говоримо про full stack, а не full slack, і наприкінці буде розглянуто список плюсів. І ми розглядатимемо не школяра, а розробника з досвідом роботи у п'ять і більше років. Просто подивимося, які мінуси є у такому розвитку.

Мінуси

У кожній окремій області ви гірше, ніж вузький фахівець
Здається досить очевидним, але все ж таки поясню. Якщо ви витратили шість років на одну технологію, то з очевидністю ваші знання будуть більшими, ніж у людини, яка шість років займалася кількома. У вас було більше проектів, більше займалися якимись типовими рішеннями, більше читали і писали код.

Вам складніше просуватися глибше
Хороший 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 людини. Запрограмувати мікроконтролер для інтернету речей, який спілкується з веб-сервером, пише в базу даних, і дані з якого можна переглядати на веб-сайті, в додатку або на мобільному пристрої? Легко! Ви можете представити всю систему і реалізувати її без погоджень, непорозумінь і зволікань.

Ваші рішення працюють швидше та надійніше
За рахунок розуміння взаємодії різних систем, ви можете вибрати кращі шляхи для їх комбінування. Ви краще розумієте кожен компонент і не боїтеся його використовувати. Як приклад – візьмемо “кляудні технології” (мопед не мій, у публікаціях проскакувало). Загалом і в цілому, хмара це чудовий спосіб вирішення величезної кількості завдань, у тому числі задач масштабування. На жаль, все частіше бачу, що хмарні рішення використовуються просто тому, що розробник не вміє і боїться вирішити своє завдання якось, а представляє це у вигляді додаткового плюсу. А багато що можна зробити набагато дешевше та краще, якщо мати хоча б поверхневе розуміння питання.

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

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

Орієнтовані різні рівні підготовки. Кожна програма починається з базового курсу, на які можуть вступити слухачі, які вивчили основи обраного напряму і мають мінімальні знання з спеціальності, що цікавить. Для зарахування на курси поглибленого та професійного рівнів без проходження базових курсів пропонується пройти попереднє тестування або співбесіду з тренером.


Чи є вікові обмеження для навчання у центрі?

Таких обмежень у IT-Academy немає. Але важливо розуміти, що в основному ми готуємо junior-фахівців, а більшість IT-компаній віддають перевагу кандидатам на цю позицію, яким ще не виповнилося 32 роки (відповідно до опитування резидентів Парку високих технологій, проведеного в 2017 році). Тому бажано якнайшвидше визначитися з напрямком, що цікавить, і пройти навчання, щоб почати будувати свою успішну кар'єру в IT.


Чи можна навчатись без знання англійської мови?

Навчатися на деяких курсах можна з мінімальним знанням англійської мови. Але ми рекомендуємо піднімати рівень володіння мовою безпосередньо до курсів або під час навчання, оскільки при подальшому пошуку можуть виникнути складності. IT-галузь давно стала міжнародною, тому, щоб почуватися впевнено у професії, проблем із комунікацією бути не повинно. Крім того, всі популярні мови програмування базуються на англомовних лексемах і для комфортної роботи з ними потрібний мінімум рівень Pre-Intermediate.


Чи є у IT-Academy курси з англійської мови?

На даний момент IT-Academy може запропонувати навчання англійської мови зі знижкою до 20% наших партнерів – однієї з найбільших мовних шкіл Streamline Language School. Ексклюзивна партнерська програма буде цікава всім бажаючим вивчити іноземну мову – насамперед англійську для впевненого входу до IT-індустрії.

Чи ведеться в IT-Academy навчання більш специфічним IT-професіям? Адже сьогодні затребувані не лише програмісти та тестувальники.

IT-Academy стежить за розвитком освітнього ринку, тенденціями в IT та потребою у конкретних спеціалістах. Виходячи з цього, ухвалюється рішення про запуск нових курсів. Сьогодні в Освітньому центрі ведеться навчання з 20 різних програм за такими напрямами, як розробка та тестування ПЗ, бізнес-аналіз, web-дизайн, маркетинг, продаж, робота з даними і так далі. Ми можемо запропонувати відповідні курси охочим займатися IT Sales, освоїти сучасні засоби Data Mining, Machine Learning та Big Data, розібратися в основах візуалізації процесів та даних з використанням інструменту Tableau.

Чи можливе індивідуальне навчання?

Ні. На базі IT-Academy пропонуються лише групові заняття, при цьому гарантується уважне ставлення викладачів до кожного студента.


Які напрями користуються найбільшою популярністю?

На даний момент у п'ятірці найпопулярніших освітніх програм - тестування ПЗ, Java-розробка, Front-end-розробка, бізнес-аналіз, web-дизайн.


Чи можу я записатися одразу на кілька курсів?

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


Скільки коштує навчання в IT-Academy та чи надається розстрочка?

Вартість варіюється в залежності від курсу навчання та обраного розкладу занять. У середньому – від 200 до 500 рублів на місяць. Дізнатися точну суму можна, вибравши один із курсів . IT-Academy надає розстрочку на період навчання із щомісячними виплатами.


Як записатись на навчання?

Ви можете залишити заявку через сайт, клікнувши на «Записатися» біля курсу, що цікавить, і заповнивши форму, або зв'язатися з нами по телефонах. І, звичайно, ми будемо раді бачити вас у нашому офісі, де можна отримати особисту консультацію з усіх питань.

Вітаю! Багато хто з Вас, влаштовуючись на роботу, відгукуючись на вакансії та проекти на фрілансі, часто помічали, що практично скрізь потрібно Full-stack розробникІ заробітну плату пропонували дуже високу, і умови роботи непогані. Більшість такі вакансії цікавлять, але не всі знають, хто це та які завдання виконує. Про труднощі та радощі роботи Full-stack розробниками зараз поговоримо.

Кого можна називати Full-stack розробником?

В цілому, Full-stack developer- це програміст, який займається створенням сайтів та веб-додатків. Такий фахівець повинен знати багато чого, назвати себе Full-stack розробникомможе тільки той, хто є абсолютним професіоналом у веб-програмуванні. Влаштуватись на таку роботу досить важко і далеко не у кожного це виходить. Конкретно про те, що має знати та вивчати Full-stack developerобговоримо нижче.

Що потрібно вивчати Full-stack розробнику?

Якщо Ви бажаєте освоїти цю професію, то насамперед Вам варто знати htmlі cssна п'ять із плюсом, і спокійно створювати свої, хоч і прості (перший час) сайти. Це не складно, і ми говорили про те, як це зробити, і навіщо вже не раз. На це у Вас піде один місяць, якщо Ви старанно займатиметеся цим.

Звичайно, вже ніхто не пише код, і не створює сайти без додатків до htmlі css - html 5і css 3. Дуже прості, але вкрай ефективні та корисні доповнення, що дозволяють не писати сотні коду на JavaScript, а також дають можливість адаптивно верстати, без використання різноманітних доповнень. Про html 5і css 3теж було чимало сказано. Освоїти їх Ви зможете за ще більш короткий термін, ніж htmlі css.

У Full-stack розробціпросто необхідна мова програмування JavaScript. Це одна з найголовніших складових цієї професії. Ви повинні дуже добре знати та писати цією мовою. В освоєнні Вам допоможе величезна кількість написаного Вами коду і різного роду вправи. Загалом потрібно багато практики, чим краще Ви знайте JavaScriptтим більше шансів на те, що виберуть саме Вас.

Для того, щоб спростити код та зменшити обсяг виконаної спеціалістом роботи, була створена бібліотека для JSпід назвою jQuery. До неї потрібно поставитися з такою ж серйозністю, як і до самого JS, адже з цією бібліотекою відкриваються величезні можливості, серйозно спрощується складність та обсяг роботи, те саме можна говорити і про код.

На додаток до всього вище написаного, Вам також знадобиться aJax. Потрібний він для того, щоб обмін даними між сервером і користувачем відбувався "на фоні". Наприклад: Ви, перебуваючи на одній вкладці на сайті, перейшли на іншу, натиснувши на неї, на сайтах, які не використовують aJaxвідбудеться звичайний перехід за посиланням, але на інших сайтах, де він застосовуватиметься, просто зміниться контент. Жодних довгих завантажень та іншого, все швидко та гладко. Це допомагає в оптимізації сторінки, швидкої роботи сайту.

Говорячи про бібліотеку jQueryми говорили про спрощення. Тут варто сказати і про Sass. Але він застосовується не для JS, а для Css. Більш абстрактний css-коді його спрощення, ось навіщо служить ця метамова.

Раз ми вже заговорили про Sass, то було б гріхом не сказати і пару слів про Less. Надбудова для Css, що розширює його динамічні можливості. Lessстворений на основі Sassта його синтаксис SCSS.

Тепер ми переходимо до найскладнішого, а саме – Php. Сама мова програмування не складна, проте на тлі всього, про що ми з вами сьогодні говорили - Phpвиглядає складніше. Він знадобиться Вам для багатьох завдань. Від створення движка для сайту до створення своєї власної CMS.

Тут варто сказати і про роботу з базами даних, конкретніше про роботу з базами даних MySQL. Нічого складного, все це вивчається разом із Phpале як би там не було легко - вкрай важливо і необхідно.

Багато хто пропускає розробники пропускає його повз, або ж знає поверхово, тим самим роблячи велику помилку. Говоримо ми зараз звичайно ж про XML. Це дуже схожий на Htmlмова розмітки, але вони в жодному разі не взаємозамінні. Вирішують вони різні завдання. Той же XMLпризначений для зберігання та транспортування даних, головне завдання якого є також що таке ці дані.

Останнє, що має знати та чим вміти користуватися Full-stack розробник- це CMS. Готові движки, як їх називають програмісти та розробники, потрібні в основному для тих, хто не знає як створювати сайти вручну, або якщо людині це не цікаво, немає часу і т.д. Освоїти будь-який із них дуже просто, і можливо це за тиждень. Найпопулярніші - це: WordPressі Joomla.

Підсумки

Сьогодні ми познайомилися із професією Full-stack розробникаі довідалися які завдання він виконує, що має знати та вміти. На даний момент це поширена робота і вакансій з кожним днем ​​все більше і більше. Звичайно, ми проговорили про кожну дрібницю, яку має знати Full-stack розробник, але на це піде не одна стаття, і головне те, що Ви завжди повинні бути в курсі оновлень, щодня читати та дізнаватися нове. Загалом – розвиватися. Інакше ніяк, адже той, хто не прагне більшого – у результаті залишається ні з чим. Успіхів у вашій подальшій роботі!



Сподобалася стаття? Поділіться їй