Разработка программного обеспечения: различия между версиями

Материал из Изи Вики
(Как устроиться на работу)
мНет описания правки
 
(не показано 12 промежуточных версий этого же участника)
Строка 1: Строка 1:
Разработка программного обеспечения — это производство программ для вычислительных устройств как продуктов полностью готовых к использованию. Могут предназначаться для внутреннего использования или для внешнего заказчика, для перепродажи или для бесплатного распространения.
Разработка программного обеспечения — это производство [[Компьютерная программа|программ]] для [[Компьютер|компьютеров]] как продуктов полностью готовых к использованию. Могут предназначаться для внутреннего использования или для внешнего заказчика, для перепродажи или для бесплатного распространения.


== Объясните простыми словами, пожалуйста ==
== Объясните простыми словами, пожалуйста ==
[[Файл:The Caxton Celebration - William Caxton showing specimens of his printing to King Edward IV and his Queen.jpg|мини|200x200пкс|Разработчики выкатывают приложение в продакшн]]
[[Файл:The Caxton Celebration - William Caxton showing specimens of his printing to King Edward IV and his Queen.jpg|мини|200px|Разработчики выкатывают приложение в продакшн]]
Почему программистов называют разработчиками? 🤔
Почему программистов называют разработчиками? 🤔


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


Название для этого '''странного''' процесса искали долго и по всему миру. В итоге нашлось хорошее, изначально французское слово «'''разворот'''», давно позаимствованное в английский и дополненное смыслами. '''Development''' — это рост и развитие, '''раскрытие''' потенциала. В русском языке слово девелопмент уже заняли за собой строители, поэтому довольствуемся скромным «разработка» 🤷
Название для этого '''странного''' процесса искали долго и по всему миру. В итоге нашлось хорошее, изначально французское слово «'''разворот'''», давно позаимствованное в английский и дополненное смыслами. '''Development''' — это рост и развитие, '''раскрытие''' потенциала. В русском языке слово девелопмент уже заняли за собой строители, поэтому довольствуемся скромным «разработка» 🤷
Строка 13: Строка 13:
Что объединяет журналистов и разработчиков программ?
Что объединяет журналистов и разработчиков программ?


* ⚒️ Они должны использовать профессиональные инструменты индивидуальной и командной работы.
*⚒️ Они должны использовать профессиональные инструменты индивидуальной и командной работы.
* 🚯 Они должны соблюдать производственные стандарты.
*🚯 Они должны соблюдать производственные стандарты.
* 👪 Они должны эффективно работать в команде по правилам (методологиям).
*👪 Они должны эффективно работать в команде по правилам (методологиям).
* 📅 Они должны понимать, что делает и зачем. Работать на результат и соблюдать сроки.
*📅 Они должны понимать, что делает и зачем. Работать на результат и соблюдать сроки.
* 💎 Они должны ''писать'' качественно, простым понятным языком.
*💎 Они должны ''писать'' качественно, простым понятным языком.
* 🚑 Они должны помогать коллегам.
*🚑 Они должны помогать коллегам.
* 🫡 Они должны выполнять требования ''редактора'' (руководителя проекта).
*🫡 Они должны выполнять требования ''редактора'' (руководителя проекта).


Разработка '''больших''' и важных приложений требует участия большого количество людей и все они заняты '''не только''' программированием. Менеджеры, дизайнеры, аналитики, тестировщики, системные администраторы и другие специалисты вносят '''огромный''' вклад в конечный результат. К сожалению, про них часто и несправедливо забывают, называя разработчиками только программистов 😞
Разработка '''больших''' и важных приложений требует участия большого количество людей и все они заняты '''не только''' программированием. Менеджеры, дизайнеры, аналитики, тестировщики, системные администраторы и другие специалисты вносят '''огромный''' вклад в конечный результат. К сожалению, про них часто и несправедливо забывают, называя разработчиками только программистов 😒


== А если серьезно ==
Но никто не обижается 😅


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


