Приблизно до початку 2000-х років програмісти були універсалами: продукти тоді були досить простими, всі розбиралися у всьому та вчилися на ходу. Поступово, з появою нових і більш складних технологій, розробники розділилися на дві великі групи: front-end і back-end.
“Фронти” – це ті, хто створює для користувача інтерфейс. Грубо кажучи, якщо порівнювати IT-продукт з автомобілем, “фронти” створюють панель управління і красивий зручний салон. Інша велика група – back-end розробники: вони займаються начинкою, тобто, усім тим, що приховано під капотом нашої взятої для прикладу машини.
Універсальні бійці – full stack розробники. Вони вміють і в back, і під front – але якраз через цю універсальність дуже глибокої експертизи від них чекати не варто. Full-stack програмісти – відмінне рішення, коли потрібно зробити, наприклад, MVP (minimal viable product, мінімально життєздатний продукт – по суті, прототип, що володіє необхідним мінімумом функцій, щоб його вже можна було показати інвесторові або використовувати для вивчення ринку і “обкатки” продукту на майбутніх клієнтах) або продукт не дуже складний. Завдяки широкому колу компетенцій, full-stack developers економлять час компанії (не витрачаючи його на комунікацію між front-end і back-end командами) і звичайно, гроші.
Full-stack розробники найчастіше зайняті в стартапах, в продуктових компаніях – при запуску нових продуктів на ринок або, навпаки, в неактивній стадії проекту. Як правило, на своєму проекті такий співробітник відчуває велику гнучкість: адже особисто від нього залежить більше рішень, ніж від окремо взятого “фронту” або “бекенда”. Проте йому важко глибоко “прокачати” експертизу: доводиться розбиратися у всьому, але – потроху. Кар’єрні можливості у “фуллстаков” ширші, ніж у “фронтів” і “бекендов”: у них більше шансів стати тех-лідамі. Ну і можна нескінченно розвиватися по горизонталі, вивчаючи все нові і нові технології.
Ще одна група розробників – web-developers: вони, як нескладно здогадатися, створюють будь-які види браузерних продуктів: сайти, веб-додатки, веб-інтерфейси сервісів і так далі. Веб-розробники теж поділяються на front-end та back-end. Є ще одна, досить вузька, група програмістів: embedded developers (цю сферу називають ще низькорівневим програмуванням). Такі фахівці створюють програми, які керують різними пристроями. Найяскравіший приклад – робот: комплект деталей, який приводиться в управління комп’ютерною програмою. Зараз, з поширенням Інтернету речей (Internet of Things, IoT) ця спеціальність активно набирає обертів. Інтернет речей – це наприклад, система, яка автоматизує збір даних з лічильників комунальних послуг і виставляє рахунки, або регулярно передає лікарю показники датчиків серцевого ритму, які носить пацієнт (і викликає допомогу, якщо показники критичні). Холодильник з вайфаєм, який сам вміє складати списки покупок і робот-пилосос, що прибирає квартиру за певним алгоритмом і управляється дистанційно – все це теж приклади Internet of Things і утвір embedded-розробників. Навіть наш улюблений смартфон – це теж приклад embedded-розробки.
У цю сферу найчастіше приходять ті, хто захоплюється робототехнікою і складними пристроями, дуже часто embedded-програмістами стають інженери, які розуміють, як створюються пристрої – і ставши програмістами, вони ці пристрої “оживляють” (програмують) за допомогою коду. Ну і звичайно, програмістів можна ділити на нескінченні групи по мовам, на яких вони працюють. Мов програмування – сотні, у кожного – своя логіка і своя сфера застосування, є більш актуальні і менш актуальні – в загалом, це тема для окремої статті.
Шляхів розвитку у програміста – безліч: по вертикалі (від junior до senior), перейти в менеджери (до техлід, тімліда, аж до СТО), перейти в суміжні спеціальності (наприклад, в QA – якщо цікавіше шукати помилки і їх причини, ніж писати код; в support – якщо спілкуватися подобається більше, ніж писати коди; в бізнес-аналіз, DevOps, project management). І звичайно, завжди можна розвиватися по горизонталі, поглиблюючи свої знання і розширюючи навички.
Увійти в професію можна як отримавши диплом з профільної спеціальності в університеті, так і пройшовши профільні курси по тій чи іншій мові. Університетська програма – скоріше для full stack розробників: від азів до тонкощів професії. Короткі курси – це, як правило, спеціалізація на конкретній мові або навіть конкретному сервісі (видах сервісів).
На наших курсах ми не вчимо програмування – але без знань про комп’ютерні мережі, які ми даємо на дуже глибокому рівні, хорошим програмістом теж не стати.
Сподіваємося, було корисно. Зберігайте в закладках і діліться з друзями, які мріють # війтивIT.