Кодовый отряд: история успеха команды программистов

Разработчики игр и ПО
Contents
  1. Состав прикладного программного обеспечения. Тема: Работа с программным обеспечением
  2. Языки в Web
  3. Backend
  4. Frontend
  5. Что выбрать? Критерии
  6. Область, к которой лежит душа
  7. Требуемая квалификация
  8. Количество вакансий
  9. Типы ИТ-команд
  10. Основные принципы организации работы в Dev team
  11. Коммуникация и сотрудничество
  12. Использование методологий разработки
  13. Распределение обязанностей
  14. Совместная работа над кодом
  15. Тестирование и отладка
  16. Стремление к самоусовершенствованию
  17. Проблема и урок
  18. Анализ рынка: целевая аудитория, конкуренция
  19. Переход к командам по функциям
  20. Финансовые показатели проекта
  21. Кто входит в состав development team
  22. Состав основной команды веб-разработки
  23. Бизнес-аналитик
  24. UI/UX дизайнер
  25. Frontend-разработчик веб-сайтов
  26. Бэкенд-разработчик веб-сайтов
  27. Руководитель проекта
  28. инженер по контролю качества
  29. Структура команды: по функциям
  30. Делегируем задачи, контролируем их выполнение
  31. Что делает scrum-мастер
  32. Классификация ПО
  33. Серверное ПО
  34. Прикладное ПО
  35. Системное ПО
  36. Инструментарий
  37. Десктоп (Desktop)

Состав прикладного программного обеспечения. Тема: Работа с программным обеспечением

Лабораторная работа №2

Тема: Работа с программным обеспечением

Цель работы:овладеть методами работы с программным обеспечением.

Оборудование, приборы, аппаратура, материалы: персональный компьютер с выходом в Интернет.

Теоретические сведения к лабораторной работе

Программное обеспечение компьютера

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

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

Вся совокупность программ, хранящихся на всех устройствах долговременной памяти компьютера, составляет его программное обеспечение (ПО).

Программное обеспечение компьютера постоянно пополняется, развивается, совершенствуется. Стоимость установленных программ на современном ПК зачастую превышает стоимость его технических устройств. Разработка современного ПО требует очень высокой квалификации от программистов.

Типы программного обеспечения

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

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

Языки в Web

Веб делится на 2 подраздела: бэкенд и фронтенд. Любое веб-приложение в конечном итоге имеет ту часть, которая взаимодействует с пользователем, и почти всегда это тонкий клиент — браузер, в котором крутятся приложения. Если раньше это был просто HTML, и вся логика происходила на сервере, то сейчас логики в браузере становится все больше и больше, и он становится по-настоящему “толстым” и “тяжелым”.

Backend

  • PHP, Ruby, Python, JavaScript (Node), Perl
  • Go, C#, Elixir, Rust, Java, Clojure, Kotlin, Scala

Утяжеление тонких клиентов не отменяет того, что на бэкенде все равно должны храниться данные и выполняться определенная логика. Для бэкенда в вебе существует огромное количество языков. Теоретически, можно использовать вообще любой, но на практике используются чаще всего именно те, который указаны выше. Java, Clojure, Kotlin, Scala, Groovy — это всё языки, построенные вокруг JVM, платформы, которая позволяет использовать их все вместе сразу, по очереди и как-то соединять между собой, поэтому можно сказать, что это одно семейство. Язык Go появился недавно, но очень быстро занял определенную нишу, и используется всё чаще. И, конечно же, самый популярный язык веба — это PHP, который является лидером, несмотря на все свои недостатки, и на нём сделано очень много сайтов, и с каждым днём их число лишь растёт.

Frontend

JavaScript

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

Что выбрать? Критерии

Итак, что же выбрать и по каким критериям ориентироваться? Этими вопросами часто задаются люди, которые хотят заниматься программированием.

Область, к которой лежит душа

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

Требуемая квалификация

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

Количество вакансий

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

Мы перечислили основные критерии, которые помогут выбрать направление в профессии

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

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

Типы ИТ-команд

