Найти тему

Чем отличаются разные программисты друг от друга?

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

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

Например, сейчас очень распространена веб-разработка – создание различных приложений, которые выполняются, например, у пользователя в браузере (чат-ботов частично тоже относят к веб-разработке). В веб-разработке программистов часто делят на frontend- и backend-разработчиков. Фронтенд-разработчики – это те, кто пишет клиентскую часть. Как правило, для этого используется язык JavaScript, программы выполняются в браузере у пользователя.

Для того чтобы правильно сделать клиентскую часть, нужно ещё уметь верстать, то есть формировать визуальные элементы страницы, визуальные элементы веб-приложения. И, как правило, вся современная веб-разработка делится еще и на различные реактивные фреймворки и реактивные библиотеки такие как React, Angular и подобные. И различные разработчики по-разному знают эти инструменты, по-разному владеют ими и предпочитают, как правило, делать свои решения на знакомом им инструменте.

-2

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

Сейчас очень распространено машинное обучение. Большинство вещей, связанных с машинным обучением, пишется на языке Python. Но это не единственный выбор, есть решения, которые могут писаться на других языках, в целом поднимают модели ML и на JavaScript, и даже на с#. У этих специалистов свой специфический набор навыков. Как правило, хорошие ML-специалисты, то есть люди, которые занимаются сферой Machine Learning, владеют математикой, математической статистикой, знают, как оперировать данными в многомерных пространствах, например, знают какую-то векторную геометрию. В общем, это такая сфера на грани между программированием и наукой, причём вполне определённой математической наукой.

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

-3

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

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

Большинство языков, которые мы знаем, и которые на слуху – это высокоуровневые языки программирования. Они создают дополнительный языковой слой, чтобы трансформировать какие-то понятные человеку конструкции. Например, термины на английском языке в понятные процессору конструкции. И ряд программистов занимается напрямую программированием процессоров, программированием микроконтроллеров.

В АСЭ, где студенты магистратуры ВИШ проходят практику и работают над проектами, самая масштабная часть – это веб-программирование. Нужно, чтобы продукты были кроссплатформенными, могли разворачиваться на любой операционной системе, практически в любых условиях. Это большое преимущество веб-стека, потому что браузер – универсальная вещь, он запускается хоть с телефона, хоть с компьютера на Windows или на Linux, и об этих условиях заранее разработчик может не знать.

Записано со слов Пешехонова Дениса, главного эксперта управления разработки продуктов Multi-D АО АСЭ.

-4

Магистратура ВИШ МИФИ готовит специалистов в области цифровой трансформации жизни, цифровой трансформации экономики, цифровой трансформации технологии и индустрии.