Показаны сообщения с ярлыком Управление проектами. Показать все сообщения
Показаны сообщения с ярлыком Управление проектами. Показать все сообщения

воскресенье, 7 февраля 2016 г.

О человеческом оптимизме

Я тут читаю забавную книгу под названием «Сила воли. Как развить и укрепить». Несмотря на желтоватое название в ней собраны весьма интересные советы и результаты исследований британских и не очень ученых.

Одно из исследователей меня особенно заинтересовало, поскольку приоткрывает «оптимистическую» природу человека, которую, так часто приписывают программистом. Считается, что неточность оценок связано с оптимизмом программистов и что это является своего рода проф. деформацией, но это не так. Вот описание этого исследования:

--------

Психологи доказали: мы ошибочно полагаем, что в будущем нас ждет больше свободного времени, нежели сегодня. Эту проделку разума удачно подловили два профессора маркетинга. Их заинтриговало, что потребители здорово промахивались в предсказаниях того, как часто они будут использовать спортивные снаряды: в 90 процентов случаев предметы были обречены пылиться в подвалах. Ученым стало любопытно, о чем люди думали, когда обещали, что найдут применение этим гантелям и тренажерам для пресса. Они представляли будущее похожим на настоящее, полным важных дел, лишней информации, повседневной усталости? Или они воображали иную реальность?

понедельник, 16 июня 2014 г.

Хорошая, модная и плохая гибкая разработка

и о книге Бертрана Мейера "Agile!: The Good, the Hype and the Ugly"

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

Бертран Мейер "Agile!: The Good, the Hype and the Ugly"

Сейчас гибкие методы (agile methods) являются чуть ли не стандартом в современной разработке ПО. Все проводят статус митинги, ретроспективы, пишут user stories и тест-кейсы, делают частые релизы и привлекают бизнес-пользователей; ненавидят "водопадные" методы и доказывают вред переработок. Часть принципов и практик гибкой разработки стали частью нашей жизни, и уже появилось целое поколение разработчиков, которые даже не слышали про альтернативные методологии.

понедельник, 21 декабря 2009 г.

Три факта о книге Роберта Гласса «Факты и заблуждения профессионального программирования»

Facts_and_Fallacies

Факт №1. Автор хотел назвать эту книги “The F-book”

Обсуждение

Роберт Гласс изначально хотел, чтобы эта книга получила название “Fifty-Five Frequently Forgotten Fundamental Facts (and a Few Fallacies) about Software Engineering” (Пятьдесят пять часто забываемых фундаментальных фактов (и несколько заблуждений) из области разработки программного обеспечения), или коротко “The F-book”, однако издатели посчитали первое название слишком длинным, а во втором названии букву F – слишком грязной (F-word обозначает не только слово, начинающееся с буквы F, но и вообще слово, не рекомендуемое к употреблению в приличном обществе (спасибо редакторам за разъяснения)), поэтому сошлись на более коротком и презентабельном названии.

Полемика

Каждый автор мечтает о том, чтобы его книга выделялась среди множества книг других авторов. Некоторые наиболее популярные и известные книги получают неформальные названия (например, GoF-book или Dragon-book), которые дают им преданные читатели, и вполне понятно желание Роберта Гласса, чтобы его книга получила подобное особое название. Однако одного желания автора недостаточно, чтобы это произошло и несмотря на намеки автора о неформальном названии этой книги, она так и не получила свое неформальное имя (хотя кто знает, возможно еще не все потеряно).

Факт №2. Практически каждый профессиональный разработчик найдет что-то полезное в этой книге

Обсуждение

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

Полемика

По словам самого же автора, в этой книге он стремится ответить на вопрос «Что?», а не «Как?». «Здесь для меня важно вытащить эти факты обратно на поверхность, где их можно свободно обсуждать и достичь прогресса в практическом следовании им». Он поднимает широкий спектр вопросов, которые целиком покрывают жизненный цикл процесса разработки и пытается обратить ваше внимание на ту или иную проблему. Автор не дает ответы на поднимаемые вопросы, и считает, что самое главное – это осознание того факта, что эта проблема вообще существует.

