версия 2019.04.11

Как врачи, но не врачи

Вне индустрии есть некоторое непонимание простого факта: не существует просто программистов. Это как если бы наивно объединять всех врачей одним словом и от этого выводить какие-нибудь практические выводы. Дантист тоже врач. И психиатр. Хирург (которые тоже разные). Педиатр. Гинеколог. Логопед. Все врачи, но вы же их различаете. Так и с программистами.

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

Ну и да, тут не только о программистах. Цель главы — показать разнообразие живности у клавиатуры, а не отделить мух от зёрен.

Принцип деления

Что такое программирование и вообще работа с компьютером? Использование инструмента для решения задач. Соответственно, зоопарк делится по паре инструмент плюс область задач. Точнее, на практике оказывается первичной всё-таки область задач, но всё это так условно местами, а областей задач так много, что… в общем, всё условно.

Фронтендеры

Когда вы заходите на сайт в интернете, вы видите страницу. На странице кнопки, меню, снежинки падают, всё это красиво (ок, не всегда) показывается на экране ноутбука и смартфона.

Называются эти люди так потому, что делают front end — морды сайтов. Дизайнер делает дизайн (рисует расположение элементов на страницах), фронтендеры на дизайн смотрят и переводят его на языки браузера — HTML, CSS, JavaScript. Раньше фронтендеры назывались верстальщиками, т.к. их работа очень напоминала полиграфическую, но по мере усложнения инструментов и задач потребовалось новое слово.

Занятие популярно у начинающих по двум причинам:

  1. Не надо знать математику с алгоритмами. Среднебольничный фронтендер за время работы с нуждой в этих знаниях почти и не сталкивается.
  2. Результат работы виден сразу, он нагляден, понятен, ярок и красочен. Можно даже маме с папой показать, вот, мол, я всего день учу программирование, а уже сверстал страничку про нашу семью.

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

Бекендеры

Когда вы заходите на сайт в интернете и видите страницу, на которой написано что-то вроде «Internal Server Error», вы сталкиваетесь с результатом работы бекендеров — людей, делающих то, куда страница ходит за данными, чтобы вам показать. Если представить сайт театром, фронтендеры занимательно ходят по сцене с репликами и картинно умирают от хлопушки, а вот всё остальное (освещение, декорации, сама сцена, звук, ведро с богом из машины, спускающееся сверху, и т.п.) — бекенд. Задник сцены, он же back end.

Спектр задач здесь, понятно, гораздо больше, инструментов тьма. Одни бойцы на C++ пишут ядро поисковых систем, по уши утонув в алгоритмах, тонком знании железа и больших нагрузках. Другие бойцы мерно один за другим создают сервера, единственной задачей которых является поход в базу за чем-то, что надо показать на странице (тут ни алгоритмов, ни железа, ну и языки используются другие).

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

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

Мобильщики

Для создания программ, запускаемых в мобильных телефонах, используется свой набор инструментов, ну и там вообще своя специфика. Откровенно говоря, не знаю, чего ещё тут внятного сказать, кроме того, что для продукции Apple [теперь] пишут на Swift, для Android пишут то на [не совсем полноценной] Java, то не на них (например, есть PhoneGap).

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

Справедливости ради, тут тоже бывают чудеса алгоритмов и оптимизации, чаще в области работы с графикой — как быстро и красиво нарисовать карту местности на железке с ограниченным объёмом памяти и слабым процессором?

Десктопщики

Люди, создающие десктопные приложения (desktop applications) — те программы, что вы запускаете на своём компьютере и смотрите на окошки с кнопочками. Скажем, браузер (если он не мобильный). Или Paint в Windows. Почтовый клиент вроде Thunderbird. Миллион программ.

Если попробовать выделить какое-либо характерное для специализации знание… ну, возможно, знание API операционной системы. Код же пишут на всём, что под руку подвернётся, сейчас многие языки позволяют создавать десктопные приложения.

Эмбедщики

Вокруг нас множество микросхем, выполняющих свою работу. В стиральной машине, в холодильнике, в автомобиле, в самолёте, в светофоре, в станках. Везде. Ещё вот есть очень модная в последние годы тема: Internet of Things

Люди, создающие код для этих микросхем и систем, занимаются программированием встраиваемых систем (embedded systems), отсюда и название.

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

ДэБэА

Часто информация хранится в базах данных — это специальные программы, позволяющие оптимально хранить информацию (данные), быстро сохранять и быстро извлекать удобным (ладно, не всегда) способом. Программы сложные, иные даже монструозные, потому со временем появились люди, специализирующиеся именно на работе с базами данных: DBA

Плохой DBA превратит ваш продукт в пьяную улитку, хороший DBA своей работой компенсирует работу пьяных бекендеров.

Геймдевщики

Люди, делающие игры. Они (люди и игры) очень разные, требуют очень разных знаний и умений, живут в своей галактике, ну и вообще. Я бы их не выделял здесь в подвид, если бы не стремление начинающих начинать учёбу с создания какой-нибудь игры, а ещё фантазировать о том, как их игра выйдет в топы и захватит мир. Не надо. Сначала прочитайте книгу [Джейсон Шрейер. Кровь, пот и пиксели. Обратная сторона индустрии видеоигр. 2-е издание. Эксмо, 2019].

Системщики

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

Датасайентисты и мачинлёрнеры

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

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

Админы

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

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

Резюме

Ещё есть сетевые инженеры, роботостроители, тестировщики (в области автоматизации тестирования), 1С-программисты (м… ну пусть), клепатели расширений для всяких шняг вроде WordPress или Drupal, создатели ботов для Telegram, биоинформатики, конструкторы компиляторов, инфобезы и многие другие.

Иными словами, мир программирования достаточно велик, чтобы принять в себя людей с разными наклонностями и способностями. Не получилось с одним? Пробуйте другое. Не понравилось другое? Подучитесь, попробуйте третье.


< А я смогу?[Титул]А зачем? >