Современные подходы к организации работы в компаниях и управлению персоналом во многом меняют структуру ИТ-команд и распределение в них ролей. Но основные их функции остаются неизменными. Вот краткий обзор наиболее часто встречающихся подразделений: 

  • Команда ИТ-архитекторов отвечает за выбор и оптимизацию технологий и методологий, которые используются в компании для решения тех или иных задач. 
  • Администраторы обеспечивают бесперебойную работу всех информационных систем и сетей в организации. 
  • Как следует из названия, команда разработчиков сосредоточена на разработке приложений. Как правило такие команды не постоянные. Они формируются на время реализации определённого проекта. 
  • Основная задача QA-команды — обеспечить максимально возможное качество разрабатываемого продукта.
  • Подразделение технической поддержки оказывает помощь пользователям, когда у них возникают вопросы по работе с программным обеспечением или устройствами, и поддерживают бесперебойную работу всех отделов компании.  
  • Команды специалистов по кибербезопасности обеспечивают защиту сетей, систем и данных в компании. Они разрабатывают процедуры, которые должны предотвратить любые вторжения или утечки, а также реагируют по происходящие инциденты. 

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

Надеемся, что теперь структура типичных ИТ-команд стала более понятной. Но из каких же специалистов они формируются?

Основные принципы организации работы в Dev team

Dev team (Development Team) — это группа разработчиков, которая занимается созданием программного обеспечения. Для удобной и эффективной работы Dev team должна придерживаться нескольких основных принципов.

Коммуникация и сотрудничество

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

Использование методологий разработки

Работа в Dev team часто основывается на использовании различных методологий разработки, таких как Agile или Scrum. Эти методологии предлагают определенные принципы и инструменты для организации работы в команде, разделения задач на итерации и планирования процесса разработки. Использование таких методологий позволяет повысить эффективность работы команды и уменьшить время, затрачиваемое на достижение целей проекта.

Распределение обязанностей

В Dev team каждому разработчику присваиваются определенные обязанности и задачи. Распределение обязанностей позволяет более эффективно использовать ресурсы команды и повышать производительность. Каждый член команды должен быть ответственным за свою работу и выполнять ее в срок.

Совместная работа над кодом

Важным аспектом работы в Dev team является совместная работа над кодом. Разработчики должны быть способными читать и понимать чужой код, а также работать над ним вместе с другими членами команды. Для этого часто используются системы контроля версий, которые позволяют отслеживать изменения в коде и объединять различные изменения, вносимые каждым разработчиком.

Тестирование и отладка

Dev team не только отвечает за создание программного обеспечения, но и за его тестирование и отладку. Члены команды должны активно тестировать код и выявлять ошибки, а также устранять их. Проведение тестирования и отладки позволяет создавать более качественное программное обеспечение и улучшать его работоспособность.

Стремление к самоусовершенствованию

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

Проблема и урок

Мы только выпустили новую функцию фильтрации по тегам. Поддержка получала жалобы о том, что функция не работает. Первым делом я попытался загрузить картинку и отметить её как “Не хот-дог”. Потом я попробовал отфильтровать картинки по этому тегу и убедился, что фильтрация не работает. Я составил список команд, которые участвовали в создании функции. Каждая команда была ответственна за свой компонент:

  1. Загрузка и обработка изображений.
  2. Elasticsearch.
  3. Фронтенд фотоальбома.
  4. Команда DevOps, ответственная за инфраструктуру и развертывание новых функций в облаке.

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

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

Я устал ходить от одной команды к другой и сказал им, чтобы они сразу исправили эту проблему. Наконец проблема была решена. Я понял, что командам не хватало ответственности за то, что они создавали. Команды были разбиты по компонентам, и никто из них не чувствовал ответственности за функции — каждый работал только над маленьким кусочком пазла. Разбитие команд по компонентам сделала быстрый выпуск новых функций сложным. Все их усилия были тесно связаны. Если одна из четырех команд не работала или задерживалась, это влияло на выпуск всего функционала.

Анализ рынка: целевая аудитория, конкуренция

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

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

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

Переход к командам по функциям

Многие команды начинают с команд по компонентам, потому что структура продукта неясна в начале существования проекта. Но в какой-то точке команды по компонентам могут начать вас тормозить. Вот симптомы, которые подскажут вам, что ваша структура вас замедляет:

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

Если это происходит, структура команды подлежит изменению. Вам стоит рассмотреть переход на команды по функциям. Такая работа имеет свои сложности: вам нужно будет придумать лучшее распределение компонентов между командами и подстроить свою архитектуру, чтобы разъединить как можно больше компонентов. Переход к командам по функциям — это самая сложная часть работы с подобной структурой. Как структурировать команды? Как передавать знания? Как убедиться, что организация разрешит вам изменить структуру? Этому будет посвящена уже другая статья.

