• Группу редакторов и рецензентов: Барбару Морланд и Дэниель Бёрд из Microsoft Press, а также Габриэль Hoунэст и Нэнси Дэппер из Online Training Solutions, Inc. Они проделали огромную работу по сведению содержимого этой книги в единое целое и внесли значительный вклад в каждый этап работы над ней.
• Фрэнка Гроссмана и Джима Москана, совместно с которыми была основана компания NuMega Technologies, Inc. Они преподали мне уроки разработки замечательных программ и составили компанию я практическом освоении этого искусства. За это я всегда буду им благодарен.
• Команду разработчиков BoundsChecker 3.0, 4.0 и 5.0. Большая часгь материала этой книги взята из их достижений. Ребята, вы — лучшая команда разработчиков из известных мне. И перестаньте, наконец, скандировать моё имя!
• Боба О'Брайена, менеджера NuMega по связям с общественностью, и Клайда Хакима, менеджера по экономическим связям. Вы постоянно привлекали внимание к нашей работе, благодаря вашим усилиям мы выглядели намного лучше, чем мы есть на самом деле. Ваш вклад вместе с остальными участниками группы маркетинга заслуживает такую же благодарность, как и вклад остальных.
• Моих родителей, Эда и Лору Салливан, научивших меня жизни и всему, что в ней важно.
• Мою жену Джейн, сына Мэтью и дочь Xaнну, позволивших мне работать над книгой по ночам и в выходные. Благодаря вашему энтузиазму и поддержке, оказанной в моменты, когда я больше всего нуждался в ней, я мог продолжать работу. Вы — самое драгоценное, что у меня есть, и я каждый день благодарю за это Бога.
Ну наконец-то все!
Я пришёл в 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-программистом, — нужно выпускать качественные программы и делать это вовремя. Вы постоянно находитесь под давлением этой необходимости, вам приходится иметь дело с идентичными проблемами, и вы тоже стремитесь к успеху. В конце концов, когда последний раз ваша группа смогла избежать конфликта задач, накладок с графиком, нехватки ресурсов и других «радостей» типичного цикла разработки ПО?
Пожалуйста, имейте в виду, что эта книга — не исчерпывающее пособие по какому-либо предмету. Книг, посвящённых подробному анализу узких вопросов: набору кадров, технологии разработки ПО, тестированию, инженерной психологии и др. — хватает. Уверен, на собственном опыте вы уже убедились, что во время цикла разработки редко удаётся полностью реализовать какой-либо отдельный этап. Поэтому важно отличать главное от второстепенного. Нужно овладеть основами и не беспокоиться о мелочах. Если можно сэкономить время, силы или средства, экономьте! Но если нет иного способа решить задачу, кроме трудного, все равно беритесь за эту задачу.
С другой стороны, эта книга — не обзор оценок способов решения различных задач. Вы не найдёте здесь критики всех разнообразных стратегий решения конкретных задач. Вместо этого я расскажу вам о наших испытанных методах и покажу, как быстро и эффективно связать их воедино в цикле разработки. Хотя есть ещё целый ряд замечательных идей, ждущих своего воплощения, я сосредоточусь только на подходах, опробованных на деле.