* Идея — с чего всё начинается. Обычно это предложение по решению конкретной проблемы.
===Из чего состоит разработка ПО ===
* Продуктовый анализ — это проверка идеи на адекватность: анализ конкурентов, опросы пользователей, оценка экономических показателей (затраты, прибыль и т.п.).
* Системный анализ — сбор требований и их документирование в виде технического задания.
* Проектирование — один из важнейших этапов, здесь происходит выбор технологий и инструментов. Прорабатываются модели процессов и модели данных.
* Планирование — оценка трудозатрат и календарных сроков.
* Программирование — написание исходного кода программ на определенных языках программирования.
* Код-ревью (code review) — проверка исходного кода программы другим более опытным разработчиком.
* Тестирование — проверка, что программа удовлетворяет требованиям. В крупных компаниях, тестирование является частью отдельного направления контроля качества (QA)
* Документирование — состоит из документирования исходного кода, документирования API (описания того как программа будет взаимодействовать с другими программами), подготовки документации для пользователей
* Релиз (release) — «запуск в печать». Доставка приложения или результатов его работы конечным пользователям.
* Сопровождение — исправление багов и доработки.


=== Кто участвует в разработке ПО ===
[[Файл:Software development projects, wmcon14 berlin.jpg|мини|200px|Разработчики на совещании]]
 
Программирование — только одна из составляющих частей процесса разработки ПО, наряду со сбором требований, проектированием, тестированием, документированием и сопровождением:
 
*Идея — с чего всё начинается. Обычно это предложение по решению конкретной проблемы.
*Продуктовый анализ — создание концепта: определение характеристик, анализ конкурентов, опросы пользователей.
*Финансовый анализ — оценка экономических показателей: расходов, доходов, период окупаемости, оценка рисков.
*Системный анализ — сбор всех требований и их документирование в виде технического задания.
*Проектирование — создание проекта: проработка дизайна, выбор технологий и инструментов. Для сложных проектов прорабатываются модели процессов и модели данных.
*Планирование — финальная оценка трудозатрат и календарных сроков.
*[[Программирование]] — написание исходного кода программ на определенных языках программирования.
*Код-ревью (code review) — проверка исходного кода программы другим более опытным разработчиком.
*Тестирование — проверка, что программа удовлетворяет требованиям. В крупных компаниях, тестирование является частью отдельного направления контроля качества (QA).
*Документирование — состоит из документирования исходного кода, документирования API (описания того как программа будет взаимодействовать с другими программами), подготовки документации для пользователей.
*Релиз (release) — «запуск в печать». Доставка приложения или результатов его работы конечным пользователям.
*Маркетинговые мероприятия и запуск рекламы.
*Продажи и внедрения.
*Сопровождение — техническая поддержка, обслуживание, исправление багов и доработки.
 
===Кто участвует в разработке ПО===
Набор необходимых специалистов отличается от проекта к проекту. Но можно выделить такие основные направления:
Набор необходимых специалистов отличается от проекта к проекту. Но можно выделить такие основные направления:


* Менеджмент отвечает за организацию процессов
*Менеджеры отвечают за организацию процессов
* Коммерсанты — отвечают за продажи и удержание клиентов
*Коммерсанты — отвечают за продажи и удержание клиентов
* Аналитики — решают сложные проблемы
*Аналитики — решают сложные проблемы
* Разработчики — программируют
*Разработчики — программируют
* Тестировщики — тестируют
* Тестировщики — тестируют
* Сисадмины — обслуживают
*Сисадмины — обслуживают


