Хакерство: Взлом ролей в разработке программного обеспечения

Robert Bogue, “Cracking the Code: Breaking Down the Software Development Roles”, public translation into Russian from English More about this translation.

Translate into another language.

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

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

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

Общие роли

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

* Subject Matter Experts (SMEs) -  человек или люди от которых исходят требования. Это люди которые знают какой софт необходим и как устроен рабочий процесс. Роль SME немного отличается от других ролей, потому что она неизменно меняется с каждым новым заказчиком(внутренним или внешним) и состоит в помощи создания решения. SME редко из IT - за исключением ситуаций, когда решение создаётся для сопровождения IT. SME зачастую человек, который будет получать пользу от системы.

* Functional Analysts (FAs) Аналитик Функциональности - имеет независимую роль в извлечени чистых, сжатых, не конфликтующих требований от SME, которые могут или не могут понимать как технология может быть использована для преобразования их бизнес процессов в лучшую сторону.

* Solutions Architect (SA) Архитектор Решения - делает возможным преобразование требований созданных Аналитиком Функциональности в набор архитектурных и конструкторских документов, которые могут использоваться членами команды для непосредственного создания решения.

* Development Lead (DL) Руководитель разработки - это роль фокусируется вокруг обеспечения детализации архитектуры созданной Архитектором Решения. Это должно включать детальную спецификацию создания программы. Руководитель разработки так-же первая линия поддержки для разработчиков которым нужна помощь в понимании концепции или при работе над особенно трудными проблемами.

* Developer (Dev) Разработчик - сердце и душа процесса, Разработчик пишет код, спецификацию которого разработал Руководитель разработки.

* Quality Assurance (QA) Гарантор Качества - эта роль часто неблагодарная должность, которая создана для нахождения багов до того как они будут найдены конечным пользователем. Использование разнообразные техники проверок от ввода данных и игр с системой, до формализации и автоматического тестирования скриптами, команда Гаранторов Качества возможность для того что-бы убедится в качестве решения и их соответствия требованиям собранным Аналитиком Функциональности.

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

* Training (Отдел обучения) - роль обучения ответственна за документирования системы так хорошо как любой инструктор или компьютер с обучающими решениями, которые сделаны для помощи пользователям в понимании как система работает и что они могут с ней делать.

* Project Manager (PM) Менеджер проекта - ответственный за проверки соответствия отчётов, рисков миграций, расписания и контроля стоимости. Менеджер проекта роль которая решает проблемы. Она пытается разрешить проблемы пока они маленькие и пока их можно решить быстро и с минимальными затратами.

* Development Manager (DM) Менеджер разработки - ответственный за управление несколькими приоритетными конкурирующими проектами. Роль Менеджера разработки так-же поднимает проблемы из команды, которые не могут быть решены внутри.

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

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

Критические Навыки для Каждой Роли

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

Общие Навыки всех ролей:

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

* Broad Understanding(Широта понимания) - несмотря на понимание разработки софта критичны другие участки где знание может быть бесценно. Для примера, понимание внутреннего устройства компьютера включая память, кэш, жёсткий диск и так далее, может помочь вам изучить как наиболее соответствующим образом сохранить эти ресурсы. Такое же понимание сети, может помочь в разработке приложений, которые совместимы и даже дружелюбны с сетями через которые работают. SME широко понимают индустрию и могут быть бесценны в терминах создания решения, которое подходит и для организации и для индустрии. Команда QA может получить преимущество от Широты понимания через минимизацию стоимости QA через совершенствование тестового покрытия.

* Multiple Perspectives(Разные точки зрения) - способность подхода решения из нескольких точек зрения важна для разработки софта. Понимание как каждый человек который работает на проблемой смотрит на задачу, или как разные пользователи представляют решение, важно для нахождения лучшего решения основанного на всей информации. Всегда есть несколько возможностей взглянуть и решить проблему. Фишка в том что-бы найти лучшую из всех. Чем больше список возможностей(точек зрения), тем лучше решение.

* People Skills(Коммуникабельность) - так-же известные как Навык общения, способность взаимодействия с другими людьми, что-бы быть частью команды является самым главным чуть ли не для каждой роли в проекте по разработке софта. Плохая коммуникация людей в команде с высокой вероятностью приведёт проект к взрыву.

* Lifelong Learning(Повышение квалификации) - несмотря на силу аргумента что перспектива существование жизни повышения квалификации скорее свойство, нежели навык, важная часть существования в быстро меняющейся индустрии как IT вообще и в разработке софта в частности. То что учится сегодня устаревает завтра. Единственный путь оставаться во-главе игры, это подойти к жизни с точки зрения непрерывного обучения. Каждый новый опыт это новый удобный случай учиться и каждый новый год приносит с собой необходимость обновления навыков.

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

Original (English): Cracking the Code: Breaking Down the Software Development Roles

Translation: © Виталий Беленький .

translatedby.com crowd

Like this translation? Share it or bookmark!