Литмир - Электронная Библиотека
A
A

6. Полный стек

Большинство программ на сегодняшний день подобны египетским пирамидам из миллиона кирпичиков друг на друге и без конструктивной целостности – они просто построены грубой силой и тысячами рабов.

Алан Кёртис Кэй

В мире «айти» есть разные профессии, одних только типов программистов насчитывается несколько десятков, и все в определенной степени являются специалистами – просто разными. Одни разрабатывают приложения для мобильных устройств, другие пишут программы для операционных систем семейства Linux, третьи работают с веб-технологиями. Для работы в каждом направлении, требуется уникальный перечень технологий, который программист должен знать. Это называется «стек» (т.е. список) технологий».

Бывают узкоспециализированные программисты, которые знают ограниченное количество технологий. Их преимущество в том, что они знают эти технологии в совершенстве, оттачивая мастерство годами. К недостаткам можно отнести то, что, ограничившись определенным, узким «стеком» программисту будет крайне сложно реализовать готовый «продукт», с нуля до конечного «релиза» (выхода в свет). Готовый продукт чаще всего требует гораздо большего набора технологий, чем владеет узкоспециализированный программист.

Программист, владеющий всем перечнем технологий в своей нише, называется «Разработчик Full-stack» (от англ. Full stack – полный стек, список). Его преимущества очевидны: возможность решать максимум поставленных перед ним задач самому, реализовывать проекты, требующие всего перечня технологий. А к недостаткам можно отнести то, что как правило «разработчик Full-stack» в первые годы практики владеет познаниями технологий не настолько глубоко, как узкий специалист. Разумеется с годами он догонит, однако в силу более широкого перечня технологий развитие «в глубину» у Full-stack программиста идет медленнее.

У каждого программиста, занятого в своем направлении, стек технологий свой. Я являюсь веб-разработчиком, и мой стек технологий выглядит следующим образом: HTML, CSS, JavaScript, PHP, MySQL, основы администрирования веб-серверов на базе Linux (далее мы будем разбирать именно этот список). У разработчика мобильных приложений под iOS стек будет таким: Objective-C, Swift, JavaScript, Flutter. А вот для Android уже другой стек: Java, Kotlin, Jetpack Compose. У разработчика программ для операционной системы Windows: C#, WinForms, WPF, MS SQL.

Стек технологий может дополняться знаниями специализированных библиотек (расширяющих базовый язык программирования, например jQuery для JavaScript) и фреймворков (готовых наборов инструментов, например Laravel для PHP).

Как вы понимаете, программисты не взаимозаменяемы, и попросить веб-разработчика просто дописать какой-то функционал для программы, работающей на компьютере под управлением Windows, не получится. Безусловно, у всех программистов есть общая база знаний, основы устройства и работы вычислительной техники, компьютерных сетей и ряда прочих навыков, позволяющих им быстро ориентироваться в «рабочем окружении» того устройства, с которым они имеют дело. Тенденции последних лет сводятся к тому, что потребность в узкоспециализированном специалисте уступает место специалистам с более широким охватом технологий. Уровень такой специализации получил название DevOps (от англ. development & operations) – инженер, который владеет навыками и методологиями полного цикла разработки, настройки и развертывания программного обеспечения. Иными словами, работодатель (или заказчик), хочет получить за свои деньги больше опцией в одном лице нанимаемого им специалиста.

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

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

Какой именно путь выбрать – решать вам, я бы рекомендовал на начальной стадии освоить полный стек технологий выбранного направления (тех, что описываются в этой книге, стек веб-разработчика), затем углубиться в одну или две технологии, достигнув там мастерства профессионала, а затем постепенно, не торопясь, «подтягивать» остальные. Идеальный вариант – через несколько лет стать узкоспециализированным программистом по каждой технологии из всего стека. Таким образом вы будете профессионалом высшей категории в области веб-разработки (или иного, выбранного вами направления), «разработчиком full-stack», а затем, возможно, DevOps.

Интервью с Андреем из Siniby

Представляю вашему вниманию интервью с моим братом Андреем Яровиковым, который является, что называется, «прирожденным айтишником». Он познакомился с миром электроники, микроэлектроники и программированием еще в дошкольные годы (более тридцати лет назад). Профессионал своего дела, «full-stack» разработчик фирмы Sinoby.

В каком направлении ты работаешь?

Разработчик веб-сайтов и различного рода внутренних сервисов компании.

Какое самое большое преимущество веб-разработчика full-stack?

Если ты «backend» или «frontend», зачастую свою работу ты делаешь лучше, чем «full-stack». Ты являешься хорошим винтиком в хорошо отлаженном механизме разработки. Если ты «full-stack», у тебя более широкий кругозор при программировании проектов. Желательно знание других языков программирования для понимания подходов и технологий. Из «full-stack» есть возможность вырасти в руководителя проектов. Есть понимание, как устроены реально работающие проекты и сайты.

Разработка на full-stack – есть ли в этом азарт? Правда, что работа с большим набором технологий не дает скучать?

Азарт есть всегда, особенно на первых этапах. Азарт приходит, когда занимаешься чем то новым. Глаза горят. Хочется всё сделать хорошо, но реальность такова, что всегда есть сжатые сроки. Почти всегда проект надо сделать ещё вчера, так как время программиста стоит денег, а заказчик и руководитель проектов должны экономить и свои, и деньги клиента. По этой причине в реальных проектах, чтобы успеть к сроку, часто приходится идти на компромиссы и писать не всегда понятный и красивый код. Для знания большого набора технологий надо уделять свободное время, которое никто не хочет оплачивать. Реальность такова: на работе тебя пытаются использовать для зарабатывания денег, и никто не хочет платить за твоё обучение. Набор технологий и инструментов даёт выбор, как сделать тот или иной проект максимально быстро и технологично.

Что самое сложное в full-stack?

Пожалуй, это опыт. Нужно много знать и стараться поспевать за трендами. Обычно это приводит к тому, что код, написанный, например «frontend», красивее и лучше, так как человек целыми днями только этим занимается и оттачивает мастерство, однако заказчику нужен реально работающий проект. Особенно если это «startup». И ему главное готовый продукт.

8
{"b":"889252","o":1}