Пример структуры IT-компании среднего размера:
Пример структуры IT-компании среднего размера:
Строка 59: Строка 67:
**'''Финансовый директор''' (Chief Financial Officer / '''CFO''') — отвечает за то, чтобы у компании не закончились внезапно деньги
**'''Финансовый директор''' (Chief Financial Officer / '''CFO''') — отвечает за то, чтобы у компании не закончились внезапно деньги
**'''Технический директор''' (Chief Technology Officer / '''CTO''') — главный по IT
**'''Технический директор''' (Chief Technology Officer / '''CTO''') — главный по IT
*Отдел развития бизнеса (Business development / '''BD''') — глобальная стратегия и планы развития компании
* Отдел развития бизнеса (Business development / '''BD''') — глобальная стратегия и планы развития компании
**Бизнес-аналитика (Business Intelligence / '''BI''')
**Бизнес-аналитика (Business Intelligence / '''BI''')
***'''Аналитик данных''' (Data Analyst) — извлекает из «бесполезных» данных полезный результат, который используется другими специалистами
***'''Аналитик данных''' (Data Analyst) — извлекает из «бесполезных» данных полезный результат, который используется другими специалистами
**Другие отделы, отвечающие за стратегические партнерства, планирования, анализ процессов внутри компании
**Другие отделы, отвечающие за стратегические партнерства, планирования, анализ процессов внутри компании
***'''Бизнес аналитики, координаторы и прочие менеджеры''' — делают компанию лучше и эффективнее
***'''Бизнес аналитики, координаторы и прочие менеджеры''' — делают компанию лучше и эффективнее
*Коммерческий отдел (Commercial department) или — увеличение доходов, работа с клиентами
*Коммерческий отдел (Commercial department) — увеличение доходов, работа с клиентами
** Обслуживание клиентов (Customer Service) — работа на удержание клиентов
**Обслуживание клиентов (Customer Service) — работа на удержание клиентов
***'''Аккаунт менеджер''' (Account manager) — индивидуальная работа с ключевыми клиентами
***'''Аккаунт менеджер''' (Account manager) — индивидуальная работа с ключевыми клиентами
**Отдел продаж (Sales)— поиск новых клиентов
**Отдел продаж (Sales)— поиск новых клиентов
**Маркетинг (Marketing) — продвижение бренда компании и его IT продуктов
**Маркетинг (Marketing) — продвижение бренда компании и его IT продуктов, реклама
*Продуктовый отдел (Product Management) — рост компании через улучшение выпускаемых IT продуктов и разработку новых
*Продуктовый отдел (Product Management) — рост компании через улучшение выпускаемых IT продуктов и разработку новых
**'''Менеджер продукта''' (Product Manager) — отвечает за работу продуктовой команды и определяет стратегию развития продукта
**'''Менеджер продукта''' (Product Manager) — отвечает за работу продуктовой команды и определяет стратегию развития продукта
Строка 77: Строка 85:
**'''Менеджер проекта''' (Project Manager / '''PM''') — собирает команду для проекта и отвечает за его выполнение
**'''Менеджер проекта''' (Project Manager / '''PM''') — собирает команду для проекта и отвечает за его выполнение
*Отдел разработки (Development) — отдел, где и работают разработчики (программисты)  
*Отдел разработки (Development) — отдел, где и работают разработчики (программисты)  
**'''Руководитель отдела разработки''' (Development Director) — начальник всех разработчиков
**'''Главный разработчик''' (Principal Developer) — начальник всех разработчиков
**'''Системный архитектор''' (System Architect) — отвечает за базовую архитектуру программного обеспечения
**'''Системный архитектор''' (System Architect) — отвечает за базовую архитектуру программного обеспечения
**'''Тимлид''' (Development Team Lead) — руководит командой разработчиков
**'''Тимлид''' (Development Team Lead) — руководит командой разработчиков, проверяет результат работы (проводит ревью кода)
**'''Разработчик''' (Developer) — тот кто непосредственно программирует
**'''Старший Разработчик''' (Senior Developer / Software engineer) — программирует сложные штуки, обучает новичков
**'''Разработчик''' (Developer /  Programmer) — программирует больше всех, решает основные задачи
**'''Младший Разработчик''' (Junior Developer /  Coder) — обучается и решает простые задачи
*Обеспечение качества (Quality Assurance / '''QA''')
*Обеспечение качества (Quality Assurance / '''QA''')
**'''Инженер по качеству''' (QA Engineer) — отвечает за качество в целом
**'''Инженер по качеству''' (QA Engineer) — отвечает за качество в целом
Строка 88: Строка 98:
**'''Тестер по информационной безопасности''' (Security Tester) — тестирует приложения на проблемы по ИБ
**'''Тестер по информационной безопасности''' (Security Tester) — тестирует приложения на проблемы по ИБ
*DevOps — связующее звено между разработкой (Dev) и обслуживанием (Ops)
*DevOps — связующее звено между разработкой (Dev) и обслуживанием (Ops)
** '''Инженер по инфраструктуре''' (Infrastructure Engineer) — из набора серверов, сетей и сервисов проектирует единую надежную систему
**'''Инженер по инфраструктуре''' (Infrastructure Engineer) — из набора серверов, сетей и сервисов проектирует единую надежную систему
**'''Инженер по надежности''' (Site Reliability Engineer / '''SRE''') — отвечает за масштабируемость и высокую производительность приложений
**'''Инженер по надежности''' (Site Reliability Engineer / '''SRE''') — отвечает за масштабируемость и высокую производительность приложений
** '''Девопс инженер''' (DevOps Engineer) — отвечает за автоматизацию процессов сборки и доставки приложений на сервера
**'''Девопс инженер''' (DevOps Engineer) — отвечает за автоматизацию процессов сборки и доставки приложений на сервера
**'''Инженер по конфигурации''' (Configuration Management Engineer) — работает с ПО для управления параметрами приложений
**'''Инженер по конфигурации''' (Configuration Management Engineer) — работает с ПО для управления параметрами приложений
**'''Релиз инженер''' (Release Engineer) — непосредственно запускает приложения в продакшн
**'''Релиз инженер''' (Release Engineer) — непосредственно запускает приложения в продакшн
Строка 98: Строка 108:
**'''Менеджер внедрений''' (Implementation Manager) — отвечает за поставку продукта новым клиентам, первичную настройку и поддержку, обучение клиента
**'''Менеджер внедрений''' (Implementation Manager) — отвечает за поставку продукта новым клиентам, первичную настройку и поддержку, обучение клиента
**'''Специалист службы поддержки''' (Help Desk / Support Technician) — обработка входящих обращений от пользователей и решение простых проблем.
**'''Специалист службы поддержки''' (Help Desk / Support Technician) — обработка входящих обращений от пользователей и решение простых проблем.
** '''Технический аналитик''' (Technical Analyst) — решает сложные технические и технологические проблемы
**'''Технический аналитик''' (Technical Analyst) — решает сложные технические и технологические проблемы
**Системное администрирование
**Системное администрирование
***'''Системный администратор''' (System Administrator) — установка, настройка и обслуживание ПО.
***'''Системный администратор''' (System Administrator) — установка, настройка и обслуживание ПО.
Строка 105: Строка 115:
***'''BC/DR Специалист''' (Disaster Recovery / Business Continuity Specialist) — готовит планы аварийного восстановления и отвечает за бэкапы (резервные копии).
***'''BC/DR Специалист''' (Disaster Recovery / Business Continuity Specialist) — готовит планы аварийного восстановления и отвечает за бэкапы (резервные копии).
*Информационная безопасность (InfoSec) — защита от взломов и утечек данных
*Информационная безопасность (InfoSec) — защита от взломов и утечек данных
** '''Директор по ИБ''' (Chief Information Security Officer / '''CISO''') — руководитель направления.
**'''Директор по ИБ''' (Chief Information Security Officer / '''CISO''') — руководитель направления.
**'''Архитектор ИБ''' (Security Architect) — отвечает за стратегию, политики, процедуры.
**'''Архитектор ИБ''' (Security Architect) — отвечает за стратегию, политики, процедуры.
**'''Инженер ИБ''' (Security Engineer) — отвечает за внедрение инструментов обеспечения ИБ (сетевые экраны, антивирусы, системы обнаружения вторжений, системы шифрования данных)
**'''Инженер ИБ''' (Security Engineer) — отвечает за внедрение инструментов обеспечения ИБ (сетевые экраны, антивирусы, системы обнаружения вторжений, системы шифрования данных)
Строка 118: Строка 128:
Рекомендации:  
Рекомендации:  


