Русский
Русский
English
Статистика
Реклама

Full stack

Из песочницы Перевод Кто такой Full Stack разработчик?

28.10.2020 22:13:41 | Автор: admin

Привет, Хабр! Представляю вашему вниманию перевод статьи "What is a Full Stack developer?" автора Laurence Gellert.


image


Кто такой Full Stack разработчик?


Разумно ли ожидать, что простые смертные будут владеть всеми аспектами разработки? Скорее всего нет, но в Facebook могут попросить об этом. На OSCON (OReilly Open Source Convention ежегодный съезд, посвящённый обсуждению открытому и свободному программному обеспечению) один из сотрудников Facebook сказал, что они нанимают только Full Stack разработчиков. Что это значит?


Для меня Full Stack разработчик это человек с хорошим пониманием каждого уровня разработки и искренне интересующийся всеми программными технологиями.


Хорошие разработчики, знакомые со всем стеком, знают, как облегчить жизнь тем, кто их окружает. Вот почему я так против разрозненности на рабочем месте. Конечно, политические и коммуникационные проблемы мешают в больших организациях. Я думаю суть политики найма в Facebook заключается в том, что если умные люди используют свои головы и слушаются своего сердца, то лучший продукт создается за меньшее время.


image


Уровни Full Stack разработки:


  1. Сервер, сеть и среда хостинга


    A. Это включает в себя понимание того, что может сломаться и почему, не принимая никаких ресурсов как должное.


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


    C. Как приложение масштабируется с учетом аппаратных ограничений?


    D. Как насчет многопоточности и состояния гонки? Скорее всего вы не примените их в своей разработке, но они используются в мире.


    E. Full stack разработчики могут работать бок о бок с DevOps. Системы должна представлять полезные сообщения об ошибках и возможность логирования.


  2. Моделирование данных


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


    B. Full stack разработчики знают, как создать разумно нормализированную реляционную модель, дополненную внешними ключами, индексами, представлениями, таблицами поиска и т.д.


    С. Full stack разработчики знакомы с концепцией нереляционных баз данных и понимают в чем они превосходят реляционные базы данных.


  3. Бизнес логика


    A. Понимание ценности, которую представляет приложение.


    B. Знание твердых объектно-ориентированные принципов.


    С. Знание фреймворков, которые могут использоваться.


  4. Уровень API / Уровень действий / MVC


    A. Как внешний мир влияет на бизнес логику и модель данных.


    B. Фреймворки должны активно использоваться на этом уровне.


    С. Full stack разработчики имеют способность писать четкие, последовательные, простые в использовании интерфейсы. Меня отталкивает степень запутанности некоторых API.


  5. Пользовательский интерфейс (UI)


    A. Full stack разработчики: а) понимают, как сделать читаемый макет, или b) признают, что им нужна помощь художников и графических дизайнеров. В любом случае, реализация хорошего визуального дизайна является ключевым моментом.


    B. Владение HTML5 / CSS.


    С. JavaScript это перспективный язык будущего и в мире JavaScript делается много захватывающих проектов (node, backbone, knockout...).


  6. Пользовательский опыт (UX)


    A. Full stack разработчики ценят, что пользователи просто хотят, чтобы всё работало.


    B. Хорошая система не дает своим пользователям синдром запястного канала или воспаления глаз.


    С. Full stack разработчики пишут читаемые сообщения об ошибках. Если что-то сломалось, извинитесь за это. Иногда программисты непреднамеренно пишут сообщения об ошибках, читая которые пользователь чувствует себя глупым.


  7. Понимание что нужно клиенту и бизнесу


    A. Сейчас мы размываем черту архитектора, но это слишком большая роль.


    B. Full stack разработчики имеют представление о том, что происходит, когда пользователь использует программное обеспечение. Они также имеют представление о бизнесе.



Другие важные моменты


  1. Возможность писать качественные модульные тесты. Кстати, в наши дни даже JavaScript может иметь модульные тесты.
  2. Понимание повторяющихся автоматизированных процессов построения приложение, его тестирования, документирования и масштабированного развертывания.
  3. Осознание проблем безопасности имеет важное значение, поскольку каждый уровень представляет свои собственные возможные уязвимости.

