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

Как устроиться на работу
(Доработанная версия)
(Как устроиться на работу)
Строка 50: Строка 50:
* Сисадмины — обслуживают
* Сисадмины — обслуживают


<div class="mw-collapsible mw-collapsed">
Пример структуры IT-компании среднего размера:
Пример структуры IT-компании среднего размера:
<div class="mw-collapsible-content">


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


* Ключевые директора (Executive team)
*Ключевые директора (Executive team)
** '''Генеральный директор''' (Chief Executive Officer / CEO) — главный босс
**'''Генеральный директор''' (Chief Executive Officer / '''CEO''') — главный босс
** '''Операционный директор''' (Chief Operating Officer / COO) — налаживает взаимодействие между отделами
**'''Операционный директор''' (Chief Operating Officer / '''COO''') — налаживает взаимодействие между отделами
** '''Финансовый директор''' (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) — индивидуальная работа с ключевыми клиентами
** Отдел продаж — поиск новых клиентов
**Отдел продаж (Sales)— поиск новых клиентов
** Маркетинг — продвижение бренда компании и его IT продуктов
**Маркетинг (Marketing) — продвижение бренда компании и его IT продуктов
* Продуктовый отдел (Product Management) — рост компании через улучшение выпускаемых IT продуктов и разработку новых
*Продуктовый отдел (Product Management) — рост компании через улучшение выпускаемых IT продуктов и разработку новых
** '''Менеджер продукта''' (Product Manager) — отвечает за работу продуктовой команды и определяет стратегию развития продукта
**'''Менеджер продукта''' (Product Manager) — отвечает за работу продуктовой команды и определяет стратегию развития продукта
** '''Продуктовый аналитик''' (Product Analyst / PA) — думает, как сделать хорошо пользователям продукта
**'''Продуктовый аналитик''' (Product Analyst / '''PA''') — думает, как сделать хорошо пользователям продукта
** '''Системный аналитик''' (Systems Analyst) — формализует требования, пишет технические задания.
**'''Системный аналитик''' (Systems Analyst) — формализует требования, пишет технические задания.
** '''UI / UX Дизайнер''' — создает визуальные прототипы продукта и сценарии взаимодействия
**'''UI / UX Дизайнер''' (User Interface / User Experience Designer) — создает визуальные прототипы продукта и сценарии взаимодействия
** '''Владелец продукта''' (Product owner) — собирает итоговые задачи и приоритеты, делит их на проекты, передает их в работу в рамках методологии Agile
**'''Владелец продукта''' (Product owner / '''PO''') — собирает итоговые задачи и приоритеты, делит их на проекты, передает их в работу в рамках методологии Agile
** '''Менеджер проекта''' (Project Manager / PM) — собирает команду для проекта и отвечает за его выполнение
**'''Менеджер проекта''' (Project Manager / '''PM''') — собирает команду для проекта и отвечает за его выполнение
* Отдел разработки (Development) — отдел, где и работают разработчики (программисты)  
*Отдел разработки (Development) — отдел, где и работают разработчики (программисты)  
** '''Руководитель отдела разработки''' (Development Director) — начальник всех разработчиков
**'''Руководитель отдела разработки''' (Development Director) — начальник всех разработчиков
** '''Системный архитектор''' (System Architect) — отвечает за базовую архитектуру программного обеспечения
**'''Системный архитектор''' (System Architect) — отвечает за базовую архитектуру программного обеспечения
** '''Тимлид''' (Development Team Lead) — руководит командой разработчиков
**'''Тимлид''' (Development Team Lead) — руководит командой разработчиков
** '''Разработчик''' (Developer) — тот кто непосредственно программирует
**'''Разработчик''' (Developer) — тот кто непосредственно программирует
* Обеспечение качества (Quality Assurance / QA)
*Обеспечение качества (Quality Assurance / '''QA''')
** '''Инженер по качеству''' (QA Engineer) — отвечает за качество в целом
**'''Инженер по качеству''' (QA Engineer) — отвечает за качество в целом
** '''Тестировщик''' (Tester) — проверяет наличие багов
**'''Тестировщик''' (Tester) — проверяет наличие багов
** '''Инженер по автоматизации''' (Automation Engineer) — создает автотесты
**'''Инженер по автоматизации''' (Automation Engineer) — создает автотесты
** '''Тестер по производительности''' (Performance Tester) — проверяет, как хорошо приложения держат нагрузку
**'''Тестер по производительности''' (Performance Tester) — проверяет, как хорошо приложения держат нагрузку
** '''Тестер по информационной безопасности''' (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) — непосредственно запускает приложения в продакшн
** '''Инженер по мониторингу и логам''' (Monitoring and Logging Engineer) — работает с ПО для отслеживания показателей работы приложений
**'''Инженер по мониторингу и логам''' (Monitoring and Logging Engineer) — работает с ПО для отслеживания показателей работы приложений
* Эксплуатация (IT Operations) — обслуживание IT продукта, инфраструктуры и поддержка пользователей
*Эксплуатация (IT Operations) — обслуживание IT продукта, инфраструктуры и поддержка пользователей  
** '''Руководитель эксплуатации''' (IT Operations Manager) — руководитель направления.
**'''Руководитель эксплуатации''' (IT Operations Manager) — руководитель направления.
** '''Менеджер внедрений''' (Implementation Manager) — отвечает за поставку продукта новым клиентам, первичную настройку и поддержку, обучение клиента
**'''Менеджер внедрений''' (Implementation Manager) — отвечает за поставку продукта новым клиентам, первичную настройку и поддержку, обучение клиента
** '''Специалист службы поддержки''' (Help Desk / Support Technician) — обработка входящих обращений от пользователей и решение простых проблем.
**'''Специалист службы поддержки''' (Help Desk / Support Technician) — обработка входящих обращений от пользователей и решение простых проблем.
** '''Технический аналитик''' (Technical Analyst) — решает сложные технические и технологические проблемы
** '''Технический аналитик''' (Technical Analyst) — решает сложные технические и технологические проблемы
** Системное администрирование
**Системное администрирование
*** '''Системный администратор''' (System Administrator) — установка, настройка и обслуживание ПО.
***'''Системный администратор''' (System Administrator) — установка, настройка и обслуживание ПО.
*** '''Сетевой администратор''' (Network Administrator) — отвечает за сетевую инфраструктуру.
***'''Сетевой администратор''' (Network Administrator) — отвечает за сетевую инфраструктуру.
*** '''Администратор баз данных''' (Database Administrator / DBA) — отвечает за работу баз данных.
***'''Администратор баз данных''' (Database Administrator / '''DBA''') — отвечает за работу баз данных.
*** '''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) — отвечает за внедрение инструментов обеспечения ИБ (сетевые экраны, антивирусы, системы обнаружения вторжений, системы шифрования данных)
** '''Аналитик ИБ''' (Security Analyst) — следит за ситуаций, документирует и разбирает инциденты
**'''Аналитик ИБ''' (Security Analyst) — следит за ситуаций, документирует и разбирает инциденты
** '''Пентестер''' (Penetration Tester) — пытается всё сломать, чтобы проверить надежность
**'''Пентестер''' (Penetration Tester) — пытается всё сломать, чтобы проверить надежность
** '''Комплаенс офицер''' (Compliance Officer) — контролирует выполнение международных стандартов по ИБ (GDPR, PCI DSS, ISO 27001)  
**'''Комплаенс офицер''' (Compliance Officer) — контролирует выполнение международных стандартов по ИБ (GDPR, PCI DSS, ISO 27001)
** '''Тренер по ИБ''' (Security Educator) — обучает всех в компании, как не косячить по ИБ
**'''Тренер по ИБ''' (Security Educator) — обучает всех в компании, как не косячить по ИБ
* Финансовый отдел (Finance) — бухгалтеры, финансовые аналитики
*Финансовый отдел (Finance) — бухгалтеры, финансовые аналитики
* Юридический отдел (Legal department) — юристы
*Юридический отдел (Legal department) — юристы
* Управление персоналом (Human Resources / HR) — найм сотрудников и удержание уже нанятых
*Управление персоналом (Human Resources / '''HR''') — найм сотрудников и удержание уже нанятых
</div>
===Как устроиться на работу в IT компанию===
</div>
Рекомендации:


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


=== Как стать разработчиком ===
===Что вас ожидает дальше===
В разработку ПО могут быть вовлечены различные специалисты, не выполняющие работу с исходным кодом: менеджеры, дизайнеры, аналитики, тестировщики, другие инженеры. Но название «разработчик» закрепилось за специалистами, основная (но не единственная) задача которых — программирование.
 
Для того, чтобы стать разработчиком необходимо:
 
# Проверьте, что вам нравится программировать. Начать можно с компьютерных игр про программирование. Ищете, выбирайте, пробуйте. Если вам это интересно и это «затягивает», можно двигаться дальше.
# Выберите интересное для вас направление. Для новичков без IT образования подойдут мобильная разработка и разработка [[Веб-приложение|веб-приложений]] (frontend или backend). Не торопитесь на данном этапе, изучите каждое из трех направлений и выберите подходящее.
# Выберите один язык программирования по интересующему направлению. Рекомендуется JavaScript для фронтенд направления, Python для бэкенд, Kotlin / Swift для мобильной разработки.
# Начните изучение с бесплатных материалов и недорогих курсов. Если понимаете —  «это оно», можно продолжать. Если идет «через силу», надо пробовать другие варианты.
# Изучите выбранный язык программирования, на уровне решения простых задач. Важно писать код алгоритмов самостоятельно «без копирования готовых решения из гугла».
# Освойте профессиональные инструменты работы. Минимальный набор — это инструменты работы с исходным кодом: git и IDE. Плюс у каждого направления разработки есть свои дополнительные.
# Выполните минимум один pet-проект (учебный проект) и выложите его код в открытый доступ.
# Разместите резюме и откликайтесь на вакансии стажера (подойдут бесплатное обучение или работа за минимальную зарплату). Остерегайтесь мошенников, обещающих высокие зарплаты без опыта работы.
# Пройдите собеседование и устройтесь на стажировку.
# Продолжайте искать работу, откликайтесь на вакансии младших (junior) разработчиков.
 
Важно! Если вам не интересно программировать, посмотрите в сторону других профессий в IT. Для начального уровня подойдут направления: тестировщики, аналитики, сотрудники технической поддержки.
 
=== Что вас ожидает дальше ===
Если вы стали разработчиком, вам придется продолжать всё время учиться для профессионального роста.   
Если вы стали разработчиком, вам придется продолжать всё время учиться для профессионального роста.   
{| class="wikitable"
{| class="wikitable"
Строка 159: Строка 149:
|Часто переоценивает себя
|Часто переоценивает себя
|Оценивает себя правильно
|Оценивает себя правильно
|Недооценивает себя
|Недооценивает себя  
|-
|-
|Опыт работы разработчиком
|Опыт работы разработчиком
|Нет
|Нет
|От 0 до 2х лет
|От 0 до 2х лет  
|Обычно больше 2х лет
|Обычно больше 2х лет
|Обычно больше 5 лет
|Обычно больше 5 лет
Строка 181: Строка 171:
|Ключевой софт-скилл
|Ключевой софт-скилл
|Обучаемость и инициативность
|Обучаемость и инициативность
|Работа в команде  
|Работа в команде
|Работа на результат
|Работа на результат
|Ответственность
|Ответственность
Строка 189: Строка 179:
|Небольшие проекты для себя
|Небольшие проекты для себя
|Небольшие бизнес проекты
|Небольшие бизнес проекты
|Есть опыт запуска крупных проектов
|Есть опыт запуска крупных проектов  
|-
|-
|Участие в Open Source
|Участие в Open Source
Строка 219: Строка 209:
|Знает и умеет писать код самостоятельно
|Знает и умеет писать код самостоятельно
|Знает особенности и подводные камни
|Знает особенности и подводные камни
|Следит за развитием языков программирования  
|Следит за развитием языков программирования
|-
|-
|Программирование
|Программирование
|Учебные задачи
|Учебные задачи
|Простые бизнес задачи
|Простые бизнес задачи
|Все задачи  
|Все задачи
|Может решать сложные задачи оптимальным способом
|Может решать сложные задачи оптимальным способом  
|-
|-
|Качество
|Качество
Строка 247: Строка 237:
|Парадигмы программирования
|Парадигмы программирования
|Что это?
|Что это?
|Нет
| Нет
|Обучение
|Обучение
|Знает и понимает
|Знает и понимает
Строка 269: Строка 259:
|Перепроверяет чужого кода больше, чем пишет сам
|Перепроверяет чужого кода больше, чем пишет сам
|-
|-
|Документирование кода
|Документирование кода  
|Нет
|Нет
|Да
|Да
|Да
|Да
|Да
| Да
|-
|-
|Поддержка выпущенных продуктов
|Поддержка выпущенных продуктов
|Нет
|Нет
|Простые багфиксы и доработки
|Простые багфиксы и доработки
|Сложные багфиксы и доработки
|Сложные багфиксы и доработки  
|Задачи по оптимизации, устранение технического долга
|Задачи по оптимизации, устранение технического долга
|-
|-
|Отношение к информационной безопасности
|Отношение к информационной безопасности
|Нет
| Нет
|Зачем это всё?
|Зачем это всё?
|Обучение на ошибках
|Обучение на ошибках
|Считает очень важным
|Считает очень важным
|-
|-
|Отношение с проектными менеджерами
|Отношение с проектными менеджерами  
|Кто это?
|Кто это?
|Обычно негативное
|Обычно негативное