Роль людей на этапе проектирования
Главное, чем должны обладать люди, участвующие в проекте на этом этапе — это богатый практический опыт подобной деятельности. Руководитель проекта, архитектор, системный аналитик — это такие роли, на которые вряд ли может претендовать недавний выпускник вуза или просто хороший программист. Способность чувствовать сложность проекта в условиях отсутствия полной информации и проектировать такую архитектуру, которая в дальнейшем не станет обузой при изменениях, появляется только с опытом. В нашей компании достаточно специалистов такого уровня, за плечами у которых уже не один успешный проект.
Роль людей на этапе разработки
На данном этапе главную роль играют разработчики и аналитики, тесно взаимодействующие между собой. Наши разработчики — это не бездумные «кодеры», а люди с аналитическим складом ума, способные выявить и уточнить неясные моменты в постановке, предложить альтернативное решение. А наши аналитики не только выясняют пожелания заказчика и участвуют в создании проекта ИТ-системы, но также тестируют и демонстрируют разработанный функционал. Это служит для них дополнительной мотивацией и повышает качество работы.
Роль людей на этапе внедрения
При внедрении очень важно, чтобы проектная группа работала в тесном взаимодействии и имела общее понимание решаемых задач. Это помогает получать быструю реакцию на мелкие несоответствия и недоработки ИТ-системы, неизбежные при любом внедрении. В наших проектах аналитики, которые начинали работу над системой, общаясь с заказчиком и выясняя его пожелания, в дальнейшем ответственны за внедрение и принимают в нем самое активное участие. Мы можем произвести внедрение с минимальным участием заказчика, что позволяет уменьшить трудозатраты. Наши специалисты, глубоко погруженные в бизнес-процессы предприятия, способны провести полноценное обучение как представителей заказчика, так и непосредственных пользователей системы.
Роль людей на этапе сопровождения и развития
Чаще всего в команду сопровождения и развития входят специалисты, которые участвовали в создании ИТ-системы и внедряли ее. Потому в нашей службе поддержки работают люди, которые хорошо представляют себе пользователя системы и то, как он в ней работает. Это помогает им понять проблемы и ошибки, даже если их описание составлено в терминах пользователя. Глубокие знания системы дают нашим специалистам возможность проводить очень быструю диагностику, устранять причины обнаруженных ошибок и оптимизировать работу пользователей в системе.
Значение процессов на этапе проектирования
На данном этапе проекта проводятся детально спланированные интервью и обсуждения с заинтересованными лицами и специалистами из разных подразделений компании-заказчика, в результате которых постепенно вырисовывается концепция проекта — его цели и задачи, границы и ключевые требования, сроки и бюджет. Следующий шаг — проектирование архитектуры системы в крупных блоках, которое осуществляется ИТ-специалистами, обладающими концептуальным мышлением, совместно с заказчиком.
Значение процессов на этапе разработки
Несмотря на большое разнообразие методологий разработки, ни одну из них нельзя в чистом виде применить к конкретному проекту, имеющему свой неповторимый контекст — заказчика, задачу, команду и многие другие факторы. Мы изучаем интересные новшества и отбираем то, что оказывается ценным для нашей компании и наших проектов. Отдельные практики взяты нами из Agile-методологий. Благодаря итерационному подходу к разработке заказчик каждые две недели видит, как продвигается проект, помогает определить наиболее приоритетные задачи на следующую итерацию и подтверждает, что продукт развивается в правильном направлении.
Значение процессов на этапе внедрения
Работа с непосредственными пользователями позволяет нам быстро реагировать на любые неудобства в работе с системой и все обнаруженные ошибки и недочеты. В случае изменения бизнес-процессов заказчика на этапе внедрения мы разрабатываем новый функционал. Применение гибких методологий разработки позволяет нам своевременно корректировать свои планы и заниматься самыми приоритетными на текущий момент задачами. Очень важными мы считаем обязательные совещания с заказчиком по итогам внедрения каждого «куска» функционала или модуля. Эти собрания позволяют уточнять наши планы и оптимизировать процесс внедрения.
Значение процессов на этапе сопровождения и развития
Мы понимаем, как важно представителям заказчика поддерживать контакт с ключевыми проектировщиками и разработчиками системы, и даем им такую возможность, не ограничивая их общением только с выделенными специалистами технической поддержки. Возможен любой удобный заказчику режим работы службы поддержки — от нескольких часов до режима 24/7. Наша компания готова передать значительную часть работ по сопровождению заказчику, оставив за собой решение задач по развитию системы. Кроме своевременной реализации пожеланий клиента, мы постоянно проводим проверку состояния ИТ-системы и в случае необходимости предлагаем доработки и изменения, нацеленные на предупреждение технологических рисков.
Важность технологий на этапе проектирования
Самые эффективные инструменты на этапе обсуждения — это ручка и блокнот, а еще лучше — маркерная доска. Для сохранения огромного количества информации, полученной в ходе совещаний по проекту, мы используем современные средства управления знаниями, подобные тем, что используются в Википедии. Тексты и схемы с историей редактирования доступны всем участникам проекта как со стороны заказчика, так и со стороны исполнителя. На этапе проектирования мы активно используем простые и понятные графические схемы (прежде всего, диаграммы), чтобы стороны смогли понять друг друга и договориться.
Важность технологий на этапе разработки
Современные информационные системы строятся как сложные структуры с несколькими уровнями организации. На каждом уровне работает свой класс технологий, образуя для всего решения так называемый технологический стек. Типовые прикладные задачи обычно наиболее эффективно решаются инструментами с «верхушки» технологического стека, средствами той или иной прикладной платформы. Однако в случае нестандартных задач сама прикладная платформа может стать непреодолимым ограничением. Тогда необходимо или изменять платформу, или решать задачу на более низком уровне, например, на уровне языка программирования общего назначения. Решать такого рода проблемы нам помогает создание собственных платформ для приложений. Если нужно реализовать «нетиповое» требование или внести изменения в саму платформу, никто не сможет сделать это лучше, чем ее создатели. Кроме того, при разработке высокоуровневых технологий мы следуем принципу открытости нижележащих уровней: разработчик всегда может реализовать нестандартное требование, выйдя за границы возможностей прикладной платформы и обратившись к низкоуровневым базовым технологиям.
Важность технологий на этапе внедрения
Внедрение ИТ-системы подразумевает ее встраивание в существующее программное окружение, иногда с полной заменой старого ПО. При этом нередки случаи, когда бизнес-процессы заказчика, обеспечиваемые ИТ-системой, не могут быть остановлены ни на день. Для работы в таких условиях мы применяем собственную технологию бережного внедрения. При этом мы максимально полно тестируем взаимодействие внедряемой системы со всем существующим ПО. Кроме того, мы тщательно тестируем все правки функционала, сопровождающие процесс внедрения, и проводим регрессионное тестирование всей системы.
Важность технологий на этапе сопровождения и развития
Мы всегда готовы к общению с заказчиком и решению его проблем. Все запросы и обнаруженные недочеты фиксируются в системе ведения дел (Bugzilla или любой другой по желанию клиента). Как правило, встроенные системы мониторинга помогают нам обнаружить проблему раньше, чем ее увидят пользователи. Наши системы мониторинга могут быть переданы специалистам заказчика, чтобы они могли сами осуществлять поддержку. Непрерывная интеграция и постоянное тестирование системы предотвращают возникновение новых ошибок в процессе исправления старых или при добавлении нового функционала.