вторник, 21 июля 2009 г.

[comp.prog.management] Несколько свежих цитат из ДеМарко

Software Engineering: An Idea Whose Time Has Come and Gone? (via thesz)

My early metrics book, Controlling Software Projects: Management, Measurement, and Estimation (Prentice Hall/Yourdon Press, 1982), played a role in the way many budding software engineers quantified work and planned their projects. In my reflective mood, I'm wondering, was its advice correct at the time, is it still relevant, and do I still believe that metrics are a must for any successful software development effort? My answers are no, no, and no.

Эти слова, имхо, было бы хорошо запомнить всем early adopter-ам и technologist-ам. Идеи, которые кажутся важными и актуальными здесь и сейчас, запросто могут не пройти проверки временем.

The book's most quoted line is its first sentence: "You can't control what you can't measure." This line contains a real truth, but I've become increasingly uncomfortable with my use of it. Implicit in the quote (and indeed in the book's title) is that control is an important aspect, maybe the most important, of any software project. But it isn't. Many projects have proceeded without much control but managed to produce wonderful products such as GoogleEarth or Wikipedia.

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

Примечательно еще и то, что за последние лет 7-8 мне доводилось наблюдать за развитием целого ряда важных проектов с серьезными заказчиками, в которых сроки изначально устанавливались жестко. Но потом тихой сапой они раздувались, переносились и изменялись. Вероятно, я наблюдал в миниатюре то, о чем говорит ДеМарко:

Consistency and predictability are still desirable, but they haven't ever been the most important things. For the past 40 years, for example, we've tortured ourselves over our inability to finish a software project on time and on budget. But as I hinted earlier, this never should have been the supreme goal.

Но если контролируемость и предсказуемость проектов не важна, то что же тогда важно? А вот что:

The more important goal is transformation, creating software that changes the world or that transforms a company or how it does business. We've been rather successful at transformation, often while operating outside our ontrol envelope.

А важно это потому, что проекты делятся на два типа:

To understand control’s real role, you need to distinguish between two drastically different kinds of projects:
* Project A will eventually cost about a million dollars and produce value of around $1.1 million.
* Project B will eventually cost about a million dollars and produce value of more than $50 million.

И контроль более важен для проектов типа A, но почти не важен для проектов типа B. Как следствие чего:

Can I really be saying that it's OK to run projects without control or with relatively little control? Almost. I'm suggesting that first we need to select projects where precise control won't matter so much. Then we need to reduce our expectations for exactly how much we're going to be able to control them, no matter how assiduously we apply ourselves to control.

Ну и возвращаясь к теме You can't control what you can't measure:

Imagine you're trying to control a teenager's upbringing. The very idea of controlling your child ought to make you at least a little bit queasy. Yet the stakes for control couldn't be higher. If you fail in your task, fail utterly, lives can be ruined…
…Now apply "You can't control what you can't measure" to the teenager. Most things that really matter-honor, dignity, discipline, personality, grace under pressure, values, ethics, resourcefulness, loyalty, humor, kindness-aren't measurable. You must steer your child as best you can without much metric feedback. It's hard, but then parenting is hard…
…So, how do you manage a project without controlling it? Well, you manage the people and control the time and money.

После чего следует очень и очень хороший рецепт (насколько я могу судить):

You say to your team leads, for example, "I have a finish date in mind, and I'm not even going to share it with you. When I come in one day and tell you the project will end in one week, you have to be ready to package up and deliver what you've got as the final product. Your job is to go about the project incrementally, adding pieces to the whole in the order of their relative value, and doing integration and documentation and acceptance testing incrementally as you go."

PS. Выделение жирным в цитатах мое.

Отправить комментарий