Новинки компьютерных книг ->> Управление программными проектами
Информационный Канал Subscribe.Ru |
Управление программными проектами. Практическое руководство по разработке успешного программного обеспеченияМарри Кантор
ПредисловиеВ одном из известных мультфильмов есть весьма забавный, но безнадежно глупый персонаж по имени "Островолосый менеджер", который работает в компании, разрабатывающей высокие технологии. Помимо своей экстравагантной прически, этот джентльмен знаменит еще и тем, что он не имеет абсолютно никакого представления о том, в чем заключается работа его подчиненных и каковы мотивы их действий. Зрители, конечно, потешаются над этим персонажем, но на самом деле это совсем не смешно. К сожалению, в реальной жизни таких деятелей тоже вполне достаточно, особенно в индустрии информационных технологий. Очень часто эти люди, даже не всегда по своей воле, занимаются управлением IT-проектами или разработкой программных проектов, не имея ни малейшего представления о том, что и как им необходимо делать. Являетесь ли вы таким недотепой-менеджером? Задумайтесь над этим. Посмотрите на себя со стороны. В один прекрасный день вы можете стать персонажем какого-нибудь нового мультфильма, если считаете, что:
Хороший менеджер не ограничивает круг своих обязанностей только вопросами администрирования. Он должен понимать сущность вопросов, над решением которых работает коллектив, динамику работы, используемые инструменты и средства, а также все риски, с которыми связана данная разработка и которые могут воспрепятствовать успешному продвижению продукта. Программное обеспечение некоторым образом отличается от других продуктов.
Эти и другие особенности программного обеспечения требуют от работы менеджеров гораздо большего внимания и усилий. Благодаря этой книге вы не станете недотепой-менеджером. Она поможет глубже заглянуть в сущность программных продуктов, процесса их разработки, используемых для этого инструментов и средств. Прочитав книгу, вы сможете осознанно размышлять над планированием и перепланированием разработки продукта, оценить возможные риски, внести свой вклад в успешную работу всего коллектива. Вы станете настоящим лидером, а не просто "надсмотрщиком", фиксирующим результаты работы, успехи или неудачи отдельных сотрудников. Я искренне рад тому, что автору книги, Мюррею Кентору (Murray Cantor), удалось сделать ее достаточно универсальной. Благодаря этому книга может стать настольной не только для менеджеров программных продуктов, но и для коллективов разработчиков, а также для всех тех, кто приходит в ужас от обилия технического материала, связанного с процессом разработки. В книге представлен материал, достаточный для понимания процесса в целом и для того, чтобы превратить недотеп в грамотных менеджеров, способствующих успешной реализации проектов. Реализацией какого проекта вы бы ни занимались, в этой книге вы получите ценное практическое руководство для своей работы и благодаря ей станете настоящим лидером своего коллектива. Успешного вам чтения! И наилучшие пожелания в реализации последующих IT-проектов.
Филипп Кратчен (Philippe Krutchen), директор отдела разработки корпорации Rational Software ВведениеЭту книгу я написал, главным образом, из-за чувства разочарования и неудовлетворенности. Будучи главным консультантом отдела стратегического планирования компании Rational Software, я обнаружил, что вопросы разработки программного обеспечения во многих организациях вызывают гнетущие ощущения. Как менеджер по разработке программного обеспечения и как технический специалист я точно знаю, что так быть не должно. В большинстве случаев данная проблема связана с неправильным подходом руководства организаций к этому вопросу. А чувство неудовлетворения вызывает тот факт, что возникшую проблему можно очень легко разрешить. Во многих статьях и книгах говорится о том, что вопросам управления разработкой программных продуктов уделяется недостаточно внимания. Мой вклад заключается не в том, чтобы подлить масла в огонь и дополнительно раскритиковать уже имеющиеся недостатки, а наоборот - донести до читателя хорошие новости. Они заключаются в том, что за последние десятилетия ведущими компаниями по разработке программных продуктов достигнуты значительные результаты в этой области. Изучив накопленный положительный опыт, вы сможете стать хорошим руководителем (или исполнителем) в любой организации, занимающейся разработкой программного обеспечения. Одной из причин, по которым я написал эту книгу, является растущая необходимость повышения навыков организации производства программных продуктов. Развивается не только "программный" бизнес как таковой, многие компании в различных областях экономики начинают осознавать, что использование программного обеспечения позволяет добиться им более высоких темпов роста. Рассмотрим, к примеру, компанию, занимающуюся разработкой медицинских ультразвуковых детекторов, позволяющих рассматривать плод в чреве матери. Существуют два подхода к решению данного вопроса.
В последнее время это явление получило широкое распространение - производители аппаратного обеспечения начинают понимать, что ценность их продукции заключается именно в программном обеспечении. Это явление оказало влияние и на разработку автомобильных систем (всевозможные "черные ящики", спрятанные в капоте автомобиля, устройства управления двигателем и т.п.), телефонного оборудования (системные устройства офисных АТС, сотовые телефоны), игрушек, развлекательных устройств и многих других приборов. Однажды я обедал с менеджером одной из ведущих компаний по производству запасных частей к автомобилям. В частности, его отдел занимался выпуском сидений. Я попросил его назвать самую большую проблему, с которой ему приходится сталкиваться на работе. И он ответил, что такой проблемой является программное обеспечение, встроенное в высококлассные сиденья и предназначенное для запоминания наиболее распространенных положений водителя машины. Для кого предназначена эта книгаЗанимаясь написанием этой книги, я имел в виду три категории читателей, каждая из которых может воспринимать ее по-разному:
Читатели с техническим образованием откроют новые перспективы знакомых вопросов. Они получат представление о том, как осуществляется техническое руководство, и узнают, чего можно ожидать от своих руководителей. Линейные менеджеры поймут и, возможно, откроют для себя новые, более эффективные способы реализации своих руководящих функций. Руководители проектов по разработке программного обеспечения могут открыть для себя новые способы повышения качества работы. Структура книгиДанная книга написана на основе предположения о том, что компетентный руководитель по разработке программного обеспечения должен обладать глубоким пониманием сущности качественного программного обеспечения, наиболее эффективных способов его практического достижения и надлежащим стилем руководства. Вследствие такого допущения книга разделена на следующие части.
Лейтмотивом каждой главы является применение изложенной информации к выполнению руководящих задач. Хотя читателям рекомендуется ознакомиться со всем материалом, представленным в книге, для некоторых из них особую ценность будут представлять не все главы, а только некоторые из них. Главы 1 "Качественное программное обеспечение" и 2 "Архитектура программного обеспечения" посвящены собственно программному обеспечению и будут особенно полезны читателям, имеющим техническое образование. Прочитав главы 3-5, вы сможете глубже понять сущность процесса разработки. Эти главы по достоинству смогут оценить читатели, знакомые с техническими аспектами, но являющиеся новичками в вопросах руководства подобными проектами. Однако представленный материал будет не менее полезен многим опытным руководителям, заинтересованным в повышении конкурентоспособности своих организаций. Ну а глава 6 "Управление и руководство" должна представлять интерес для всех читателей. Теперь несколько слов о приложении. Я включил в книгу представленный в нем материал в надежде на то, что ознакомившись с ним, многие руководители увидят, какие ошибки они допускали в своей работе и что нужно делать, чтобы впредь избегать их. В книге намеренно представлено небольшое количество материала, а больше рассматривается картина в целом. Дело в том, что глубокое рассмотрение некоторых из представленных тем требует написания отдельных фолиантов. Если некоторых читателей заинтересует какой-либо из затронутых вопросов, они могут ознакомиться с ним, обратившись к списку справочной литературы, представленному в конце каждой главы. Кроме того, эти списки собраны и представлены вместе в конце книги. БлагодарностиЭта книга удалась благодаря вкладу множества людей: как критиков и обозревателей, так и тех, кто просто поделился своими мыслями и принял участие в обсуждениях. Однако особую благодарность я хотел бы выразить Уолкеру Ройсу (Walker Royce), Филиппу Кратчену (Philippe Krutchen), Уильяму Лорки (William Lorchie), Роберту Браунсворду (Robert Brownsword), Майклу Дрекслеру (Michael Drexler), Девиду Любанко (David Lubanko) и двум анонимным критикам за их искренние и конструктивные комментарии. Эта книга - не о программировании, не об объектно-ориентированной методологии и даже не об управлении проектами разработки программного обеспечения. На самом деле она посвящена теме грамотного руководства организацией, занимающейся вышеупомянутыми проектами. Все эти вопросы будут вкратце рассмотрены - но в основном с точки зрения руководящего персонала. Джон Коттер (John Kotter) - признанный специалист в данной области - определяет руководство как процесс установления направления развития, а также организации и мотивации работы коллектива сотрудников. С другой стороны, понятие менеджмента можно определить как планирование, организацию, кадровое обеспечение, а также контроль и решение возникающих рабочих вопросов [Коттер, 1996]. Не каждый руководитель является менеджером и наоборот. Конечно, для организации работы коллектива важно понимать задачи, стоящие перед менеджером, но одного этого аспекта явно недостаточно для осуществления эффективного руководства. В данной книге вопросы менеджмента затронуты только в области, касающейся вопросов лидерства и руководства. Конкурентоспособная организация программного обеспеченияПрограммное обеспечение является основным фондом не только для высокотехнологичных фирм, но и для тех фирм, которые занимаются "старыми", традиционными видами экономической деятельности. Например, один ведущий автомобильный концерн, имея безупречную репутацию в области производства высококачественных автомобилей, теряет миллионы долларов из-за недостатка хороших систем контроля, прогнозирования и распределения своей продукции после отправки с завода. Естественно, этот концерн теряет больше средств на выплате гарантийных затрат своим поставщикам. Если бы для выполнения этих задач концерн смог приобрести или разработать хорошее программное обеспечение, стоимость его акций сразу бы возросла. На мгновение представьте себе, насколько изменилась работа руководителя предприятия за последнее столетие. В 1905 году задачи директора заключались в найме самых лучших рабочих или мастеров, запуске предприятия и периодической проверке качества работы персонала. В 1920 году директор должен был организовать работу конвейера, функционирующего с максимальной производительностью. Для этого он нанимал неквалифицированных рабочих, выполняющих очень ограниченное количество задач, так как успех предприятия зависел от организации процесса, а не от квалификации персонала. Современный директор должен руководить коллективом профессионалов, в состав которого входят инженеры-технологи, специалисты по системному анализу, исследованию операций и многие другие. Руководитель должен понимать, как организовать, автоматизировать и приводить в соответствие потребностям процессы производства, цепочки поставок, конфигурационного и товарного управления. Он должен ежедневно оценивать происходящие изменения в объеме и качестве проду До недавнего времени вопросы разработки программного обеспечения находились на уровне развития производства в 1905 или 1920 году. Этот процесс практически не был автоматизирован. Руководители фирм нанимали лучших специалистов, поручали каждому из них определенный участок работы и надеялись на лучшее. Многие компании по разработке программного обеспечения до сих пор работают таким образом. Одним из самых важных аспектов своей работы они провозглашают "доверие к людям". Да, людям нужно доверять, но для успешной работы компании этого недостаточно. Другие руководители организовывают работу своей компании путем определения последовательности задач и ее поэтапного выполнения. Эти директора надеются, что процесс сам по себе обеспечит средства для разработки программного обеспечения. Они считают, что самым важным является понимание поставленных требований, а разработка программного обеспечения является вопросом соединения отдельных участков общей задачи. Такие директора удивляются, почему на практике их проекты оч Будучи руководителем компании по разработке программного обеспечения, вы можете не знать, как пишутся программные коды, но вам необходимо четко понимать, как работает ваша организация и что необходимо для ее успешного функционирования. Гораздо лучше быть экспертом в своей роли руководителя, научиться общаться с людьми, понимать, что они делают и с какими трудностями сталкиваются. Изобретение по требованиюПроцессы разработки программного обеспечения и производства промышленных товаров имеют несколько основных общих особенностей. Оба этих процесса требуют:
Основное отличие между этими процессами заключается в необходимости творческой работы. Разработку программного обеспечения иногда характеризуют как изобретение по требованию. Коллектив должен разработать новую программу, обладающую уникальными функциями, но при этом работа должна быть выполнена в срок и находиться в пределах заданного бюджета. В связи с необходимостью выполнения творческих задач технологический процесс и экономическая модель разработки программного обеспечения существенно отличаются от процессов промышленного производства или строительных проектов. Фактически разработка программного обеспечения сродни некоторым другим отраслям, сочетающим творческий подход и деловую дисциплину, таким, как, например, разработка потребительских товаров или, возможно, кинематограф. Великолепный пример приведен в статье Карла Себбега (Karl Sabbagh) Twenty-First-Century Jet (Реактивный самолет XXI века), посвященной разработке лайнера Boeing 777. Можно найти много общего в процессе разработки (не путать с производством) самолета и проектах по разработке программного обеспечения. Планка требований поднята очень высоко. Современные средства и процессы разработки программного обеспечения позволяют писать в высшей степени сложные программы. Сегодня в программе, состоящей из миллиона строк кодов, как новых, так и повторно используемых, нет ничего особенного. В современной жизни нас окружает огромное количество технически успешных программных разработок.
Кроме того, разработка программного кода становится все более и более производительной. В восьмидесятых годах среднестатистический программист в процессе работы над каким-либо проектом создавал 1500-2000 строк протестированного кода. На сегодняшний день различные исследования и мой собственный опыт показывают, что эту производительность можно увеличить ориентировочно в десять раз. Средства разработки, позволяющие создать конкурентоспособное программное обеспечение, в настоящее время доступны каждой компании. Главным условием успешной реализации планов является эффективное руководство. Успешный руководительВ данной книге мы постараемся изложить основы, необходимые для того, чтобы стать успешным руководителем организации, занимающейся разработкой программного обеспечения. Первый шаг заключается в понимании следующей задачи. Успешная организация, занимающаяся разработкой программного обеспечения, создает и выполняет задачи поставки качественных программ, отвечающих требованиям акционеров и укладывающихся в определенные временные и финансовые рамки. Приведенное определение успеха несколько отличается от других. Иногда успех проекта определяют как изначально планируемую возможность его реализации в пределах определенного графика и сметы. Наше определение является более прагматичным: значение имеет только конечный результат, а не соблюдение плана. Данное определение сосредоточено на руководстве организацией, проекты которой имеют успешный конечный результат. Успех коллектива и его руководителей заключается в своевременной поставке системы, созданной в соответствии с запланированной сметой, отвечающей требованиям потребителя и работающей в заданных условиях. Тот факт, что конечный продукт не обладает всеми изначально запланированными возможностями, не имеет особого значения, если это удовлетворяет руководство компании, отделы продажи и маркетинга и потребителей. Для практического применения данного определения руководитель должен понимать акционеров и их нужды, атрибуты качественного программного обеспечения и пути реализации проекта в пределах временных и финансовых рамок. Кроме того, руководитель должен понимать, как преодолевать неизбежные трудности, возникающие при разработке продукта. При этом должны быть удовлетворены нужды и желания реальных пользователей. Грамотное руководство - основа высокого морального состояния коллектива Хорошая работа и успешный бизнес являются звеньями одной цепи. Наличие первоклассного персонала является залогом конкурентоспособности фирмы. В свою очередь, чтобы удержать самых лучших специалистов, требуется иметь хорошего руководителя. С другой стороны, плохое руководство приводит к неустойчивому моральному состоянию и утечке ключевых сотрудников. В свое время я был разработчиком программного обеспечения, техническим руководителем, разработчиком структуры системы программного обеспечения, менеджером и руководителем проектов. В настоящее время моя работа позволяет оценивать деятельность многих организаций, занимающихся разработкой программного обеспечения. Я на собственном опыте убедился, какой вред может принести плохое управление разработкой программных продуктов. Разработчики бывают часто разочарованы и приходят в уныние, чувствуя, что большинство приложенных ими усилий пропадает понапрасну, что им ставят неразумные сроки выполнения работ и что руководители часто вообще не понимают, в чем заключается Процесс разработки программного обеспечения нельзя лишать человечности. Я принимал участие в разработке кодов как для коммерческих, так и для заказных проектов. Когда в процессе реализации проекта соблюдаются изложенные в данной книге принципы и технологии, коллектив достигает успеха без душевных мук и физического изнеможения, столь распространенных как в прошлое, так и в настоящее время. Профессиональное удовлетворениеРуководство организацией, занимающейся поставкой программного обеспечения, - зачастую совершенно незавидная роль. Это особенно справедливо, когда руководитель незнаком с принципами, необходимыми для успешного управления работой организации, занимающейся разработкой программного обеспечения. Такой руководитель обнаруживает, что программное обеспечение является ключевым моментом успешной деятельности компании, но часто это происходит либо в самый последний момент, либо вообще слишком поздно. В таких случаях руководство компании начинает паниковать, а персонал - возмущаться. Компания так и "живет": от одного кризиса до другого. Многие менеджеры даже имеют два комплекта отчетности: один - для формальных отчетов о работе, а другой - для отслеживания реального состояния дел. Такой стиль работы не приносит морального удовлетворения и не способствует продвижению по служебной лестнице. Никогда
не устану повторять: такого не должно происходить. Основываясь на материале и средствах, описанных в данной книге, функции
|
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||