Польза от этой книги напрямую зависит от опыта читателя. Для одних будут наиболее интересными вопросы об управлении проектами, человеческом факторе и сложностях оценок; для вторых – вопросы проектирования, архитектуры и особенности перехода от проектированию к кодированию; для третьих – вопросы сложности ПО и ответ на вопрос, почему увеличение сложности задачи на 25% приводит к увеличению сложности решения на 100%; для четвертых – особенности тестирования, инспекции кода и ответ на вопрос, почему стопроцентное покрытие кода тестами ничего в итоге не дает; для пятых – сложности, связанные с сопровождением продукта и вопросом, какой процент затрат идет на исправление ошибок и на разработку новых функций; для шестых– ответ на вопрос, почему же качество современных программных продуктов такое низкое.

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

Факт №3. Книга Роберта Гласса весьма интересна, но до шедевра явно не дотягивает

Обсуждение

Книга Роберта Гласса будет полезной многим разработчикам, но я не могу поставить ее в один ряд с книгами Демарко и Листера, Брукса и Йордона, Ханта и Томаса. Книга интересна и полезна, но не гениальна.

Полемика

Этот факт является весьма спорным и многие читатели этой книги могут со мной не согласиться. Гениальность произведения сложно описать словами и еще сложнее обосновать, почему одна книга относится к гениальной, а другая – нет. Нужно признать, что эта книга весьма популярна у читательской аудитории, но нужно признать и то, что ее не цитируют в каждой второй книге по разработке ПО. Книга производит впечатление добротной, хорошо проработанной, она достойно раскрывает практически все темы, которых касается, но все же ей чего-то не хватает. Роберт Гласс придерживается своего стиля, местами ироничного, местами серьезного. Но читая факты нет ощущения эйфории, как от чтения Демарко или Брукса. Разница владения языком становится особенно заметной в главах о менеджменте, в которых Роберт как раз опирается на «Человеческий фактор» и «Мифический человеко-месяц». Написано хорошо, интересно, но цитат, которые бы подошли на роль плакатов в комнату программистов, увы, практически нет. Если взять вопрос о сложности ПО, то ему в книге уделено 15 (!) фактов, но при этом полнота и качество изложения существенно уступает Бруксу и Бучу. Опять же, хорошо, добротно, но не гениально.

Завершая полемику этого факта, стоит признать, что количество книг, которые компьютерное сообщество признает гениальными – единицы. Как и в любой другой области, в области компьютерной литературы, гениев слишком мало и движение вперед основано на добротных профессионалах, к которым и относится книга Роберта Гласса с его фактами и заблуждениями профессионального программирования.

понедельник, 19 октября 2009 г.

Бесконечные споры

Существует тонкая грань между свободой подчиненных и балаганом. С одной стороны руководитель должен давать своим подчиненным достаточно свободы, чтобы они могли раскрыть свой потенциал, участвовать в принятии управленческих решений и, таким образом, перенимать опыт руководителя, с другой стороны, подобная свобода действий может привести к хаосу, когда каждый имеет свою точку зрения и ресурсы каждого сотрудника направлены не на движение вперед, а на убеждения всего коллектива в правильности своей точки зрения.
Потрясающий совет в решении подобной проблемы дают авторы книги Adrenaline Junkies and Template Zombies в шаблоне поведения под названием "Endless Huddle" (Бесконечные совещания).
Основную мысль этого шаблона авторы позаимствовали из документа "Warfighing, United States Marine Corps":

"Взаимоотношения между всеми командирами - от капрала до генерала - должны основываться на честности и искренности, не зависимо от различий в званиях. До тех пор, пока командир не принял и не выразил свое решение, подчиненные должны считать своим долгом выразить свое честное, профессиональное мнение, даже если оно расходится с мнением руководителя. Однако, после принятия решения, подчиненный должен придерживаться этого решения, как своего собственного. Командир должен поощрять беспристрастность среди подчиненных и не должен прятаться за звездами. Слепое повиновение с целью профессионального продвижения - поведение типа, "Да, Сэр" - не должно допускаться".