Заключительные мысли


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


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


Я не уверен, что вы можете называть себя full stack разработчиком пока вы не поработаете на нескольких языках, платформах и даже отраслях в своей профессиональной карьере. Full stack выходит за рамки "senior engineer", поскольку он находится в том же направлении, что и программист-полиглот, но с более высоким представлением всех соединительных частей. Обратите внимание, что в моем списке только 3-5 пунктов, связанных с написанием кода.

Подробнее..

Что вообще значит full stack?

29.10.2020 20:09:21 | Автор: admin


Не счесть холиваров о том, стоит ли быть фуллстек-разработчиком. И в таких дискуссиях часто вылезает ещё один спорный вопрос: а что это понятие означает-то? Фронтбэкендер? Многорукий Шива, мастер всего от инфраструктуры до тестирования? Человек, освоивший столько технологий, что воспарил над ними в мир общих концепций?


Я захотел разобраться, как это понятие появилось и что люди в него вкладывали изначально. Было ли какое-то каноническое определение? Пока разбирался, увидел прямо-таки эволюцию представлений о нём и решил изложить её для Хабра.


Когда понятие возникло? Как можно увидеть по графику Google Trends, в широкий обиход оно вошло с 2014-го. А на Хабре первое упоминание произошло в 2013-м. Это был перевод англоязычного блог-поста, где упоминается, что Facebook нанимает только Full Stack. То есть в Фейсбуке это уже тогда было устоявшимся понятием? Я стал гуглить дальше и в техническом блоге Facebook нашёл пост 2010 года The Full Stack, Part I с тысячей лайков. А он, в свою очередь, ссылается на пост разработчика Рэнди Шмидта 2008 года. И, судя по прочей найденной мной информации, вот у Шмидта и было первое использование понятия, из которого выросло всё остальное. Теперь, когда мы дошли до начала начал, давайте пойдём по этим же постам в обратном направлении (по хронологии) и посмотрим, что в них говорилось.




2008: Full Stack Web Developers (Randy Schmidt)


Эта страница личного блога уже даже не открывается, но Internet Archive заботливо сохранил для нас Первый Пост. Автор поста восхищается людьми, которых он называет Full Stack Web Developers. И вот какое определение им он даёт:


A full stack web developer is someone that does design, markup, styling, behavior, and programming.

Вот это сейчас внезапно было: первым пунктом идёт дизайн. Д И З А Й Н. (Судя по контексту, это не про design как проектирование, а именно про графический дизайн.) А programming упомянуто мимоходом как единый последний пункт хотя сегодня обсуждения строятся как раз на том, что у него есть подпункты.


Ну, с programming понятно: в 2008-м ещё не произошёл JS-взрыв, поэтому в тексте браузерная часть проходит как markup, styling (читай: HTML, CSS). Но даже если мысленно заменить markup, styling и programming на фронт и бэк, всё равно не получится нынешних дискуссий: это разделение Шмидта как раз не сильно волновало. По-настоящему его волновало, что он не разбирается в дизайне, и ему надо вот с этим справиться, чтобы стать настоящим full stack web developer. Так что получается, что мы сейчас под фуллстеком понимаем вообще не то, что закладывал автор.


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




2010: The Full Stack, Part I (Carlos Bueno)


Следующие два года слова full stack не получали большого распространения, но затем Карлос Буэно из Фейсбука написал текст с таким заголовком, ссылающийся на Рэнди Шмидта. Поскольку у инженерного блога Facebook аудитория заметно больше, чем у небольшого личного блога, похоже, что вот отсюда понятие начало расходиться шире. Но Карлос не просто пересказал малоизвестную чужую идею, а дал своё определение:


A "full-stack programmer" is a generalist, someone who can create a non-trivial application by themselves.

Вот такое звучит применимо и сегодня: человек, который может сам создать приложение в одиночку. Про дизайн тут не слова ни сказано, и непонятно, что думает Карлос по его поводу. И ещё, кстати, тут нет слова web, которое было в оригинале получается, что можно и где-нибудь в геймдеве быть фуллстеком.


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


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




