Full stack от первого лица. Взгляд разработчика

В последнее термин full stack становится всё более популярным в IT сфере. Однако несмотря на свою многолетнюю историю он пока так и не получил ясной формулировки.

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

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

Поэтому, есть смысл осветить особенности full stack с точки зрения непосредственно самого программиста, объём знаний и навыков которого в сфере IT выходит за рамки не только одной технологии, но и самой профессии программист.

Один за всех

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

  1. Предпроектный анализ и составление общего технического задания на проект;
  2. Проектирование будущей программы и составление конкретного технического задания для программистов;
  3. Собственно программирование;
  4. Тестирование и устранение ошибок;
  5. Разработка технической документации;
  6. Передача готового программного продукта заказчику;
  7. Сопровождение программного продукта во время эксплуатации.

Специалисты, которые занимаются только программированием, как правило, принимают участие в выполнении проекта только на этапах 3 и 4 (иногда частично 5). На остальных этапах главные роли играют представители других профессий.

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

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

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

Объять необъятное

Сфера деятельности программиста далеко не всегда ограничивается одной конкретной областью. Backend разработчику может потребоваться знание frontend’а и наоборот и т.д.

Однако современный уровень развития информационных технологий таков, что полностью овладеть даже чем-либо одним сегодня практически невозможно. То есть даже узкие специалисты не всегда в полной мере владеют тем, с чем они работают. Что можно сказать, когда разработчик оперирует несколькими технологиями и, тем более платформами?

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

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

В тоже время всё может оказаться далеко не так плачевно и даже наоборот, если подходить к этому с умом.

На самом деле совмещение нескольких специализаций на профессиональном уровне возможно! Только нужно подходить к этому добросовестно и не выходить за границы разумного.

Каковы эти границы? Они определяются каждым разработчиком индивидуально исходя из трезвой оценки своих возможностей.

Если ваши возможности позволяют работать в новой для вас области без ущерба для тех, что уже освоены – вопросов нет. Иначе стоит всерьёз задуматься о том, чем вы могли бы пожертвовать ради этого. Возможно у вас в «арсенале» есть технологии, которые мало либо полностью неактуальны и их больше нет смысла «поддерживать». Но, не исключено, что в итоге наиболее разумным решением будет отказ от затеи с новой сферой деятельности.

И швец, и жнец…

Если вы специалист широкого профиля, помимо просто работы за несколько человек, вас могут привлечь для участия в большем количестве проектов. Более того велика вероятность, что вам придётся иметь дело с практически любым исходным кодом («он же разберётся»).

С другой стороны.

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

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

Вы можете разрабатывать сложные программные комплексы, стоящие на стыке нескольких технологий и даже платформ.

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

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

Вместо заключения

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

В отношении full stack такие выводы неуместны. И дело здесь вовсе не в деликатности данной темы и тем более не в её многочисленных аспектах.

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

Поэтому, если full stack приносит пользу или наоборот создаёт трудности причина, скорее всего, далеко не в нём.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *