Full stack developer
Довольно давно в различных источниках всплывала очень интересная тема Full Stack developer’a. А именно, что должен из себя представлять такой разработчик, каким опытом, знаниями и умениями должен обладать, с какими технологиями работать? И если с вопросом что должен из себя представлять все более менее понятно — должен уметь самостоятельно написать с нуля не тривиальное приложение, т.е. frontend, backend, работа с сетью, с БД и другие плюшки, архитектурные решения и т.д. То с последующими вопросами все не так ясно. Заинтересовавшихся прошу подкат…В этой своей статье я представляю вашему вниманию перевод части статьи отсюда.Слои Full Stack’а: 1. Server, сеть и окружающая среда hosting’а. Сюда отнесем понимание того, что может сломаться и почему. Соответствующее использование файловой системы, хранение облака, сетевые ресурсы и понимание избыточности данных и доступности необходимы. Как масштабировать приложение с учетом аппаратных ограничений? Как на счет многопоточности и состояния гонки? Умение уловить то, что вы не увидите на вашей рабочей машине, но это может произойти в реальном мире. Full Stack разработчик может работать бок о бок с DevOps. Система должна предоставлять полезные сообщения об ошибках.2. Data Modeling Если модель данных ошибочна, то бизнес логика и более выскокие уровни начинают нуждаться в странном (ужасном) коде для компенсации острых углов, которые модель данных не покрывает. Full Stack разработчики знают как создать разумно сбалансированную реляционную модель данных, с foreign key’ями, индексами, представлениями и т.д. Full Stack разработчики знакомы с NoSQL и знают, когда таки решения сияют по отношению к реляционным БД.3. Бизнес логика Здесь необходимы твердые объектно-ориентированные навыки. Так же здесь возможно понадобятся различные framework’и.4. API слой / Action слой / MVC Знания о том, как внешний мир может действовать против бизнес логики и модели данных. На этом уровне framework’и должны использоваться в большой степени. Full Stack разработчики имеют возможность писать четкий, последовательный, простой интерфейс. 5. Пользовательский интерфейс Full Stack разработчики понимают как создать удобочитаемый макет и признают, что им необходима помощь профессиональных художников и графических дизайнеров. В любом случае, внедрение хорошего визуального дизайна является ключевым фактором. Превосходно владеет HTML/CSS, JavaScript (node, backbone, knockout и т.д.).6. Пользовательский опыт Full Stack разработчикам понятно, что пользователи просто хотят, чтобы работало. Хорошая система не доведет своих пользователей до синдрома тоннеля запястья или воспаленных глаз. Full Stack разработчик может посмотреть на процесс из 8 щелчков мышью и 3 шагов и свести его к одному клику. Такой разработчик пишет полезные сообщения об ошибках, если что-то ломается, просит за это прощения. Иногда программисты непреднамеренно пишут сообщения об ошибках, которые могут заставить пользователя почуствовать себя глупым.7. Понимание того, что нужно заказчику и бизнесу Full Stack разработчик понимает, что происходит при использовании клиентом программного обеспечения, а так же обладает пониманием бизнеса клиента.Другие части паззла: 1. Умение писать качественные Unit тесты.2. Понимание Continuous Integration.3. Осознание проблем безопасности очень важно, так как у каждого слоя есть свои возможные уязвимости.Дальше в оригинале идут некторые мысли автора, ну, а я предлагаю всем желающим обсудить, прокомментировать и дополнить список навыков и необходимых Full Stack разработчику знаний и умений. Спасибо за внимание.