Thursday, May 14, 2009

a piece of string I'm afraid


Silly thing happened at work today.

The VPN went down in the afternoon.
Ben, who was in the Sydney offices, was waiting on us to restore the connection.
He asked, "How long?" (referring to restarting the router)
Nathan happily supplied the answer, "A piece of string I'm afraid."
Greg then offered, "That is twice the length from the middle to either end."

Smart.



How long is a piece of string?

For those who are interested, intrinsic to a piece of string, it has length.
But, that length is unknown because it is never specified.
Hence the phrase "How long is a piece of string?" has come to mean that a quantitative answer is not known.
And, there is an implicate understanding that the answer will be difficult to find given the information currently available at hand.

When asked by a client to estimate the costs of a project still in the earliest stages, it is better to reply with a, "I'll need to get back to you with some hard numbers."


An alternate to this phrase is "How much does a vacation cost?" It embodies the same sense of an indeterminate quantity.


Wednesday, May 06, 2009

Feature Creep



Feature creep is the proliferation of features in a product such as computer software. Extra features go beyond the basic function of the product and so can result in baroque over-complication rather than simple, elegant design.

The most common cause of feature creep is the desire to provide the consumer with a more useful or desirable product, in order to increase sales. However, once the point at which a product does everything that it is expected to do is reached, the manufacturer is left with the choice of adding unneeded functions or sticking with the old product.

Characteristics

Feature creep is the most common source of cost and schedule overruns. It thus endangers and can even kill products and projects. Apple's abandoned Copland operating system is an example of this.

Control

Temptation of later feature creep may be avoided to some degree by basing initial design on strong software fundamentals, such as logical separation of functionality and data access. It can be actively controlled with rigorous change management and by delaying changes to later delivery phases of a project.

Mitigation

  • Design document

  • KISS principle

  • Minimalism

  • Software extension

  • Unix philosophy