Высшая Школа Экономики Факультет Бизнес-Информатики, Отделение Программной Инженерии реферат
Вид материала | Реферат |
- Правительство Российской Федерации Национальный исследовательский университет Высшая, 146.77kb.
- Правительство Российской Федерации Государственный университет Высшая школа экономики, 218.98kb.
- Правительство Российской Федерации Государственный университет Высшая школа экономики, 91.67kb.
- Высшая Школа Экономики Факультет прикладной политологии отделение реклама реферат, 171.26kb.
- Высшая Школа Экономики Факультет прикладной политологии отделение реклама реферат, 313.36kb.
- Вопросы, выносимые на экзамен по курсу пис, 26.43kb.
- От отделения программной инженерии факультета бизнес-информатики за организацию и проведение, 22.63kb.
- Правительство Российской Федерации Государственный университет Высшая школа экономики, 323.63kb.
- Правительство Российской Федерации Национальный исследовательский университет Высшая, 98.38kb.
- Факультет Бизнес Информатика Отделение программной инженерии программа дисциплины, 257.29kb.
Государственный Университет – Высшая Школа Экономики
Факультет Бизнес-Информатики, Отделение Программной Инженерии
Реферат по предмету «Методология программной инженерии» на тему:
«Компетенции членов команды разработки программного обеспечения»
Выполнила: Ларина Любовь,
гр. 171мУРПО
Проверил: Авдошин С.М.
Москва, 2008
Оглавление
Введение 3
Требования к сотрудникам, играющим различные роли в команде разработки ПО 5
Общие требования 6
Менеджер проекта 8
Аналитик 10
Проектировщик 12
Программист 12
Тестировщик 14
Технический писатель 16
Инженер технической поддержки 17
Методы подбора сотрудников 18
Заключение 22
Список используемой литературы 23
Приложение А: Навыки ведущего программиста 24
Приложение Б: Навыки рядового программиста 29
Введение
Существуют однозначно провальные проекты, безнадежные с начала и до конца. Они основаны на несостоятельной идее, или недостаточно продуманы в смысле исполнения, или недостаточно обеспечены технически и финансово; для некоторых справедливы все эти замечания, очевидная еще до начала работ неудачность других обусловлена чем-то еще.
Однако даже если проект изначально хорош и многообещающ, если идея соответствует требованиям рынка, на этапе исследования спроса и планирования все прошло идеально – проект может так навсегда и застрять на этом этапе за счет разрушительного влияния всего одного фактора – человеческого.
Избежать этого можно только одним способом – тщательным подбором каждого члена команды. Грамотное управление проектом, несомненно, также играет важную роль в данном аспекте; однако, во-первых, никакое управление не способно сделать неквалифицированного работника квалифицированным; во-вторых, грамотность менеджера проекта – также вопрос человеческого фактора.
Даже один неверно подобранный человек может в определенной ситуации поставить под угрозу выполнение всего проекта – если этот человек играет в нем одну из ключевых ролей. Последствия же серии неудачных решений при подборе персонала преодолеть еще сложнее, и выявляются они гораздо чаще, а не только в редких специфичных случаях. Слабая команда означает низкую производительность, низкое качество конечного продукта, отсутствие заинтересованности проектом, слабую мотивацию, сложности в планировании разработки и, как следствие, задержки в выпуске продукта. Таким образом, необходимым условием успешности проекта является подбор подходящих людей. Если руководитель проекта не способен справиться с этой задачей, в лучшем случае он наберет команду посредственную, в худшем — несостоятельную[3].
Однако чтобы собрать по-настоящему хорошую команду, необходимо достаточно четко представлять, что подразумевается под уровнем «хорошо». В противном случае удачная в этом смысле ситуация может сложиться только благодаря счастливой случайности, вероятность которой, конечно, далека от значения вероятности, которое руководитель проекта должен сопоставлять с его успехом.
В данной работе будут рассмотрены требования к членам команды, участвующей в проекте разработки программного обеспечения, играющим различные роли, а также некоторые способы подбора соответствующего персонала. При этом главным документом, на основании которого были выработаны данные требования, являются утвержденные 17 июня 2008г. на заседании Комиссии РСПП по профстандартам профессиональные стандарты по наиболее массовым и востребованным профессиям в области информационных технологий (ИТ)[2]. Кроме того, используются материалы книги Эдда Салливана «Время – деньги: Создание команды разработчиков программного обеспечения».
Требования к сотрудникам, играющим различные роли в команде разработки ПО
Существует мнение, что наиболее важно подобрать по возможности идеальных работников на ключевые роли в проекте. При этом понятия ключевой роли и ключевого работника разделяются. «Первое носит характер, отстраненный от персоналий коллектива, а второй соотносится именно с коллективом»[1]. Иногда возникают ситуации, когда «некоторые первоначально не зарекомендовавшие себя исполнители, а потому не занимающие высоких позиций в управлении проектом, фактически берут на себя ответственность за проект, подсистему и т.д. и в результате становятся ключевыми работниками»[1], что может послужить причиной серьезных проблем – например, в случае установки неформального лидера команды или лидерства одной из команд разработки; хотя при определенном сценарии развития событий менеджер может даже специально подобрать такого человека на ключевую роль, который возьмет на себя часть обязанностей лидера, если это происходит случайно, велика вероятность появления «противодействующего лидера», борьба с которым в дальнейшем будет связана с большими трудностями. Поэтому рекомендуется самым тщательным образом отнестись к задаче определения ключевых ролей в проекте и к назначению именно их исполнителей[1]. При этом среди ключевых ролей выделяются следующие:
- архитектор проекта;
- проектировщики подсистем;
- руководители команд разработки подсистем;
- специалист по пользовательскому интерфейсу;
- эксперт предметной области[1].
Однако в данной работе рассматривается немного другой сценарий, а именно – идеальная ситуация относительно небольшой команды, состоящей из качественных специалистов. В этой, рассматриваемой команде будут выделены следующие роли:
- менеджер проекта;
- аналитики;
- проектировщики;
- программисты;
- тестировщики;
- технические писатели;
- инженеры технической поддержки.
Конечно, большая часть ролей подразумевает внутреннее разбиение на более узких специалистов. Однако в рассматриваемых ниже «Профессиональных стандартах в области ИТ»[2], на которых в основном и будет основана данная работа, профессия, например, программиста не разбивается на составляющие; поэтому более подробная декомпозиция проводиться не будет. К сожалению, в «Профессиональных стандартах» представлены прямые спецификации далеко не для всех ролей, поэтому требования для части из них будут представлять собой набор необходимых качеств, взятый из других источников. И, наконец, среди ролей не рассматриваются роли, связанные с маркетингом; это связано со спецификой данной работы: здесь рассматриваются профессиональные требования именно для ИТ-профессий; поэтому делается предположение, что специалисты по маркетингу вынесены за пределы команды, однако с ними будет производиться сотрудничество при работе аналитиков; за связь с ними отвечает менеджер проекта.
Кроме того, в реальной практике часть этих ролей совмещается одними и теми же людьми. В данной работе будут рассмотрены так называемые необходимые совмещения ролей: например, непременное вхождение в команду аналитиков и проектировщиков руководителей других команд.
Общие требования
Как утверждает Эд Салливан в книге «Время – Деньги: Создание команды разработчиков программного обеспечения», идеальный работник должен обладать следующим набором качеств:
- соответствующая квалификация;
- преданность;
- отношение к делу;
- поведение;
- умение работать в команде;
- жажда знаний[3].
Квалификация в общих чертах не требует пояснений, подробно же и применительно к каждой роли будет рассмотрена ниже.
Под преданностью понимается приверженность делу, готовность жертвовать ради достижения общей цели. Отношение к делу подразумевает усердие и неизменный позитивный настрой по отношению к работе. По критерию же «поведение» положительным результатом для кандидата станет склонность к активным действиям.
Далее идут два крайне важных фактора. Ни в коем случае нельзя недооценивать важность умения кандидата работать в команде. Для разработки ПО нужны люди, способные делиться идеями, мнениями и опытом. Только тогда можно решать сложные проблемы. Вот почему необходимо поддерживать сплоченность команды. Если специалист высокого класса не способен сработаться с другими, его ценность для коллектива становится заметно ниже, а в худшем случае люди такого типа могут даже разрушить команду. Поэтому забота о коллективе всегда должна стоять на первом месте[3].
Еще один важный фактор — способность кандидата к росту. Необходимо подбирать людей, стремящихся к новым знаниям и развитию, заинтересованных в своей области. Они интересуются новинками и знают, что происходит в их индустрии, понимают, что происходило с ПО раньше, что творится сейчас и что его ждет в будущем; они не дают своим знаниям устареть. Это поможет команде быстро и легко переходить к новым технологиям, инструментам и методам. Кроме того, такое свойство позволяет брать в команду подающего надежды талантливого человека, чей уровень на момент отбора, возможно, недостаточно высок; необходимо оценить потенциал данного кандидата, его способности. «То, что он знает в первый день, не так важно в сравнении с тем, что он будет знать через три, шесть месяцев и через год»[3].
Перечисленные выше требования являются общими для всех членов команды. Теперь же будут рассмотрены более подробно спецификации для каждого из участников группы разработки.
Менеджер проекта
Менеджер играет ключевую роль в реализации проекта, его функционал включает в себя многочисленные роли и обязанности. Он отвечает за создание команды и управление ее составом. Он также курирует кадровое обеспечение, планирование карьеры, кадровую политику, анализ и проверку работы сотрудников и поддержание «боевого духа» группы. В его обязанность входит найм новых сотрудников, повышение мастерства и развитие навыков специалистов, а также поддержание мотивации и целенаправленной деятельности людей во время работы над проектом[3].
Также менеджер проекта руководит формулированием и исполнением плана проекта. Он подбирает группу специалистов, формулирующих и согласовывающих требования, а также отслеживающих их выполнение. Когда список требований готов, менеджер составляет план, регламентирующий все действия, необходимые для реализации проекта: программирование, тестирование, разработку документации, работу технологов по разработке ПО и инженерных психологов. План также учитывает другие ключевые аспекты создания продукта, а именно: составление графика работы, реализацию технологии программирования, подбор кадров, а также неопределенности и риск[3].
В дальнейшем именно менеджер проекта отвечает за то, чтобы соответствующие решения принимались своевременно и были согласованы с командой, которая должна быть в курсе принятых решений. Если корректировки приведут к коренным переменам в направленности продукта, он должен довести решение и все его последствия до сведения каждого, кого оно затрагивает; именно он отвечает за соблюдение графика работы над проектом и обязан вносить соответствующие коррективы в случае возникновения проблем.
Менеджер проекта устраняет возникающие препятствия и обеспечивает все необходимое для успешной работы команды. Он должен определять проблемные области, работать над ускорением решения проблем и поддерживать команду в состоянии сосредоточенности и гармонии. Он также должен быть готов выступить в роли инструктора или наставника, обладающего достаточными знаниями и опытом в разных областях, чтобы оценить успехи команды и при необходимости помочь ей. Кроме того, он является главным связующим звеном между разработчиками и группой менеджмента и маркетинга.
Согласно «Профессиональным стандартам»[2], к менеджеру проекта предъявляются следующие требования:
Требования к практическому опыту работы | 1,5 года |
Требования к необходимости сертификации | Подлежит |
Требуемый уровень профессионального образования и обучения | Квалификация «Дипломированный специалист» Квалификация (степень) магистра Повышение квалификации Профессиональная переподготовка |
При этом для выполнения своих должностных обязанностей менеджер проекта должен обладать следующими навыками:
- Руководить проектом с использованием технологий проектного управления
- Определять требования к составу команды исполнителей проекта
- Разрабатывать квалификационные требования к исполнителям проекта в соответствии с задачами проекта
- Подбирать исполнителей проекта и оценивать их соответствие квалификационным требованиям
- Формировать команду исполнителей проекта
- Распределять работы в команде исполнителей проекта
- Проводить обучение исполнителей проекта
- Оценивать результаты работы исполнителей проекта и корректировать их деятельность
- Предоставлять конструктивную обратную связь исполнителям проекта по результатам их работы
- Управлять ресурсами проекта
- Управлять расписанием проекта
- Управлять содержанием проекта
- Управлять качеством проекта
- Управлять интеграцией проекта
- Управлять контрактами проекта
- Управлять рисками проекта
- Управлять бюджетом проекта
- Управлять командой проекта со стороны заказчика
- Вести проектный учет
- Выбирать методологию ведения работ
- Выбирать методологию управления проектом
- Проводить анализ и оценку методологии ведения работ
- Проводить анализ и оценку методологии управления проектом
- Разрабатывать и совершенствовать методологию ведения работ
- Разрабатывать и совершенствовать методологию управления проектом
- Вести за собой других
- Создавать и поддерживать авторитет в среде коллег и заказчиков
- Мотивировать партнеров по взаимодействию
- Проводить изменения
- Управлять конфликтными ситуациями
- Управлять отношениями участников проекта
- Управлять межличностными отношениями
- Управлять разработкой плана проекта
- Управлять развитием проекта
- Управлять приемо-сдаточными работами проекта
- Управлять переходными этапами проекта
- Разрабатывать план для оценки проекта и оценивать проект в соответствии с планом
- Инициировать проект по автоматизации деятельности предприятия заказчика
Аналитик
Команда аналитиков отвечает за первичный анализ проекта и дальнейшие итеративные мероприятия по анализу. В нее входит менеджер проекта, а также руководители всех рабочих групп. Таким образом, можно сделать два вывода: во-первых, нет смысла собирать группу аналитиков отдельно, во-вторых, в таком случае необходимо, чтобы руководители рабочих групп обладали соответствующими навыками, как-то:
- Вести деловую беседу с представителем заказчика
- Вести деловую беседу с группой представителей заказчика
- Проводить переговоры с руководством предприятия заказчика
- Осуществлять сбор информации
- Проводить интервью с ключевыми сотрудниками заказчика
- Обрабатывать информацию
- Анализировать информацию
- Владеть инструментами экспресс-обследования предприятия
- Проводить комплексный анализ проблем в организации работы предприятия заказчика и выявлять причины их возникновения
- Находить пути повышения эффективности деятельности предприятия с использованием возможностей информационных систем
- Владеть терминологией заказчика в одной или нескольких предметных областях
- Оценивать бизнес-задачу с точки зрения заказчика
- Находить баланс между регламентированными требованиями к бизнесу заказчика и его потребностями в повышении эффективности системы управления
- Аргументировать и убеждать собеседников
- Находить пути повышения эффективности деятельности предприятия с использованием возможностей информационных систем
- Владеть терминологией заказчика в одной или нескольких предметных областях
- Разрабатывать концепцию организации системы управления в рамках бизнес-задачи
- Выявлять и описывать бизнес-процессы предприятия
- Анализировать эффективность бизнес-процессов и выявлять проблемы в их устройстве
- Определять оптимальную конфигурацию аппаратного обеспечения
- Анализировать технологические и архитектурные решения в области информатизации
- Использовать терминологию, понятийный аппарат, базовые идеи, методы и процессы предметной области заказчика
- Определять границы применимости методов системного анализа
- Работать с различными видами исходных данных по предметной области
- И т.д.[2]
Проектировщик
Группа проектировщиков имеет тот же состав, что и группа аналитиков. Однако теперь их задача заключается в том, чтобы определить архитектуру проекта (за это отвечает менеджер), а также схему жизненного цикла, график проведения работ, поэтапную схему реализации программного продукта (в том числе, при помощи псевдокода) и пр.
Программист
Среди программистов имеет смысл выделить ведущего разработчика (ведущего программиста) и рядовых программистов, поскольку для них применимы различные спецификации.
Ведущий разработчик - главный специалист по разработке ПО. В число его обязанностей помимо, собственно, программирования, входит:
- наблюдение за соблюдением архитектурных и технических спецификаций продукта;
- подбор ключевых технологических инструментов и стандартов;
- диагностика и разрешение всех технических проблем;
- выполнение роли технического инструктора и консультанта для участников проекта;
- наблюдение и контроль за работой групп разработчиков документации, тестировщиков и технологов;
- мониторинг состояния продукта (ведение списка обнаруженных ошибок);
- подбор инструментов разработки, метрик и стандартов и наблюдение за их использованием[3].
Поскольку ведущий разработчик играет ключевую роль в разработке ПО, занимающий эту должность специалист должен быть достаточно зрелым и квалифицированным, чтобы справиться со сложными техническими и кадровыми проблемами, возникающими во время цикла разработки. Для определения соответствия уровню этой должности из «Профессиональных стандартов» были рассмотрены требования третьего и четвертого квалификационных уровней для программистов[2]:
Требуемый уровень профессионального образования и обучения | Квалификация (степень) магистра Квалификация "дипломированный специалист" Повышение квалификации Профессиональная переподготовка |
Требования к практическому опыту работы | 2 года |
Требования к необходимости сертификации | Подлежит добровольной сертификации |
Навыки, которыми необходимо владеть ведущему программисту, представлены в Приложении А.
Рядовые программисты работают над реализацией определенной функции программного обеспечения. В круг их обязанностей входит:
- согласование архитектурных вопросов с коллегами, ответственными за разработку других функций;
- формулирование требований к функциям и их критический анализ;
- проектирование функций;
- снабжение тестировщиков и разработчиков документации техническими материалами;
- реализация функции;
- ее тестирование;
- исправление ошибок в реализованной функции;
- помощь техническим писателям в документировании реализованной функции;
- помощь тестировщикам в испытаниях этой функции[3].
Данной должности соответствует спецификация для программистов второго уровня классификации[2]:
Требуемый уровень профессионального образования и обучения | Среднее профессиональное образование – Квалификация (степень) бакалавра Квалификация (степень) бакалавра Квалификация "дипломированный специалист" Профессиональная переподготовка Повышение квалификации |
Требования к практическому опыту работы | 2 года |
Требования к необходимости сертификации | Подлежит добровольной сертификации |
Список необходимых навыков рядового программиста представлен в Приложении Б.
Тестировщик
Тестировщики отвечают за составление и исполнение плана тестирования программы, создаваемой в рамках проекта. Чтобы обеспечить истинное партнерство между теми, кто пишет код и теми, кто его тестирует, роли и обязанности группы тестировщиков должны быть «параллельны» обязанностям разработчиков[3].
В этой команде необходимо выделить ведущего тестировщика и рядовых тестировщиков.
Ведущий тестировщик отвечает за организацию и исполнение тестирования программного обеспечения в период разработки. В его обязанности входит составление плана тестирования, управление автоматизацией, он ответственен за исполнение плана тестирования на протяжении всего цикла разработки, за регрессивное тестирование, а также отвечает за выбор и использование инструментов, метрик и стандартов для тестирования.
Рядовой тестировщик в свою очередь отвечает за выполнение плана тестирования и предоставление соответствующих отчетов.
Требования к тестировщикам могут отличаться от компании к компании и зависят, прежде всего, от функциональных обязанностей и от видов тестирования, которые необходимо выполнять (ручное функциональное, автоматизированное, тестирование производительности, тестирование безопасности, тестирование удобства использования и т.д.), а также от отраслевой специализации[4].
Однако существует и набор универсальных требований. Это:
- знание методологии и методик тестирования;
- знание типов и видов тестирования, различных их классификаций;
- технические знания приложений, с которыми приходится работать (Веб-приложения, банковское ПО и т.п.);
- знание стандартов и методологий, применяемых к приложениям, с которыми приходится работать;
- умение создавать тестовую документацию;
- знание стандартов в области тестирования;
- умение разрабатывать системную документацию, системную архитектуру;
- начальные навыки разработки ПО;
- понимание жизненного цикла разработки ПО, различных методологий его разработки и места тестирования в данном процессе;
- знание автоматизированных средств разработки и тестирования;
- знание основ баз данных и SQL;
- умение внимательно прислушиваться к высказываниям внешних клиентов, независимо от уровня их технической подготовки;
- способность представлять просьбы и пожелания клиентов в виде технических требований (и наоборот);
- умение общаться со своими сотрудниками и с руководителями и сотрудниками других отделов;
- способность объективно презентовать информацию;
- навыки в написании статей на соответствующие темы;
- умение ясно и доступно излагать свои мысли;
- высокая производительность;
- умение принимать решения в критических ситуациях;
- желание развивать математические и статистические знания;
- логическое мышление.
Кроме того, необходимо наличие высшего технического образования и опыт программирования[4].
Технический писатель
Группа технических писателей обеспечивает пользователя справочными материалами: печатной документацией, электронной справочной системой, обучающими программами и карточками быстрой справки.
При этом ведущий технический писатель отвечает за составление плана создания документации для всего проекта, а также за определение стандартов документации, и следит, чтобы в продукте были отражены самые последние изменения в правилах и технологиях написания технической документации. Кроме того, он также участвует в написании документации.
В обязанности рядового технического писателя входит собственно написание и производство документации. Кроме того, в процессе работы группа технических писателей часто выступает в роли пользователей – тестировщиков, находя, таким образом, ошибки в интерфейсе программы[3].
Требования к техническим писателям разнятся от компании к компании еще сильнее, чем требования к тестировщикам. Но любой технический писатель должен, прежде всего, идеально владеть языком, уметь доступно излагать свои мысли, знать нормы государственного стандарта (ГОСТы) и международные стандарты документирования, владеть программами для работы с текстом и создания электронной справки, владеть языками программирования и языком разметки HTML[5].
Инженер технической поддержки
Инженер технической поддержки отвечает за связь с клиентами после выхода продукта. При этом он помогает клиенту решать проблемы, связанные с использованием программы, и предоставляет разработчикам информацию об ошибках в прогрммном продукте. «Хорошая техническая поддержка позволяет преодолеть все недостатки продукта, обнаруженные после его выхода, и существенно уменьшить недовольство клиентов продуктом (если оно будет иметь место)»[3].
Техническая поддержка – главный канал связи компании-производителя программного обеспечения с клиентами. Поэтому, для инженера технической поддержки необходимы такие навыки как коммуникабельность, доброжелательность, квалифицированность, прекрасное знание программного продукта. Он должен быть технически подкован и иметь высшее техническое образование.
Методы подбора сотрудников
Итак, когда определены спецификации, на основании которых принимается решение о найме нового сотрудника, необходимо изучить те методы, которые позволят определить, насколько соответствует кандидат требованиям к должности, на которую он претендует. Как правило, при этом кандидат проходит через три этапа отбора:
- Первичный отбор (анализ резюме, телефонное интервью, анализ анкет);
- Вторичный отбор (тестирование, собеседование, кейс-методы и пр.);
- Принятие решения о найме сотрудника[6].
Каждый из этих этапов необходимо рассмотреть отдельно.
Прежде всего, важно качественно проанализировать резюме. При этом необходимо обратить внимание, прежде всего, на описанную квалификацию кандидата, на его предыдущие места занятости, на описанные проекты, в которых он участвовал: необходимо найти человека, которой уже справлялся со сложной работой хотя бы в одной из интересующих работодателя областей. Также по местам предыдущей работы можно судить о том, насколько кандидат подходит для настоящего проекта – предпочитал ли он в прошлом работу на проектах такого или иного типа, в схожих или отличных от данной компаниях. Пристального внимания заслуживает количество и частота смены мест работы: если место работы меняется слишком часто, это может означать, что кандидат не соответствует требованиям преданности делу. Наконец, по предыдущим проектам можно понять, насколько сильно кандидат стремится к развитию своей квалификации и росту в новых областях.
Чаще всего к резюме прикладывается сопроводительное письмо. Его также необходимо тщательно изучить. Резюме и сопроводительное письмо — первые примеры способности кандидата письменно излагать свои мысли.
За изучением резюме может последовать проведение интервью по телефону – это может помочь сэкономить время, давая возможность лучше разобраться в кандидате и принять более продуманное решение о целесообразности проведения собеседования. Кроме того, можно выслать кандидату дополнительные анкеты для сбора необходимых данных, информация о которых не была представлена в резюме.
Затем наступает время вторичного отбора. Наиболее простым его вариантом является собеседование; однако для достижения наилучшего результата имеет смысл дополнить его прохождением тестов и, возможно, некоторых тест-кейсов, то есть тестовых заданий, связанных с будущей работой.
В собеседовании должны принимать участие все сотрудники, которые будут непосредственно связаны с новичком[3]. Важно помнить о том, что успех проекта во многом зависит от того, насколько хорошо сработаются члены команды. Команда должна полностью принять нового сотрудника, а этого гораздо проще добиться, если члены команды будут участвовать в выборе кандидатов.
При этом для определения уровня квалификации кандидата правильнее всего привлечь руководителей или ведущих специалистов отдельных направлений. Кроме того, для определения этого и других важны качеств кандидата в работе Эда Салливана предложен интересный набор стандартных вопросов:
«Квалификация.
Опишите последний случай, когда для решения проблемы вам требовалась помощь других специалистов. Долго ли вы ее ждали? Как вы взаимодействовали? Что получилось в итоге?
Расскажите о сложной проблеме, которую вам пришлось выявлять и устранять. Что это было? Как вы ее обнаружили? Каково было решение?
Расскажите о каком-нибудь фрагменте кода, который вам нужно было написать в сжатые сроки. Как вы это делали? Получилось ли у вас и почему?
Преданность.
Какая часть вашего предыдущего проекта была самой сложной? Как вы к этому относились? В чем заключалась ваша роль? Что получилось в результате?
Расскажите о ситуации, когда ваш проект должен был реагировать на внешние воздействия. Что было причиной? Какова была реакция команды? Какова была ваша реакция?
Отношение к делу.
Опишите последний случай, когда вы не уложились в сроки. Что случилось? Как вы реагировали? Что произошло потом?
Опишите последний случай, когда вы оказались в затруднительном положении. Из-за чего? Как вы реагировали? Как вы вышли из положения?
Поведение.
Опишите последний случай, когда вы отвлеклись от своих дел, чтобы помочь кому-то другому. Почему вы это сделали? Каков был результат?
Расскажите о ситуации, когда вы делали дополнительную работу, хотя вас об этом не просили и никто не знал, что вы это делаете.
Умение работать в команде.
Опишите самого сложного во взаимоотношениях человека, с которым вам приходилось работать. Что делало таким сложным общение с ним? Какова была ваша реакция? Как вы к этому относились?
Каковы наиболее важные принципы плодотворной работы с другими людьми? Почему? Приведите примеры, подтверждающие ваше мнение.
Жажда знаний.
Как вы поддерживаете свои знания? Какие книги или журналы вы читаете, какие выставки посещаете?
Опишите, что сейчас происходит на рынке с продуктом X. Что может случиться в дальнейшем?»[3].
Как уже было сказано, тесты и тестовые задания могу дать хорошее представление о кандидате. При этом тестирование не должно требовать большого объема внешней вспомогательной информации, однако при этом должно быть достаточно сложным, чтобы можно было увидеть, как кандидат решает трудные проблемы. Как пишет Салливан: «Зачастую наиболее важная часть теста — не тест как таковой, а реакция на него. Не паникует ли кандидат? Не сдается ли он через пять минут? Находит ли он творческое или уникальное решение? Прилагает ли усилия? Не сломило ли его то, что он не смог закончить тест или не нашел ответа?»[3].
Часто на этапе вторичного отбора возникает вопрос рекомендаций. Существуют некоторые тонкости, связанные с ним. Необходимо принимать к рассмотрению только письменные рекомендации, заверенные предыдущим работодателем. Какие-то вопросы в последствии можно уточнить в устном разговоре, однако не следует полностью доверять фактам, полученным из разговора по телефону, ведь нет никаких доказательств того, что на вопросы отвечал именно прошлый работодатель кандидата; именно поэтому основной документ должен быть представлен в бумажном виде. В рекомендательном письме должна быть указана должность кандидата на прежнем месте работы; ее, а также само место работы, необходимо сверить работодателя, предоставившего рекомендации, с последней записью в трудовой книжке кандидата, чтобы удостовериться, что рекомендация не дана посторонним человеком, не имеющим к предыдущему месту работы кандидата никакого отношения[7].
Третьим этапом отбора должно стать принятие окончательного решения. При этом необходимо в полной мере учитывать мнения тех членов команды, которые принимали участие в процессе отбора. Если после многочисленных дискуссий хотя бы у одного члена команды остаются серьезные возражения, это весомый повод отказаться от обсуждаемой кандидатуры, в противном случае, новый член команды может послужить причиной серьезного разлада в коллективе.
Заключение
В данной работе были обзорно рассмотрены требования к членам команды, участвующей в проекте разработки программного обеспечения, играющим различные роли, а также некоторые способы подбора соответствующего персонала. Однако даже при беглом взгляде на выведенные требования к работникам компании-разработчика программного обеспечения, можно придти к выводу, что требования эти сильно завышены. В жизни специалистов такого класса можно встретить нечасто, и далеко не всегда для участия в данном проекте необходимы именно они.
В связи с этим имеет смысл в заключение признать следующий факт: идеальных работников не бывает. Однако любые определенные стандарты – формальные или неформальные – создаются именно для того, чтобы существовал определенный образ «идеала», что дает возможность четко определить, насколько далек от него тот или иной кандидат, и принять решение о найме не только и не столько на основании интуитивного восприятия специалиста по кадрам или менеджера проекта, сколько на основании установленного перечня качеств, которые должен иметь искомый работник.
Список используемой литературы
- И.Н. Скопин «Основы менеджмента программных проектов» ссылка скрыта
- Квалификационные требования (профессиональный стандарт) в области информационных технологий
- Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения» Издательство: Русская Редакция, 2002 г.
- Артем Ваулин, статья «Профессия - тестировщик ПО» ссылка скрыта
- Наталья Илюшина, статья «Технический писатель: технарь или гуманитарий» ссылка скрыта
- Статья «Основные формы и методы подбора персонала» ссылка скрыта
- Статья «Нестандартные методы подбора персонала» ссылка скрыта
Приложение А: Навыки ведущего программиста
Вырабатывать требования к программному обеспечению
Использовать средства и методы разработки требований и спецификаций
Оценивать требования
Разрабатывать сценарии использования продуктов
Использовать методы и технологии разработки формализованных требований и спецификаций для контроля заказанной функциональности и качества продукта
Использовать методы и технологии разработки формализованных требований и спецификаций для генерации исполняемого кода и тестов по формальным описаниям
Работать с документацией и технической литературой
Владеть технологией реинжиниринга
Владеть методами абстрагирования спецификаций до уровня требований
Владеть основными методами процессов разработки программного обеспечения
Проводить объектно-ориентированный анализ
Проектировать программное обеспечение с использованием специализированных программных пакетов
Владеть основными методологиями процессов разработки программного обеспечения
Разрабатывать формализованные требования и спецификации для контроля заказанной функциональности и качества продукта
Осуществлять объектно-ориентированное проектирование
Обобщение формальных требований
Формирование критериев оценки реализации
Применять инструментарий управления проектом
Применять эффективные методы проектирования
Сопоставление технической спецификации и требований
Осуществлять сопоставление требований
Проверять корректность требований и спецификаций
Владеть основными методологиями процессов разработки программного обеспечения
Оптимизировать программный код с использованием специализированных программных средств
Осуществлять разработку программного обеспечения на современных языках программирования
Использовать методы и средства разработки тестовых сценариев и тестового кода
Осуществлять сопоставление разработанного кода и исходных спецификаций
Осуществлять объектно-ориентированную разработку
Осуществлять отладку программ
Владеть основными методологиями процессов разработки программного обеспечения
Осуществлять разработку программного обеспечения на современных языках программирования
Владеть основными методологиями процессов разработки программного обеспечения
Применять эффективные методы разработки
Оптимизировать программный код с использованием специализированных программных средств
Оценивать оптимальность кода
Оценивать производительность разработки
Использовать методы и средства разработки тестовых сценариев и тестового кода
Использовать методы и технологии тестирования и ревьюирования кода и проектной документации для контроля достижения заданной функциональности и качества в программном проекте
Разрабатывать тестовые сценарии по спецификациям требований
Планировать проведение технических работ
Осуществлять разработку программного обеспечения на современных языках программирования
Использовать методы и технологии использования средств разработки для получения кода с заданной функциональностью и степенью качества
Вносить изменения в работу разработанных программ
Использовать методы и средства разработки тестовых сценариев и тестового кода
Применять эффективные методы проектирования
Владеть методами оценки проекта
Планировать технические работы
Разрабатывать проектную документацию, используя графические языки спецификаций
Вести проектную документацию, используя графические языки спецификаций
Разрабатывать технологическую документацию
Использовать методы и технологии тестирования и ревьюирования кода и проектной документации для контроля достижения заданной функциональности и качества в программном проекте
Читать проектную документацию, разработанную с использованием графических языков спецификаций
Взаимодействовать с представителями заказчика или специалистами в предметной области
Вести деловую переписку
Принимать решения в рамках профессиональной компетентности
Применять инструментарий управления проектом
Разбираться в терминологии заказчика
Проводить презентации
Владеть основными методологиями процессов разработки программного обеспечения
Сопоставлять метрики различных проектов
Оценивать на основе метрик отдельные параметры исполнения проекта
Применять инструментарий управления проектом
Владеть основными методологиями процессов разработки программного обеспечения
Сопоставлять метрики различных проектов
Оценивать на основе метрик отдельные параметры исполнения проекта
Применять инструментарий управления проектом
Управлять персоналом
Планирование проекта
Проведение совещаний
Применять инструментарий управления проектом
Управлять персоналом
Работать в команде
Принимать решения в рамках профессиональной компетентности
Взаимодействовать с представителями заказчика или специалистами в предметной области
Описывать основные проектные решения
Вести деловую переписку
Принимать решения в рамках компетентности
Разбираться в терминологии заказчика
Проводить презентации
Определять основные метрики проекта
Оценивать точности измерения
Владеть основными методологиями процессов разработки программного обеспечения
Оценивать эффективность инструментальных средств
Использовать методы и технологии тестирования и ревьюирования кода и проектной документации для контроля достижения заданной функциональности и качества в программном проекте
Владеть основными методологиями процессов разработки программного обеспечения
Использовать методы и технологии тестирования и ревьюирования кода и проектной документации для контроля достижения заданной функциональности и качества в программном проекте
Оценивать функциональность и качество программного продукта
Планировать изменения на основе проведенной оценки
Анализировать результаты выполненных проектов
Обобщать эффективные технологии и проектные решения
Предлагать эффективные процессные решения для реализации выбранной архитектуры и процесса ее реализации
Планировать выполнение работ по совершенствованию процесса
Применять эффективные методы проектирования
Применять инструментарий управления проектом
Владеть основными методологиями процессов разработки программного обеспечения
Принимать решения в рамках профессиональной компетентности
Подготавливать аргументацию
Обобщать эффективные методы и технологии разработки проектов на основе знаний технологического процесса и опыта разработки проектов и собирать предложения по их совершенствованию. Участвовать в разработке корпоративных и проектных стандартов разработки
Использовать методы и технологии тестирования и ревьюирования кода и проектной документации для контроля достижения заданной функциональности и качества в программном проекте
Разрабатывать проектную документацию, используя графические языки спецификаций
Разрабатывать технологическую документацию
Принимать решения в рамках профессиональной компетентности
Осуществлять наставничество
Осуществлять обучение персонала
Читать документацию и техническую литературу на английском языке
Проводить презентацию
Развивать в себе аккуратность, аналитическое мышление, методичность, ответственность, дисциплинированность, коммуникабельность, креативность, исполнительность, организованность, инициативность
Планировать и организовывать собственную работу
Организовывать самообучение и повышение своей квалификации
Осваивать новые методы и технологии в области информационных систем
Читать профессиональную литературу на английском языке
Письменно и устно излагать свои предложения и полученные результаты для различных аудиторий
Приложение Б: Навыки рядового программиста
Вырабатывать требования к программному обеспечению
Использовать средства и методы разработки требований и спецификаций
Использовать методы и технологии разработки формализованных требований и спецификаций для контроля заказанной функциональности и качества продукта
Использовать методы и технологии разработки формализованных требований и спецификаций для генерации исполняемого кода и тестов по формальным описаниям
Работать с документацией и технической литературой
Владеть технологией реинжиниринга
Владеть методами абстрагирования спецификаций до уровня требований
Владеть основными методами процессов разработки программного обеспечения
Проводить объектно-ориентированный анализ
Проектировать программное обеспечение с использованием специализированных программных пакетов
Владеть основными методами процессов разработки программного обеспечения
Осуществлять объектно-ориентированное проектирование
Оптимизировать программный код с использованием специализированных программных средств
Осуществлять разработку программного обеспечения на современных языках программирования
Осуществлять объектно-ориентированную разработку
Осуществлять отладку программ
Использовать методы и средства разработки тестовых сценариев и тестового кода
Владеть основными методологиями процессов разработки программного обеспечения
Оценивать качество программного кода
Применять эффективные методы разработки
Оптимизировать программный код с использованием специализированных программных средств
Использовать методы и средства разработки тестовых сценариев и тестового кода
Использовать методы и технологии тестирования и ревьюирования кода и проектной документации для контроля достижения заданной функциональности и качества в программном проекте
Использовать методы и средства разработки тестовых сценариев и тестового кода
Осуществлять разработку программного обеспечения на современных языках программирования
Вносить изменения в работу разработанных программ
Использовать методы и технологии использования средств разработки для получения кода с заданной функциональностью и степенью качества
Читать проектную документацию, разработанную с использованием графических языков спецификаций
Владеть основными методами процессов разработки программного обеспечения
Использовать метрики программного проекта для измерения его характеристик
Оценивать функциональность программного обеспечения
Осуществлять наставничество
Осуществлять обучение персонала
Работать с документацией и технической литературой
Читать документацию и техническую литературу на английском языке
Развивать в себе аккуратность, аналитическое мышление, методичность, ответственность, дисциплинированность, коммуникабельность, креативность, исполнительность, организованность, инициативность
Планировать и организовывать собственную работу
Организовывать самообучение и повышение своей квалификации
Осваивать новые методы и технологии в области информационных систем
Читать профессиональную литературу на английском языке
Письменно и устно излагать свои предложения и полученные результаты для различных аудиторий
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[2] Квалификационные требования (профессиональный стандарт) в области информационных технологий
[1] И.Н. Скопин «Основы менеджмента программных проектов»
[2] Квалификационные требования (профессиональный стандарт) в области информационных технологий
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[2] Квалификационные требования (профессиональный стандарт) в области информационных технологий
[2] Квалификационные требования (профессиональный стандарт) в области информационных технологий
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[2] Квалификационные требования (профессиональный стандарт) в области информационных технологий
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[2] Квалификационные требования (профессиональный стандарт) в области информационных технологий
[4] Артем Ваулин, статья «Профессия - тестировщик ПО»
[4] Артем Ваулин, статья «Профессия - тестировщик ПО»
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[5] Наталья Илюшина, статья «Технический писатель: технарь или гуманитарий»
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[6] Статья «Основные формы и методы подбора персонала»
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[3] Эд Салливан «Время - деньги. Создание команды разработчиков программного обеспечения»
[7] Статья «Нестандартные методы подбора персонала»