Статьи

Быть разработчиком полного стека

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


Разработчик полного стека, который может перейти от прототипа к полному MVP (минимально жизнеспособному продукту), часто считается мастером на все руки, мастером без дела и по уважительной причине. Чтобы определить современного разработчика полного стека, мы должны сначала сосредоточиться на том, кем был разработчик полного стека.

Тогда разработчики полного стека

Давным-давно, около 2000 года (в интернет-времени 17 лет — это очень давно), разработчиком полного стека был тот, кто мог:

  • вскройте веб-страницу в некоторых инструментах Adobe, таких как Photoshop или Fireworks
  • превратить этот дизайн в HTML, CSS и горячие точки на изображениях (а, помните те?)
  • написать несколько базовых скриптов PHP 4.0 (тогда еще не было ни одного объектно-ориентированного PHP) для обработки серверной логики
  • сохранить все динамические данные в MySQL, возможно, сделать небольшую оптимизацию
  • загрузить все это на сервер через FTP и собрать зарплату

Обратите внимание, что здесь мы говорим о PHP — у разработчика полного стека Flash или Coldfusion был другой (но немного другой) рабочий процесс.

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

А сейчас ?

Что нужно знать разработчику полного стека сейчас?

В наши дни происходят такие ужасы — как это случилось?

Разработчик приложения не видит своих детей из-за графика

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

Администратор сервера / Devops

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

  • подключение к удаленным серверам через терминал в средах без графического интерфейса
  • базовые сценарии оболочки
  • управление пользователями и группами на сервере
  • управление серверными программами, такими как Apache и Nginx, для обслуживания приложений
  • управление брандмауэрами и разрешениями
  • установка нового программного обеспечения и обновление дистрибутива

через GIPHY

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

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

облако

Помимо реальных управляемых или виртуализированных серверов, разработчику может потребоваться информация об облачном хостинге на таких платформах, как Heroku , Google Cloud, Azure, AWS и других.

через GIPHY

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

Back End

С другой стороны, помимо знания языка выбора — в нашем случае PHP и его множества фреймворков и CMS — разработчик должен быть знаком с:

  • веб-серверы, такие как Nginx и Apache, которые связаны с Devops выше
  • к сожалению, NodeJS для компиляции JS, CSS и других ресурсов в статически размещаемые. К счастью, есть способы избежать NodeJS с помощью PHP .
  • такие инструменты, как Composer для управления пакетами и зависимостями в самом PHP — ни одна современная среда разработчика не обходится без него
  • хороший дизайн API , так как большинство новых веб-сайтов сегодня основаны на API и просто общаются с отдельным интерфейсом (подробнее об этом ниже).
  • поисковые системы, такие как ElasticSearch ( введение здесь ) действительно важны для производительности
  • cronjobs и фоновые задания с помощью таких инструментов, как Gearman или библиотеки, такие как Crunz
  • знание о кэшировании с помощью Varnish , Redis и аналогичных мощных инструментов, которые разделяют расходы на хостинг на однозначные числа, часто приводит к разрушению проекта.

База данных

База данных является отдельным разделом, потому что помимо хорошего понимания реляционных баз данных для данных, схема которых часто не меняется (например, MySQL или PostgreSQL), разработчик должен знать о базах данных noSQL, таких как MongoDB , Redis или Cassandra, — не упомянуть графовые базы данных, такие как Neo4j .

Иллюстрация базы данных

Что еще хуже, все это на сервере, под контролем разработчика. Есть также несколько удаленных решений, таких как Mongo-подобный RestDB или принадлежащая Google Firebase и т. Д.

Внешний интерфейс

На переднем крае есть настоящий хаос.

через GIPHY

