Человек в ИТ

  1. Программисты (programmer)
  2. Архитекторы / проектировщики
  3. Системные администраторы (system administrator)
  4. Девопсы (DevOps)
  5. Менеджеры
  6. Технологии
  7. Резюме

Программисты (programmer)

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

Чем качественнее и быстрее программист решает задачи, тем выше его уровень. Условно программистов разделяют по следующим уровням:

Джуниор (junior)

Молодой (начинающий) программист, который не обладает обширными знаниями и опытом. У него низкая (по меркам ИТ) зарплата, но и спроса с него никакого.

Должен уметь:

Мидл (middle)

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

Должен уметь:

Сеньор (senior)

С ростом опыта мидл превращается в сеньора, который может самостоятельно решать большие задачи. Больше ответственности, больше зарплата.

Должен уметь:

Тимлид (team leader)

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

Должен уметь:


По области применения программисты делятся на:

Фронтэнд (Frontend)

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

Фронтэндер должен:

Бэкэнд (Backend)

Бэкэндеры отвечают за обработку, хранение и передачу данных от пользователя в хранилище и обратно.

Бэкэндер должен:

Автоматическое тестирование

Тестировщики пишут наборы тестов для тестирования каждой части системы, чтобы снизить риски отказа приложения из-за ошибок в разработке.

Тестировщик должен:

Архитекторы / проектировщики

Архитектор / проектировщик — человек, который по заранее известным техническим требованиям составляет описание модулей приложения и способы их взаимодействия.

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

Архитектор / проектировщик должен:

Системные администраторы (system administrator)

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

Системный администратор должен:

Девопсы (DevOps)

Девопсы — человек, который поддерживает в рабочем состоянии инфраструктуру приложения. Если вы и ещё тысяча посетителей зашли на сайт и стали тыкать на все кнопки подряд, а сайт при этом работает, значит девопс справился со своей работой.

Девопс должен:

Менеджеры

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

В отличие от всех остальных менеджеры не пишут код, они пишут задачи.

Product owner

Product owner — менеджер, который отвечает за развитие приложения/продукта в целом. Он задаёт общий курс разработки приложения в зависимости от текущей ситуации на рынке и компании.

Product owner должен:

Project manager

Project manager — менеджер, который отвечает за выполнение задач в рамках развития приложения/продукта. Он ставит задачи тимлидам и контролирует их выполнение.

Project manager должен:

Аналитики

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

Аналитики могут ставить задачи, оценивать риски, исследовать продукт/приложение или рынок, строить отчёты и т.д.

Аналитик должен:

Технологии

Виртуализация

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

Различают несколько видов виртуализации:

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

Облако/облачные технологии (cloud)

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

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

Основными поставщиками облачных технологий являются такие гиганты как Google, Amazon, Microsoft и Яндекс.

Реляционные базы данных

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

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

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

Однако, такие базы прекрасно подходят для построения отчётов и небольших приложений.

Объектные базы данных

По мере того как реляционные базы данных перестали справляться с растущими объёмами, стали появляться хранилища нового формата, в которых данные не дробятся на столбцы и строчки, а хранятся единым документом — объектом.

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

При всех своих преимуществах объектные базы данных уступают в удобстве построения отчётов реляционным базам. Поэтому выбор технологий важный этап в жизненном цикле приложения.

CDN

Благодаря облачным технологиям появилась возможность покупать разные ресурсы в рамках одного виртуального сервера. Место на диске, пропускная способность сети, вычислительные мощности и целые виртуальные машины — ресурсы, которые можно купить.

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

Резюме

Разработка приложений довольно сложный и затратный процесс, который проходит следующие этапы:

  1. Бизнес-идея (product owner).
  2. Анализ рынка и оценка рисков (product owner, аналитики).
  3. Оценка затрат и формирование требований (архитектор + project manager).
  4. Выбор технологий (архитектор + тимлиды).
  5. Постановка задач (product owner, project manager, аналитики).
  6. Выполнение задач (программисты).
  7. Контроль качества (тестировщики + project manager).
  8. Разворачивание приложения на сервере (дэвопсы).
  9. Поддержка и доработка.

[Наверх]

Хорошая статья, мне понравилась. Оставлю отзыв!