Время — деньги. Создание команды разработчиков программного обеспечения
Шрифт:
Из собственного опыта
Отладчик ядра SoftICE, созданный NuMega, был хитом на рынке программ для 16-разрядных платформ Microsoft DOS и Microsoft Windows. Нам даже без особых проблем удалось заставить его работать в Windows 95. Однако рынок неуклонно двигался к Windows NT, что вынудило нас заняться адаптацией SoftICE для работы с этой ОС, иначе рост прибылей нашей компании неизбежно снизился бы. Но эта задача казалась просто невыполнимой: новая система управлением виртуальной памятью Windows NT делала реализацию многих функций SoftICE чрезвычайно затруднительной и требовала от большинства участников группы разработчиков SoftICE знания недокументированных внутренних механизмов
К счастью, среди нас оказался Фрэнк Гроссман, у которого хватило веры в осуществимость этой идеи и желания, чтобы провести соответствующие исследования. Он работал над этой проблемой день и ночь в течение двух недель, пока не создал довольно простой прототип, на примере которого смог продемонстрировать основные методики, необходимые для поддержки Windows NT. Ему достаточно было показать этот прототип группе, и дело было сделано: все поверили, что заставить SoftICE работать в Windows NT всё-таки можно. На реализацию сложных функций программы ушёл почти год, но в итоге мы создали продукт, в появление которого никто не верил. Проведённые исследования позволили нам не только обеспечить стремительный рост потока прибылей, но и воздвигнуть мощный барьер на пути у конкурентов, а полученные знания мы теперь можем использовать при разработке других продуктов.
Ниже описаны разные модели нахождения оптимального баланса между исследованиями и разработкой. Первая требует наименьшей затраты ресурсов, последняя — наибольшей. Если ваша компания невелика или просто не хватает ресурсов. можно начать с первой модели, по ходу дела она. может перерасти в другие.
• Проведение исследований во время работы над неосновными выпусками программы
Программные продукты развиваются циклически: сначала выходит основной выпуск, затем появляется ряд неосновных. Выход неосновного выпуска можно охарактеризовать как тактический шаг, т.е. в неосновных выпусках реализованы дополнительные функции и усовершенствования, улучшающие и расширяющие возможности продукта, уже присутствующего на рынке. Неосновные выпуски обычно появляются быстро, а их создание сопровождается меньшим риском, нежели создание основного выпуска. В силу своих особенностей неосновной выпуск — замечательный способ дать некоторым из ведущих разработчиков передышку от рутинных задач, во время которой у них есть шанс заняться исследовательской работой. Общее требование: к концу работы над неосновным выпуском исследование надо закончить.
Помимо самой возможности проведения исследований, совмещение исследований и работы над неосновными выпусками даёт участникам группы целый ряд других преимуществ. Ведущие разработчики могут перевести дух и заняться другими проблемами. Это реальная возможность дать главным «дарованиям» расслабиться, чтобы они не «перегорели», а другим членам коллектива — возможность выйти в лидеры. Взаимное обучение и возможность роста талантливых участников критичны для устранения текучести кадров и непрерывного роста мастерства группы.
• Дайте проявить себя каждому ведущему разработчику
Если вам посчастливилось иметь в группе двух и более способных ведущих программистов, пусть они сменяют друг друга на посту ведущего разработчика от выпуска к выпуску. В то время как один из них работает над новым выпуском, остальные могут заняться исследованием новых технологий и поиском новых идей. Разработчик, до этого занимавшийся исследованиями, несёт в группу энтузиазм и знания, накопленные за время исследований. Это пробуждает у других участников группы желание продолжить исследовательскую работу.
• Кандидатуры ведущих исследователей. Если сложность, размеры и число продуктов растут, то весьма вероятно, что вскоре понадобится провести ряд исследований. При этом надо подумать о найме исследователей или о переводе на исследовательскую работу некоторых специалистов высокого
уровня. У последних, помимо профессиональной этики и способности к независимому мышлению и действию, должны быть развитые навыки общения. Таких людей непременно нужно включить в команду, разрабатывающую продукт, хотя не обязательно, чтоб они принимали участие в её работе ежедневно. Такое разделение обязанностей может дать замечательные результаты, но может стать и причиной отчуждения между командой разработчиков и исследователями. Ответственность за то, чтобы этого не произошло, целиком и полностью лежит на ведущих исследователях и менеджере проекта. Регулярное общение, как формальное, так и неформальное, снижает вероятность возникновения барьеров между группами.Остаётся обсудить, на чём сосредоточить усилия исследователей. Если работа идёт в среде с небольшими ресурсами, позаботьтесь о том, чтобы шансы на успех исследовательской работы были максимальны. Следует разумно распределить усилия исследователей. В общем случае приоритетными являются следующие направления:
• Анализ тенденций и перспектив рынка
Каждые 3-4 года на рынке появляются новые, более совершенные технологии. Независимо от того, связаны ли новшества с графическим интерфейсом пользователя, клиент-серверными продуктами, моделями компонентных объектов или Интернетом, всегда следует идти в ногу с фундаментальными нововведениями и стараться, чтобы большие перемены не оставили вас позади. Направляйте исследования на поиск, анализ и мониторинг серьёзных изменений на рынке. Однако не заходите в своих исканиях так далеко, чтобы потерять связь с реальностью.
• Отбор новых идей
Новые идеи, связанные как с продуктами, так и с технологиями, могут приходить в любое время и из любых источников — и внутренних, и внешних. Одни идеи могут стоить миллионы, в то время как другие могут быть лишь напрасной тратой времени. У исследователей должен быть навык быстрого отбора хороших идей и отсеивания плохих.
• Анализ инноваций и направлений работы конкурентов
Одна из самых важных областей исследования — анализ инноваций и направлений работы конкурентов. Чтобы успешно состязаться с ними, надо понимать их технологии, знать их сильные и слабые стороны.
По завершении исследовательского проекта или при смене приоритетов исследования важно задокументировать результаты и сделать их доступными коллективу. Необходимо довести до сведения группы все без исключения результаты исследований, как положительные, так и отрицательные. Если исследовательский проект действительно обладает недюжинным потенциалом, было бы разумно создать прототип и продемонстрировать группе его возможности, пояснив принцип работы.
Из собственного опыта
К концу работы над BoundsChecker 3.0 энтузиазм нашего ведущего разработчика изрядно поубавился: проект отнял много времени и сил, и необходимость перемен была очевидна каждому его участнику. В это время возникла ещё одна задача: нужно было разобраться, что может дать новая технология от Microsoft под названием СОМ для наших продуктов. СОМ привлекла большое внимание, её даже считали «дорогой в будущее». Однако мы смутно представляли себе её суть, поэтому решено было взяться за обе проблемы одновременно.
В то время как остальная часть группы работала над следующим (неосновным) выпуском продукта, ведущий разработчик уделял все своё время изучению внутренней организации СОМ и моделированию новых функций BoundsChecker. Спустя три месяца, когда новая версия была практически завершена, главный разработчик был готов присоединиться к работе над BoundsChecker 4.0. Ему удалось не только восстановить свои силы, но и обучить остальных участников группы принципам работы с СОМ и показать им рабочие прототипы новых функций. Так что для начала наше положение было весьма неплохим: вовсю шли поставки BoundsChecker 3.0, только что закончена разработка версии 3.1, а мы уже обладали фундаментальной технологией для следующего выпуска программы.