Это действительно интересная мысль, которая, с одной стороны, поддерживает инициативу подчиненных, дает им возможность самовыразиться и уменьшает вероятность ошибок, с другой стороны, после принятия решения, к нему все должны относиться как к своему собственному, не зависимо от того, согласен каждый из сотрудников с ним или нет. Естественно, что с течением времени обстоятельства могут измениться и вполне может возникнуть ситуация, при которой необходимо будет пересмотреть принятое решение, но без дополнительной информации руководитель должен по-возможности направлять энергию коллектива для достижения общей цели, а не удовлетворения амбиций отдельных личностей.
Лично мне было очень любопытно узнать, что в таком строгом сообществе (с жесткой субординацией), как морская пехота поощряется оспаривание мнения руководства, поскольку очень часто в менее строгих сообществах (коим является сообщество по разработке ПО) весьма часто применяется подход, основанный на старом добром принципе "я - начальник, ты - дурак", что является другой крайностью по сравнению с полностью анархичными коллективами.
Как и по многим другим вопросам, в вопросах принятия решений наиболее оптимальным является золотая середина, когда до принятия решение оспаривание этого решения не только не запрещается, но и поощряется, ну а после его принятия - вся команда придерживается этого решения, как своего собственного.

вторник, 15 сентября 2009 г.

Книга “Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior” by Tom Demarco, Piter Hruschka, Tim Lister et al.

Adrenaline_Junkies_and_Template_Zombies Труды Кристофера Александера вот уже в течение сорока лет оказывают серьезное влияние на светлые умы деятелей программной индустрии. И хотя первое упоминание книг Александера в компьютерной литературе, датируется 1969 годом в книге Эда Йордона и Алистера Коберна, идеи Александера оставались в тени, и не стали достоянием широкой компьютерной общественности, вплоть до середины девяностых годов, до выхода знаменитой книги «Банды четырех». Именно выход этой книги ознаменовал начало новой эпохи в нашей индустрии, эпохи всевозможных шаблонов. Идея шаблонов настолько понравилась общественности, что она стала завоевывать все новые и новые области. Так появились шаблоны реализации (implementation patterns), шаблоны асинхронного программирования, шаблоны корпоративных приложений, шаблоны реализации распределенных приложений и многие другие. Несмотря на свое широкое распространение, шаблоны оставались прерогативой архитектора и разработчика, а не менеджера. Но за последние несколько лет эта картина начала изменяться. Вслед за книгой  Джеймса Коплиена  и Нила Харрисона вышла книга Тома ДеМарко, Тима Листера и др. с интригующим названием “Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior”, посвященная шаблонам поведения программных проектов.

Книга состоит из 86 шаблонов, каждый из которых занимает 2-3 страницы и описывает определенную ситуацию, так или иначе связанную с состоянием или поведением программного проекта. Первым шаблоном в книге является шаблон “Адреналиновые наркоманы” (Adrenaline Junkies), который описывает такое состояние проекта, при котором считается, что «безумная активность является знаком здоровой продуктивности». Сотрудникам проекта приходится постоянно переключаться с одной задачи на другую, так и не доводя ни одну из них до логического завершения. Последним шаблоном в книге является шаблон “Зомби шаблонов” (Template Zombies), когда «проектная команда позволяет, чтобы работа управлялась шаблонами, вместо того, чтобы продумать процесс, необходимый для завершения проекта». Этот шаблон характеризует противоположную ситуацию, в которой форма становится гораздо важнее содержания. Между этими двумя шаблонами располагаются оставшиеся 84 шаблона, так или иначе описывающих поведение или состояние проекта. И хотя эти два шаблона не являются чем-то уникальным, они являются частью названия книги и именно они изображены на обложке книги в виде комичных человечков.

«Большая часть участников проекта довольно хорошо разбираются в распознавании образов и обладают внутренним чутьем (“я чувствую, что с этим проектом случится беда”), но не так хорошо разбираются в обобщении этих шаблонов в более удобную форму. Эта книга именно об этом. Мы, шестеро авторов, собрали весь свой опыт для изложения шаблонов, которые мы изучили в течение общих ста пятидесяти лет опыта».

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

P.S. MUST HAVE

UPD: Спасибо Василию Подобеду за коррективы в русскоязычном написании имени Алистера Коберна (Alistair Cockburn).

понедельник, 7 сентября 2009 г.

Перевод статьи “The Google Way: Give Engineers Room”

Недавно на блоге Эдварда Йордона натолкнулся на один весьма интересный документ: “Top Ten Software Engineering Conceptsи там в разделе “Peopleware” заинтересовался ссылкой: Google’s HR Strategy, которая и привела меня к статье “The Google Way: Give Engineers Room” by BHARAT MEDIRATTA; as told to JULIE BICK, New York Times, October 21, 2007. Оригинал статьи можно найти по этой ссылке, а здесь я хочу представить ее перевод.

