Эд Салливан - Время — деньги. Создание команды разработчиков программного обеспечения
• Группу редакторов и рецензентов: Барбару Морланд и Дэниель Бёрд из 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-программистом, — нужно выпускать качественные программы и делать это вовремя. Вы постоянно находитесь под давлением этой необходимости, вам приходится иметь дело с идентичными проблемами, и вы тоже стремитесь к успеху. В конце концов, когда последний раз ваша группа смогла избежать конфликта задач, накладок с графиком, нехватки ресурсов и других «радостей» типичного цикла разработки ПО?
Пожалуйста, имейте в виду, что эта книга — не исчерпывающее пособие по какому-либо предмету. Книг, посвящённых подробному анализу узких вопросов: набору кадров, технологии разработки ПО, тестированию, инженерной психологии и др. — хватает. Уверен, на собственном опыте вы уже убедились, что во время цикла разработки редко удаётся полностью реализовать какой-либо отдельный этап. Поэтому важно отличать главное от второстепенного. Нужно овладеть основами и не беспокоиться о мелочах. Если можно сэкономить время, силы или средства, экономьте! Но если нет иного способа решить задачу, кроме трудного, все равно беритесь за эту задачу.
С другой стороны, эта книга — не обзор оценок способов решения различных задач. Вы не найдёте здесь критики всех разнообразных стратегий решения конкретных задач. Вместо этого я расскажу вам о наших испытанных методах и покажу, как быстро и эффективно связать их воедино в цикле разработки. Хотя есть ещё целый ряд замечательных идей, ждущих своего воплощения, я сосредоточусь только на подходах, опробованных на деле.