# Определите интересные для вас предметные области: например финансы, туризм, компьютерные игры.
#Определите интересные для вас предметные области, например: финансы, туризм, компьютерные игры.
# Определите интересные и подходящие для вас направления работы: программирование, тестирование, аналитика, менеджмент и т.п.
#Определите интересные и подходящие для вас направления работы: программирование, тестирование, аналитика, менеджмент и т.п.
# Найдите вакансии IT компаний, которые соответствуют вашим навыкам, интересам и опыту, изучите требования.
#Найдите вакансии IT компаний, которые соответствуют вашим навыкам, интересам и опыту, изучите требования.
# Пройдите базовое или дополнительное обучение по выбранному направлению, самостоятельно или с помощью курсов.
#Пройдите базовое или дополнительное обучение по выбранному направлению, самостоятельно или с помощью курсов.
# Налаживайте полезные связи — общайтесь на форумах и чатах. Посещайте тематические мероприятия.
#Налаживайте полезные связи — общайтесь на форумах и чатах. Посещайте тематические мероприятия.
# Обновите свое резюме, чтобы оно соответствовало требованиям интересующих вас IT-компаний, укажите свой опыт и навыки.
#Обновите свое резюме, чтобы оно соответствовало требованиям интересующих вас IT-компаний, укажите свой опыт и навыки.
# Разместите свое резюме на сайтах поисков работы и откликайтесь на вакансии. Обязательно заполняйте к отклику сопроводительное письмо.
#Разместите свое резюме на сайтах поисков работы и откликайтесь на вакансии. Обязательно заполняйте к отклику сопроводительное письмо.
# Подготовьтесь к собеседованию: изучите информацию о компании, попрактикуйтесь в ответах на общие вопросы, будьте готовы ответить на технические вопросы.
#Подготовьтесь к собеседованию: изучите информацию о компании, попрактикуйтесь в ответах на общие вопросы, будьте готовы ответить на технические вопросы.
# Пройдите собеседование и получите предложение о трудоустройстве.
#Пройдите собеседование и получите предложение о трудоустройстве.
# Продолжайте обучаться для дальнейшего карьерного роста.
#Продолжайте обучаться для дальнейшего карьерного роста.
 
