Вашему бизнесу хватит одного программиста
Или нет?
Сегодня разбираем такой вопрос: Действительно ли достаточно одного программиста, чтобы создать программу ?
Для ответа на него я сначала кратко и по-простому расскажу о ролях, принятых при разработке программ. Затем мы проверим их надобность - повесим их на одного человека и посмотрим как он справится.
Менеджеры (Product/Project Manager)
Это управляющая роль. Обычно специалисты этой роли выявляют нужды заказчика и доносят их до команды. А основная ответственность — управлять процессами разработки, чтобы новая версия программы была выпущена вовремя и содержала наиболее важные для бизнеса функции.
Аналитики (Systems Analyst)
Эти люди превращают сухие желания заказчика в конкретные описанные задачи для программистов. Большая аналитическая работа на них.
Архитекторы (Systems/Solution Architect)
Задачи архитектора — это делать правильный выбор, из каких компонентов и технологий будет состоять система. Именно от этого зависит:
- Сложность и время внедрения новых функций в программу.
- Как программа выдержит новые большие нагрузки от пользователей.
- Жизнеспособность и поддерживаемость программы в долгосрочном будущем.
Дизайнеры (UX/UI Designer)
Часто они ответственны за визуальный вид программы — они могут сделать программу красивой ещё до того, как её «написали».
Но также дизайнеры проектируют пользовательский опыт — т. е. от них зависит удобство работы пользователя в программе, даже если в программе совсем нет графического интерфейса.
Системные администраторы (System Administrator)
Это люди, которые работают с серверами. Они подберут и закажут железо для него. Соберут и настроят сеть, чтобы с этим компьютером можно было работать удаленно.
Программисты (Software Developer)
В эту категорию относим программистов, которые пишут код, чтобы программа работала, как этого требует бизнес.
Тестировщики (QA)
Наверное, об этой роли в IT люди наслышаны больше всего. Тестировщики — проверяют, что программа работает, как заказал бизнес. Делают проверки вручную и могут писать код, чтобы автоматизировать эти проверки.
Инженеры автоматизации (DevOps)
Эта роль включает в себя задачи по автоматизации. Они тоже пишут код, но для того, чтобы «основной код программы» попал на сервер и был запущен. Или сформировалась очередная версия и были выполнены другие важные процессы.
Техническая поддержка (Technical Support)
Решают вопросы и проблемы пользователей программы. Специалисты этой роли позволяет не терять пользователей-клиентов и, следовательно, деньги бизнеса.
Каждая из этих ролей включает другие — с более узкими и более конкретными задачами.
А можно ли вычеркнуть некоторые роли?
Можно подумать, что некоторые роли можно вычеркнуть как неважные. Давайте разберемся на простом примере, можно или нет?
Один умный «Котик» дома разрабатывает программу — простое расширение для браузера. Он хочет, чтобы готовая рабочая программа была опубликована в официальном интернет-магазине браузера.
Давайте проверим, будет ли Котик исполнять все описанные роли или нет?
Менеджер — Котик сам определяет, какие функции будет иметь программа, и следит за прогрессом.
Системный аналитик — Котик сам транслирует требования на технический язык.
Архитектор — Котик сам выбирает технологии и проектирует программу.
Дизайнер — Котик сам выбирает, как пользователь будет взаимодействовать с программой.
Системный администратор — Котик сам настраивает свой компьютер для разработки и запуска программы.
Программист — Котик сам пишет код своей программы.
Тестировщик — Котик сам проверяет, что программа работает.
Инженер автоматизации — Котик сам создаёт новую версию и публикует её.
Техподдержка — Котик сам разбирается с ошибками в программе и исправляет их.
Что получается?
Даже если программу пишет один человек, сами роли никуда не исчезают. Они просто совмещаются в одном специалисте.
Поэтому вопрос «Достаточно ли одного программиста для создания программы?» можно переформулировать так: способен ли один человек взять на себя сразу несколько профессий. И во многих случаях ответ будет — да. Но насколько качественно он будет выполнять все поставленные роли - это зависит от личности. Например, не каждый программист сделает приятный интерфейс для пользователя, или спроектирует удачную архитектуру. В зависимости от целей компании - подбирается личность, которая возьмёт на себя нужные роли.
Но когда работы становится много, когда каждому направлению (роли) нужно уделять всё больше и больше внимания, чтобы результат получался более качественным — тогда задействуют разделение по ролям.
Некоторые компании затягивают с этим разделением, но в то же время требуют сохранять или даже повышать качество. В таких случаях перегрузка сотрудников нередко вызывает нервозность в коллективе и текучку кадров. Но, увы, не всем компаниям под силу увеличивать штат.