2012: What is a Full Stack developer? (Laurence Gellert)


Ещё один резонансный ранний пост тот самый, благодаря которому словосочетание full stack впервые появилось на Хабре (его тут переводили аж три раза, причём в третий раз вчера, спустя восемь лет после публикации оригинала).


Здесь определение звучит так:


For me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology.

Знаком со всеми слоями, даже если и не мастер в них вот это интересный нюанс. Если изначальное определение предполагало умеешь всё делать хорошо, то здесь этого уже требуют. Можно быть T-shaped: чем-то конкретным заниматься глубоко, а с другими вещами достаточно быть знакомым.


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


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


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




2014: Full-stack developers (Mike Loukides)


Наконец, наткнулся в процессе гугления на популярный текст 2014 года в блоге на сайте издательства O'Reilly. Здесь уже не просто отдельное мнение, а попытка осмыслить различные предыдущие выступления по теме и добавить к ним что-то своё.


Одно из добавлений: вот здесь говорится, что JavaScript к 2014-му страшно разросся и усложнился, так что от фуллстек-разработчиков теперь требуется и понимание всяких ангуляров.


А ещё Майк предлагает к списку знаний фуллстека предлагает добавить CVS (ну, сегодня бы уже даже не стал упоминать, наверное), облака, распределённые вычисления Как он сам признаёт, результат в таком случае получается не вертикальным стеком, где всё опирается друг на друга, а разветвлённым деревом, где много вещей в сторону.


И ещё он признаёт, что если добавить это всё к списку от Лоренса, получается совсем уж длиннющий перечень. Поэтому не требует магического абсолютного мастерства во всём сразу. А вместо этого впрямую произносит слово T-shaped, призывая специализироваться на чём-то, но в то же время и заглядывать в другие сферы: я не требую от разработчиков разбираться в сетевых вопросах на уровне сетевиков, но уметь обсуждать эти вопросы надо.


Из забавного: в тексте есть фраза I sincerely hope that full stack doesnt appear in job titles anywhere. Майк, пишем тебе из будущего, не хочется расстраивать, но тут такое дело





И что в итоге?


Какие выводы мы можем извлечь из этих четырёх текстов? Своими выводами делитесь в комментариях, а у меня получились такие:


  • Сегодняшние обсуждения full stack страшно отдалились от того, что вкладывал в это словосочетание его автор. Наверное, он офигевает, глядя на то, во что всё превратилось :)
  • Это понятие с самого начала было довольно размытым: с первых же постов разные люди вкладывали в него разное. Четыре приведённых текста это четыре ощутимо разных позиции.

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


А ещё я увидел в этих определениях идею, которую считаю очень интересной. Но надо сделать оговорку: у меня профдеформация, и я тут лицо заинтересованное.


Смотрите: мы привыкли воспринимать фуллстек как фронт+бэк, но сразу два из четырёх описаний совершенно не требуют быть сениором в обеих сферах, а вместо этого идут в сторону T-shaped. Они предлагают не отказываться от специализации и быть гением-многостаночником, а изучать разное вокруг своего основного.


И это откликается во мне по следующей причине: я работаю в JUG Ru Group, мы делаем конференции для разных IT-специалистов, и среди их зрителей встречаю как раз таких людей. Типичный случай Java-разработчик посещает конференции не только по Java, но и по тестированию или DevOps. А ещё может посмотреть видеозапись доклада про GraphQL с JS-конференции или про архитектуру с .NET-мероприятия.


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


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


И если вы хотите быть фуллстеком вот в таком значении, то для вас напоследок сделаю минутку рекламы: мы придумали конференционный вариант как раз для таких людей. Для нашего сезона из 8 онлайн-конференций сделали Full Pass билет-абонемент, дающий доступ ко всем сразу. Смысл в том, чтобы конференцию по своему профилю смотреть внимательно, а на других точечно подключаться к отдельным докладам, актуальным для вас. Если звучит интересно переходите на сайт Full Pass, там все подробности.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru