Кто создает компьютерные программы

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

Начинается все с… – нет, не с программиста! И даже не с его начальника. Начинается все с заказчика. Но поскольку для нас эта сторона сейчас не важна, перейдем сразу к посреднику между заказчиком и программистом – он называется аналитик.

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

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

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

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

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

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

Автор — Марина Середа

Источник