Я пришёл в NuMega Technologies летом 1994 года. Работая над BoundsChecker, продуктом для обнаружения ошибок в программах для Windows, я совмещал должности руководителя разработки и менеджера по маркетингу продукта. Тогда в NuMega было всего лишь 14 сотрудников: кроме двух основателей компании — три программиста, руководитель административной службы, четверо специалистов по сбыту, один администратор в офисе, один посыльный, три специалиста по технической поддержке и менеджер по маркетингу. Мы были небольшой компанией, по всем статьям подходящей под определение начинающей. Каждому приходилось совмещать несколько должностей и выполнять массу обязанностей. Однако, несмотря на небольшие размеры NuMega, у нас были большие планы и надежды. Мы твёрдо намеревались создавать замечательные программы и хотели собрать элитную группу специалистов, способную создавать лучшие в мире инструменты для разработки ПО.

Спустя несколько лет, благодаря заботам основателей и усилиям первоклассной группы менеджеров, компания выросла: теперь в ней больше 150 сотрудников. Вместе с компанией рос и я, дойдя до поста начальника отдела разработки. В первые четыре года мы создали шесть основных выпусков наших приоритетных продуктов, BoundsChecker и SoftICE, приобрели два новых продукта и ещё четыре создали для внутреннего применения. Почти все эти продукты были выпущены в расчётный срок. Объём прибылей быстро рос, и компания стала очень рентабельной. Наши продукты хорошо принимали, и они смогли завоевать ряд отраслевых наград:

2000 г.

• Приз «Лучший компонент или утилита для обеспечения качества ПО», присуждаемый Vbxtra за DevPartner® for Visual Basic.

• Приз «На гребне волны», присуждаемый Рrogammer’s Paradise, в номинации «Самый продаваемый инструмент для тестирования и отладки» за BoundsChecker VC++ Edition.

• Приз «Выбор читателя» журнала VBPJ за CodeReview™ 6.1.

• Приз «Выбор читателя» за FailSafe™ 5.21 журнала VBPJ.

1999 г.

• Журнал Software Developmem Magazine присудил DevPartner Studio приз Jolt Cola «За отличное качество продукта».

• DevPartner Studio заслужил 5 звёздочек в рейтинге Software Development.

• Java Developer's Journal присудил приз «JDJ World Class Award» программе DevPartner for Java™.

• SmartCheck 6.01 получил приз «Выбор читателя» журнала VBPJ.

• CodeReview 6.1 получил приз «Выбор читателя», присуждаемый журналом VBPJ.

• DevPartner 6.1 for Visual Basic получает приз «Выбор читателя» журнала VBPJ.

• Приз «Выбор читателя» присуждается журналом VBPJ программе TrueTime®

1998 г.

• DevPartner for Visual Basic получает от Vbxtras приз «Thunderbolt».

• SmartCheck и TrueTime объявлены «Выбором редакции» журнала Visual Basic Programmer's Journal.

• SmartCheck и TrueTime получают приз «Выбор читателя» журнала Visual Basic Programmer's Journal.

• DevPartner for Visual Basic получает от SoftwareDevelopment приз Jolt Cola «За производительность».

1997 г.

• BoundsChecker становится первым экспонатом в зале славы «Jolt Hall of Fame». Программа у всех на устах, как завоевавшая многочисленные награды за высокую производительность.

• TrueTime Visual Basic Edition завоевала на выставке Comdex приз «Best of Show» журнала BYTE.

• Еженедельник PC Week присуждает приз «Выбор аналитика» программе SmartCheck

• BoundsChecker второй год подряд получает от журнала Visual Basic Programmer’s Journal приз «Выбор читателя».

1996 г.

• Журнал Windows Tech Journal присуждает приз «Star Tech» программе CodeReview™ как одному из наиболее значительных инструментов для разработки ПО.

• BoundsChecker получает приз журнала PC Magazine «Выбор редакции», опередив конкурентов по многим параметрам.

• BoundsChecker для Windows NT получает приз «За лучший и наиболее технически совершенный инструмент для разработки» от журнала PC Magazine.

• BoundsChecker получает приз Jolt Cola «За высокую производительность и отличное качество» на конференции Software Development West'96.

• BoundsChecker становится обладателем приза «Выбор читателя» журнала Visual Basic Programmer’s Journal.

1995 г.

• Windows Tech Journal присуждает свой приз «Star Tech» программе BoundsChecker, как одному из наиболее значительных инструментов для разработки ПО 1995 года.