[[Категория:Информационные технологии]]
===Что вас ожидает дальше===
Если вы стали разработчиком, вам придется продолжать всё время учиться для профессионального роста. 
{| class="wikitable"
|+Профессиональные уровни разработчиков (грейды)
!Название
!Стажер
!Junior
!Middle
!Senior
|-
|Высшее IT образование
|Не требуется
|Не требуется
|Желательно
|Очень желательно
|-
|Как оценивает свои знания и навыки
|Недооценивает
|Часто переоценивает себя
|Оценивает себя правильно
|Недооценивает себя
|-
|Опыт работы разработчиком
|Нет
|От 0 до 2х лет
|Обычно больше 2х лет
|Обычно больше 5 лет
|-
|Самообучение
|Учится постоянно
|Учится постоянно
|Учится постоянно
|Учится постоянно
|-
|Учит других
|Нет
|Обычно нет
|Учит стажеров и младших разработчиков
|Учит всех
|-
|Ключевой софт-скилл
|Обучаемость и инициативность
|Работа в команде
|Работа на результат
|Ответственность
|-
|Выполненные проекты
|Небольшие учебные проекты
|Небольшие проекты для себя
|Небольшие бизнес проекты
|Есть опыт запуска крупных проектов
|-
|Участие в Open Source
|Активное (имитация)
|Нет времени
|Нет времени
|Нет времени, но надо
|-
|Системный анализ (сбор требований)
|Что это?
|Нет
|Обучение
|Может принимать участие
|-
|Участие в проектировании
|Что это?
|Нет
|Обучение
|Активная работа
|-
|Сколько языков программирования знает
|0
|Один, но в резюме указывает больше
|Обычно один хорошо и несколько хуже. Честно об этом говорит.
|Понимает, что знает мало языков программирования.
|-
|Знание языков программирования
|Обучение
|Знает и умеет писать код самостоятельно
|Знает особенности и подводные камни
|Следит за развитием языков программирования
|-
|Программирование
|Учебные задачи
|Простые бизнес задачи
|Все задачи
|Может решать сложные задачи оптимальным способом
|-
|Качество
|Нет
|Много багов
|Мало багов
|Мало багов
|-
|Фреймворки
|Обучение
|Знает в теории
|Активно использует
|Экспертный уровень
|-
|Шаблоны проектирования
|Не понимает
|Знает теорию
|Умеет применять
|Активно применяет
|-
|Парадигмы программирования
|Что это?
| Нет
|Обучение
|Знает и понимает
|-
|Методологии разработки
|Что это?
|Обучение
|Соблюдает
|Внедряет
|-
|Автотесты
|Что это?
|Обучение
|Умеет писать
|Понимает почему надо писать
|-
|Код-ревью
|Что это?
|Нет
|Да, но немного
|Перепроверяет чужого кода больше, чем пишет сам
|-
|Документирование кода
|Нет
|Да
|Да
| Да
|-
|Поддержка выпущенных продуктов
|Нет
|Простые багфиксы и доработки
|Сложные багфиксы и доработки
|Задачи по оптимизации, устранение технического долга
|-
|Отношение к информационной безопасности
| Нет
|Зачем это всё?
|Обучение на ошибках
|Считает очень важным
|-
|Отношение с проектными менеджерами
|Кто это?
|Обычно негативное
|Нейтральное
|Командная работа
|}
[[Категория:Незавершённые статьи]]