Разработчикам Google разрешается использовать 20 процентов своего рабочего времени на задачи, связанные с работой компании, но интересные сотрудникам лично. Это значит, что если вас есть интересная идея, у вас всегда найдется время позаниматься ею.

Барат Медиратта (Bharat Mediratta) принимает участие в групплетах (grouplet meeting) в Google, которые отражают и подчеркивают возможность разработчиков тратить свое время на независимые проекты.

Это выглядит очевидным, что люди работают лучше, если они занимаются чем-то любимым, и множество отличных технологий нашли свое начало в этих 20 процентах рабочего времени, включая Gmail, Google News и даже Google shuttle, который возит людей на работу в штаб-квартиру компании в Маунтин-Вью, Калифорния.

Если идея, которая возникла при использовании 20 процентов свободного времени, это новый продукт, то обычно достаточно всего лишь найти несколько единомышленников и начать кодировать. Но когда то, над чем вы действительно хотите работать – это сделать серьезные изменения в целой организации, то вам нужно нечто совершенно новое – вам нужны «групплеты».

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

Давайте рассмотрим группу разработчиков, желающих продвинуть «гибкое программирование» (“agile programming”) внутри компании.  Гибкое программирование – это подход к разработке программного обеспечения, который включает в себя раннюю и частую обратную связь, и уже применялся в нескольких частях компании.

Групплет по гибкой разработке был основан в попытке распространения этой идеи по всей организации. Осуществлялось это путем создания максимального числа групп для обучения новому процессу. Они создали «Часы гибкой разработки», куда вы могли заглянуть и задать вопросы об этом процессе. Они раздавали книги и проводили откровенные беседы по этой теме. Они посещали собрания персонала и создали концепцию «Сафари гибкой разработки», в которой вы могли добровольно участвовать некоторое время в составе группы, использующей гибкую разработку, чтобы посмотреть на нее на практике.

Если вы двигаетесь так же быстро, как и Google, то у вас не всегда бывает возможность завершать мелкие вещи, которые со временем начинают мешать и беспокоить. Поэтому в добавок к усилиям нашей команды обеспечения качества,  у нас есть групплет Исправь Это (Fixit), который координирует особые дни, когда наши разработчики сосредотачиваются на решениях определенных проблем. Иногда у нас проходят дни исправления документации (Documentation Fixits), когда все мы стараемся навести порядок во внутренней документации, о которой периодически забываем.

Или мой любимый: исправления пожеланий пользователей (Customer Happiness Fixit), когда мы исправляем те маленькие проблемы, которые достают и расстраивают наших пользователей, например, исправление неудачных горячих клавиш в мобильных телефонах. Многие из этих событий проходят со специальными футболками и подарками для разработчиков, которые посвящают слишком мало времени работе над этими проблемами.

В свои 20 процентов времени я начал групплет по тестированию. Побудила меня к этому идея (не моя), что если разработчики пишут автоматические тесты во время написания кода, этот код будет лучше подходить для этого. Меньшее время на исправлении ошибок дает большее время на разработку всякой всячины.

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

Мы начали создавать лучшие инструменты и проводить непринужденные беседы с различными техническими группами. Мы начали создавать учебный план для Нуглеров (Nooglers), новичков Google, чтобы они начинали свою работу правильно. Нашими объединенными 20 процентами времени, мы медленно повернули организации на 90 градусов и сделали тестирование разработчиком обычной практикой.

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

В групплете по тестированию, наша идея была в том, чтобы разработчики начали писать свои собственные тесты. Но как бы мы не старались, мы не могли быстро дотянуться ко всем нашим разработчикам в нашей растущей организации. Однажды, в конце длительной мозговой атаки, мы пришли к идее вывешивания маленьких историй, размером с одну страницу, названные эпизодами, в туалете, с обсуждением новых интересных методик тестирования. Кто-то сразу же назвал их «Тестирование в туалете» и идея принялась.

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

В конечном итоге, идея стала частью корпоративной культуры, даже корпоративной шуткой: «Простите, мне нужно пойти почитать про тестирование». Вот тогда мы поняли, что мы получили то, что хотели: способ опубликовать наше сообщение.

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

Но когда вы даете разработчикам шанс применить свою страсть на благо компании, они могут делать удивительные вещи.

Барат Медиратта, разработчик программного обеспечения в Google.