• BoundsChecker для Windows NT получает приз Jolt Cola «За отличное качество продукта» на конференции Software Development West'95.

1994 г.

• BoundsChecker для Windows получает приз Jolt Cola «За отличное качество продукта» на конференции Software Development West'95.

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

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

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

Думаю, что среда начинающей компании практически тождественна небольшим и средним проектам (в которых занято до 30 человек). Мала или велика ваша организация, занимается она Интернет-услугами или информационными технологиями, являетесь вы гуру Ассемблера или Web-программистом, — нужно выпускать качественные программы и делать это вовремя. Вы постоянно находитесь под давлением этой необходимости, вам приходится иметь дело с идентичными проблемами, и вы тоже стремитесь к успеху. В конце концов, когда последний раз ваша группа смогла избежать конфликта задач, накладок с графиком, нехватки ресурсов и других «радостей» типичного цикла разработки ПО?

Пожалуйста, имейте в виду, что эта книга — не исчерпывающее пособие по какому-либо предмету. Книг, посвящённых подробному анализу узких вопросов: набору кадров, технологии разработки ПО, тестированию, инженерной психологии и др. — хватает. Уверен, на собственном опыте вы уже убедились, что во время цикла разработки редко удаётся полностью реализовать какой-либо отдельный этап. Поэтому важно отличать главное от второстепенного. Нужно овладеть основами и не беспокоиться о мелочах. Если можно сэкономить время, силы или средства, экономьте! Но если нет иного способа решить задачу, кроме трудного, все равно беритесь за эту задачу.

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

Как пользоваться этой книгой

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

Для кого предназначена эта книга

Если вы занимаете (или надеетесь занять) руководящую должность в проекте по созданию ПО, то эта книга — для вас. К целевой аудитории книги также относятся:

• верхние эшелоны управления техническими подразделениями (вице-президенты компаний, начальники отделов, руководители групп);

• руководители проектов;

• ведущие разработчики;

• архитекторы ПО;

• менеджеры продуктов;

• менеджеры групп технических писателей;

• ведущие технические писатели;

• менеджеры групп тестировщиков;

• ведущие тестировщики;

• менеджеры по эргономике;

• ведущие специалисты по эргономике;

• менеджеры групп технологов по разработке ПО;

• ведущие технологи по разработке ПО.

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

Структура книги

В книге три части, и в каждой описан один из критических аспектов управления созданием ПО.

Часть 1. Люди, организация и методы

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

• кадры — как найти и удержать нужных специалистов;

• организацию — какова роль и обязанности каждого участника группы;

• инструментарии — ключевые инструменты для разработки и способы их использования;

• тестирование — как вести тестирование параллельно с разработкой;

• технологию разработки — как поддерживать целостность программы и обеспечивать её пригодность к использованию на протяжении цикла разработки.

Часть 2. Формулирование и планирование проекта

Если вы всерьёз намерены выпустить программу в срок, то прежде, чем приступать к её созданию, нужно понять, что и как должно быть создано. Даже самым талантливым людям требуется иметь представление о планируемых результатах проекта, намеченных для использования технологиях и конечном облике продукта. В связи с этим нужно:

• сформулировать основные требования к проекту:

• определить технологии, которые лягут в основу проекта:

• создать модель использования проекта.

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

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

Часть 3. Исполнение проекта

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

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

• исполнение — как не дать проекту сбиться с курса, обнаруживая и решая проблемы как можно раньше;

• бета-тёсmирование — как с помощью бета-тестирования получать из внешнего мира отзывы о программе и расширить возможности тестирования;

• работа с кандидатами на выпуск — как управлять заключительными этапами проекта и обеспечить готовность продукта;

• закрытие проекта — что это такое, зачем оно нужно и как его провести.

Дополнительная информация

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

Кроме того, по ходу изложения есть врезки под заголовком «Из собственного опыта», иллюстрирующие применение некоторых принципов и концепций в компании NuMega. Эти врезки позволили мне кое-что прокомментировать, рассказать несколько интересных, а порой анекдотичных историй, благодаря которым разработка ПО является таким весёлым занятием.

Как со мной связаться

Я бы хотел услышать ваши соображения и комментарии по поводу этой книги. Кроме того, было бы интересно, если б читатели поделились своими уроками, которые они извлекли из собственного опыта, а также оригинальными способами создания программ в срок. Пишите мне по адресу: [email protected]