С чего начинают программисты? 

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

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

  • Техническое;
  • Математическое;
  • Физика.

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

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

Что такое веб технологии? 

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

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

Следующий этап развития программиста сопровождается усложнением задач. Например, сайт landing, на который заходят 50-70 человек, это одна история. Сайт, на который заходят одновременно 1000 человек — уже другая история, где необходимо умение работать с рядом технологий под большой нагрузкой. 

Что должен уметь Senior разработчик?

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

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

Каковы различия между разработчиками разного уровня?

Разница между веб разработчиками и программистами в том, что программист — это общее определение,  а веб разработчик — это частный случай начинающего программиста. 

Senior, Middle и Junior программисты отличаются опытом работы со сложными, масштабными задачами. 

Middle программист — это человек,  который от 3 до 5 лет поработал на сложных проектах, Senior разработчик — от 5-7 лет.

За этот период Senior программист поработал на нескольких масштабных проектах и на проектах с разными технологическими историями. Работая  в одном проекте, человек получает достаточно узкий опыт технологий. За 5-7 лет, программист поработал с десятком проектов, столкнулся с разными технологиями и их подводными камнями. Оценил работу технологий в реальном времени, не только изучил техническую документацию, а столкнулся с большим числом отличий между теорией и практикой. Столкнувшись с этим реальным опытом на 10, 15 проектах — программист может стать Сеньором. 

Ещё одним отличительным верхнеуровневым критерием можно выделить следующее:

  • Джун должен знать теоретические вопросы на 50 — 70%; реального опыта работы и использования технологий из теории может быть 25%;
  • Миддл, соответственно, теорию знает на 80-90%, опыта использования технологий, которые он знает из теории, составляет  порядка 50%;
  • Сеньор теорию знает на 95-100%, при этом понимает, откуда теория появилась и какие есть недостатки у фундаментальных концепций, а также их применение. Опыта использования своих знаний приходится у Сеньора на 75%.