Текущая версия от 14:40, 11 февраля 2023

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

Объясните простыми словами, пожалуйста[править | править код]

Разработчики выкатывают приложение в продакшн

Почему программистов называют разработчиками? 🤔

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

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

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

Что объединяет журналистов и разработчиков программ?

  • ⚒️ Они должны использовать профессиональные инструменты индивидуальной и командной работы.
  • 🚯 Они должны соблюдать производственные стандарты.
  • 👪 Они должны эффективно работать в команде по правилам (методологиям).
  • 📅 Они должны понимать, что делает и зачем. Работать на результат и соблюдать сроки.
  • 💎 Они должны писать качественно, простым понятным языком.
  • 🚑 Они должны помогать коллегам.
  • 🫡 Они должны выполнять требования редактора (руководителя проекта).

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

Но никто не обижается 😅

А если серьезно[править | править код]

Из чего состоит разработка ПО[править | править код]

Разработчики на совещании

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

  • Идея — с чего всё начинается. Обычно это предложение по решению конкретной проблемы.
  • Продуктовый анализ — создание концепта: определение характеристик, анализ конкурентов, опросы пользователей.
  • Финансовый анализ — оценка экономических показателей: расходов, доходов, период окупаемости, оценка рисков.
  • Системный анализ — сбор всех требований и их документирование в виде технического задания.
  • Проектирование — создание проекта: проработка дизайна, выбор технологий и инструментов. Для сложных проектов прорабатываются модели процессов и модели данных.
  • Планирование — финальная оценка трудозатрат и календарных сроков.
  • Программирование — написание исходного кода программ на определенных языках программирования.
  • Код-ревью (code review) — проверка исходного кода программы другим более опытным разработчиком.
  • Тестирование — проверка, что программа удовлетворяет требованиям. В крупных компаниях, тестирование является частью отдельного направления контроля качества (QA).
  • Документирование — состоит из документирования исходного кода, документирования API (описания того как программа будет взаимодействовать с другими программами), подготовки документации для пользователей.
  • Релиз (release) — «запуск в печать». Доставка приложения или результатов его работы конечным пользователям.
  • Маркетинговые мероприятия и запуск рекламы.
  • Продажи и внедрения.
  • Сопровождение — техническая поддержка, обслуживание, исправление багов и доработки.