Чтобы получить исчерпывающий обзор того, что необходимо для работоспособного рабочего процесса в наши дни, посмотрите этот великолепный пост на канале JavaScript, но в качестве TL; DR он включает в себя следующее:

  • NodeJS и NPM
  • пряжа
  • Препроцессоры и транспортеры (например, Babel) для таких вещей, как Typescript, ES6, LESS, SCSS, SaSS
  • Строители и исполнители задач, такие как Grunt и Gulp
  • Фреймворки, такие как VueJS, React, Angular
  • Пакеты модулей, такие как Webpack, Browserify, Rollup

дизайн

В дизайне разработчик должен знать, как набросать прототип приложения, прежде чем конвертировать его в пригодный для использования формат, такой как HTML и CSS. Затем это можно сделать интерактивным с некоторыми JS, бэкэнды могут быть смоделированы с поддельными конечными точками JS, и только после того, как это приложение оболочки будет готово, и его дизайн пользовательского интерфейса и дизайн интерфейса будут готовы, может начаться настоящая разработка. Это само по себе является огромным предприятием и требует специального набора инструментов, таких как:

  • Photoshop и / или Illustrator или альтернатива с открытым исходным кодом, такая как Gimp / Inkscape — узнайте все об этом на канале Design
  • хороший, быстрый редактор, такой как Atom или Sublime Text (вот 10 плагинов ST для разработчика с полным стеком )
  • средства выбора шаблонов, такие как Subtlepatterns и средства выбора цветов, которые соответствуют цветам друг другу
  • сеточные системы для CSS
  • все из раздела Front End выше для насмешки JavaScript
  • способы развертывания прототипа в Интернете, чтобы клиенты могли его увидеть и высказать свое мнениеNgrok очень полезен для этого

логирование

Чтобы эффективно следить за состоянием приложения, разработчик должен иметь возможность отслеживать ошибки, получать доступ к журналам и извлекать из них ценную информацию. Им нужно будет иметь возможность распознавать и отмечать тренды, а также замечать скачки в использовании ЦП или ввода / вывода, чтобы предотвратить простои вовремя. Это немного связано с Devops, но требует особого набора навыков.

через GIPHY

У нас есть отличная статья о стеке ELK, которая подготовит вас настолько, насколько вам нужно, для всех ваших потребностей в журналировании — она ​​объединяет ElasticSearch для поиска в журналах, Logstash для их сбора и Kibana для информационной панели, в которой они отображаются прекрасный стек для удобного мониторинга. Есть даже хост- решения, которые позаботятся об этом для вас, например, Logz.io.

мобильный

Наконец, есть мобильный, чтобы рассмотреть. С ростом производительности веб-просмотра на iOS и Android, а также появлением PWA ( прогрессивных веб-приложений ) нативные приложения теряют свою привлекательность из-за сложного процесса их разработки. Таким образом, разработчик полного стека должен быть знаком либо с PWA, либо с чем-то вроде React Native, либо с полным веб-представлением, таким как NativeScript, Tabris, Cordova, Phonegap или другой реализацией, чтобы получить хорошее «клиентское приложение», подходящее для их API ( см. раздел выше).

Стоит ли быть разработчиком с полным стеком?

Так стоит ли после всего этого?

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

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

Я мог бы не быть «рок-звездой JavaScript», «ниндзя Elasticsearch», «гуру MySQL», «маньяком Devops» или «мобильным спорщиком», о котором вы бы мечтали, но в моем случае, полный стек позволяет мне расправить крылья, тестировать различные технологии и предлагать альтернативные, необычные решения для моих клиентов при фрилансе. Деньги могут приходить со всех сторон, и контракты, которые я могу заключить, варьируются от серверной работы до разработки плагинов WP и всего, что между ними, потому что я в меру знаком со всеми этими вещами (первое больше, чем второе, по общему признанию). Для меня то, что мне нужен полный стек, безусловно, того стоит, и если я сравню его с моими днями, посвященными только Flash, в то время как я получал удовольствие от работы тогда (без JavaScript!), Зарплата была ниже, а проекты труднее получить.

Как насчет тебя? Вы полный стек или специализированный? Что бы это ни было, вы чувствуете, что оно того стоит?