Если вы нашли опечатку – выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать [email protected].

Финансовые показатели проекта

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

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

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

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

Кто входит в состав development team

Команда разработки – это не только непосредственно разработчики. В эту самую многочисленную часть scrum-команды входят тестировщики и DevOps, и UA/UX-дизайнеры, и другие специалисты, которые обеспечивают создание инкремента продукта. Все зависит от того, как организована работа над конкретным проектом.

Команда разработки является ключевой рабочей единицей. Глава Amazon Джефф Безос сформулировал «правило двух пицц» для размера scrum-команды – от 4 до 10 человек, то есть то количество людей, которых можно накормить двумя пиццами. Размер и состав scrum-команды на протяжении спринта не меняется.

Состав основной команды веб-разработки

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

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

Бизнес-аналитик

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

UI/UX дизайнер

Создает UX и UI дизайн сайта. Именно такие специалисты определяют будущий внешний вид интерфейса вашего сайта и его визуальную концепцию.

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

Frontend-разработчик веб-сайтов

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

Бэкенд-разработчик веб-сайтов

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

Руководитель проекта

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

Задачи руководителя проекта следующие:

  • Решение организационных и административных задач
  • Контроль сроков, соблюдение сроков
  • Отслеживание этапов и хода проекта
  • Контроль соблюдения требований технического задания

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

инженер по контролю качества

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

Структура команды: по функциям

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

Делегируем задачи, контролируем их выполнение

Делегирование — задача тимлида, который соотносит сложность задачи с уровнем специалистов. Он не отдаст младшему специалисту задачи, которые ему «не по зубам», или обеспечит поддержку, которая позволит ему выполнить задачи правильно.

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

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

Контролируйте сроки — например, можно проводить ежедневные или еженедельные встречи с командой. Это поможет держать руку на пульсе, следить за этапами реализации проекта и вовремя решать возникающие сложности.

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

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

Что делает scrum-мастер

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

Самое важное в этой истории: scrum-мастер – не начальник. Это не управленец и не «боевая единица», которая действует с позиции строгости, ограничений и наказаний

Основная задача scrum-мастера – разобраться, что блокирует выполнение задач, устранить эти преграды. Scrum выявляет проблемы и обеспечивает их открытое обсуждение. Такой подход порождает доверие внутри команды, а благоприятная атмосфера позитивно влияет на качество и скорость работы.

Каждое утро scrum-мастер проводит  Daily Scrum Meeting – встречу, на которой члены  команды разработки рассказывают о прогрессе за предыдущий день, о том, что их блокирует и чем они будут заниматься в течение наступившего дня. Кроме того, scrum-мастер следит за процессом разработки и сменой статусов задач в спринте, организует планирование и ретроспективу (разбор прогресса команды и помощь ей стать лучше).

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

Scrum-мастер в команде всегда один. Обычно его выбирает команда.

Классификация ПО

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

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

  • Web-программирование
  • Мобильная разработка
  • Десктоп
  • Серверное ПО

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

Это лишь отвлеченный пример, связанный с трендами современности: всё уходит в веб и мобильные устройства, но в целом он прекрасно иллюстрирует взаимосвязь платформ и специализированных отраслей разработки, показывая важность первых при выборе направления своей деятельности

Серверное ПО

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

Прикладное ПО

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

Системное ПО

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

Инструментарий

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

Десктоп (Desktop)

Теряющее популярность, но все еще очень активное направление — это десктоп. Это так называемые “толстые клиенты”, когда программа запускается локально, чаще всего без подключения к интернету.

В этом направлении всегда были популярны такие языки, как С++, Java и C#, но на пятки признанным авторитетам наступают те языки, которые еще не так давно никто не планировал использовать для написания толстых клиентов.

Но современный мир диктует свои правила, и универсальным языком, который все глубже проникает абсолютно во все направления разработки и на котором появляется всё больше приложений, стал JavaScript. Даже представители компании Microsoft заявили, что в будущих операционных системах Windows все приложения будут использовать HTML и JavaScript. И действительно: на JavaScript уже пишут серьёзные толстые клиенты и приложения на десктопе. Яркий тому пример — VSCode, очень популярный редактор, который будет использоваться во многих наших уроках и который мы рекомендуем поставить. Этот редактор выпущен Microsoft и основан на Electron, который использует JavaScript, что позволяет строить кросс-платформенные приложения: то есть такие, которые пишутся один раз, но работают на всех платформах.

Rate article