Кто участвует в разработке ПО[править | править код]

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

  • Менеджеры — отвечают за организацию процессов
  • Коммерсанты — отвечают за продажи и удержание клиентов
  • Аналитики — решают сложные проблемы
  • Разработчики — программируют
  • Тестировщики — тестируют
  • Сисадмины — обслуживают

Пример структуры IT-компании среднего размера:

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

  • Ключевые директора (Executive team)
    • Генеральный директор (Chief Executive Officer / CEO) — главный босс
    • Операционный директор (Chief Operating Officer / COO) — налаживает взаимодействие между отделами
    • Финансовый директор (Chief Financial Officer / CFO) — отвечает за то, чтобы у компании не закончились внезапно деньги
    • Технический директор (Chief Technology Officer / CTO) — главный по IT
  • Отдел развития бизнеса (Business development / BD) — глобальная стратегия и планы развития компании
    • Бизнес-аналитика (Business Intelligence / BI)
      • Аналитик данных (Data Analyst) — извлекает из «бесполезных» данных полезный результат, который используется другими специалистами
    • Другие отделы, отвечающие за стратегические партнерства, планирования, анализ процессов внутри компании
      • Бизнес аналитики, координаторы и прочие менеджеры — делают компанию лучше и эффективнее
  • Коммерческий отдел (Commercial department) — увеличение доходов, работа с клиентами
    • Обслуживание клиентов (Customer Service) — работа на удержание клиентов
      • Аккаунт менеджер (Account manager) — индивидуальная работа с ключевыми клиентами
    • Отдел продаж (Sales)— поиск новых клиентов
    • Маркетинг (Marketing) — продвижение бренда компании и его IT продуктов, реклама
  • Продуктовый отдел (Product Management) — рост компании через улучшение выпускаемых IT продуктов и разработку новых
    • Менеджер продукта (Product Manager) — отвечает за работу продуктовой команды и определяет стратегию развития продукта
    • Продуктовый аналитик (Product Analyst / PA) — думает, как сделать хорошо пользователям продукта
    • Системный аналитик (Systems Analyst) — формализует требования, пишет технические задания.
    • UI / UX Дизайнер (User Interface / User Experience Designer) — создает визуальные прототипы продукта и сценарии взаимодействия
    • Владелец продукта (Product owner / PO) — собирает итоговые задачи и приоритеты, делит их на проекты, передает их в работу в рамках методологии Agile
    • Менеджер проекта (Project Manager / PM) — собирает команду для проекта и отвечает за его выполнение
  • Отдел разработки (Development) — отдел, где и работают разработчики (программисты)
    • Главный разработчик (Principal Developer) — начальник всех разработчиков
    • Системный архитектор (System Architect) — отвечает за базовую архитектуру программного обеспечения
    • Тимлид (Development Team Lead) — руководит командой разработчиков, проверяет результат работы (проводит ревью кода)
    • Старший Разработчик (Senior Developer / Software engineer) — программирует сложные штуки, обучает новичков
    • Разработчик (Developer / Programmer) — программирует больше всех, решает основные задачи
    • Младший Разработчик (Junior Developer / Coder) — обучается и решает простые задачи
  • Обеспечение качества (Quality Assurance / QA)
    • Инженер по качеству (QA Engineer) — отвечает за качество в целом
    • Тестировщик (Tester) — проверяет наличие багов
    • Инженер по автоматизации (Automation Engineer) — создает автотесты
    • Тестер по производительности (Performance Tester) — проверяет, как хорошо приложения держат нагрузку
    • Тестер по информационной безопасности (Security Tester) — тестирует приложения на проблемы по ИБ
  • DevOps — связующее звено между разработкой (Dev) и обслуживанием (Ops)
    • Инженер по инфраструктуре (Infrastructure Engineer) — из набора серверов, сетей и сервисов проектирует единую надежную систему
    • Инженер по надежности (Site Reliability Engineer / SRE) — отвечает за масштабируемость и высокую производительность приложений
    • Девопс инженер (DevOps Engineer) — отвечает за автоматизацию процессов сборки и доставки приложений на сервера
    • Инженер по конфигурации (Configuration Management Engineer) — работает с ПО для управления параметрами приложений
    • Релиз инженер (Release Engineer) — непосредственно запускает приложения в продакшн
    • Инженер по мониторингу и логам (Monitoring and Logging Engineer) — работает с ПО для отслеживания показателей работы приложений
  • Эксплуатация (IT Operations) — обслуживание IT продукта, инфраструктуры и поддержка пользователей
    • Руководитель эксплуатации (IT Operations Manager) — руководитель направления.
    • Менеджер внедрений (Implementation Manager) — отвечает за поставку продукта новым клиентам, первичную настройку и поддержку, обучение клиента
    • Специалист службы поддержки (Help Desk / Support Technician) — обработка входящих обращений от пользователей и решение простых проблем.
    • Технический аналитик (Technical Analyst) — решает сложные технические и технологические проблемы
    • Системное администрирование
      • Системный администратор (System Administrator) — установка, настройка и обслуживание ПО.
      • Сетевой администратор (Network Administrator) — отвечает за сетевую инфраструктуру.
      • Администратор баз данных (Database Administrator / DBA) — отвечает за работу баз данных.
      • BC/DR Специалист (Disaster Recovery / Business Continuity Specialist) — готовит планы аварийного восстановления и отвечает за бэкапы (резервные копии).
  • Информационная безопасность (InfoSec) — защита от взломов и утечек данных
    • Директор по ИБ (Chief Information Security Officer / CISO) — руководитель направления.
    • Архитектор ИБ (Security Architect) — отвечает за стратегию, политики, процедуры.
    • Инженер ИБ (Security Engineer) — отвечает за внедрение инструментов обеспечения ИБ (сетевые экраны, антивирусы, системы обнаружения вторжений, системы шифрования данных)
    • Аналитик ИБ (Security Analyst) — следит за ситуаций, документирует и разбирает инциденты
    • Пентестер (Penetration Tester) — пытается всё сломать, чтобы проверить надежность
    • Комплаенс офицер (Compliance Officer) — контролирует выполнение международных стандартов по ИБ (GDPR, PCI DSS, ISO 27001)
    • Тренер по ИБ (Security Educator) — обучает всех в компании, как не косячить по ИБ
  • Финансовый отдел (Finance) — бухгалтеры, финансовые аналитики
  • Юридический отдел (Legal department) — юристы
  • Управление персоналом (Human Resources / HR) — найм сотрудников и удержание уже нанятых

Как устроиться на работу в IT компанию[править | править код]

Рекомендации:

  1. Определите интересные для вас предметные области, например: финансы, туризм, компьютерные игры.
  2. Определите интересные и подходящие для вас направления работы: программирование, тестирование, аналитика, менеджмент и т.п.
  3. Найдите вакансии IT компаний, которые соответствуют вашим навыкам, интересам и опыту, изучите требования.
  4. Пройдите базовое или дополнительное обучение по выбранному направлению, самостоятельно или с помощью курсов.
  5. Налаживайте полезные связи — общайтесь на форумах и чатах. Посещайте тематические мероприятия.
  6. Обновите свое резюме, чтобы оно соответствовало требованиям интересующих вас IT-компаний, укажите свой опыт и навыки.
  7. Разместите свое резюме на сайтах поисков работы и откликайтесь на вакансии. Обязательно заполняйте к отклику сопроводительное письмо.
  8. Подготовьтесь к собеседованию: изучите информацию о компании, попрактикуйтесь в ответах на общие вопросы, будьте готовы ответить на технические вопросы.
  9. Пройдите собеседование и получите предложение о трудоустройстве.
  10. Продолжайте обучаться для дальнейшего карьерного роста.