Archive for January, 2008

Improvement through iteration

Thursday, January 31st, 2008

Agile development encourages iteration. We all know by now the theory that this speeds up development.High Speed Train - (c) FreeFoto.com It meets customer needs because the end users can provide feedback quickly and changes can not only be made in time, but embraced throughout the software creation and maintenance process. But there are other less obvious benefits to agile methodologies.

One of my brothers-in-law was trained as an aerospace engineer. He is now in the software game too. His insight into the differences between these two pursuits is very instructive. In his former profession, mistakes were something to be feared and avoided at all costs. A single oversight when maintaining a jet aircraft could spell death for the pilot or others on the ground.

Some software has equally dire need for mistake-free development. But let’s face it, most of us are not creating life-or-death applications. Iteration in an agile world encourages mistakes. Those who claim they don’t learn better by doing than thinking… have neither done enough nor thought about it enough.

The excellent story about a pottery teacher who encouraged two groups of students to achieve their marks in very different ways illustrates the power of this concept. One group was told that quantity would determine their mark, the more pounds of finished pottery, the higher the grade. The other group was told that they could produce just a single piece, but that its level of perfection would dictate their mark. Regardless of the grades achieved, the group producing more pottery also produced the more perfect piece. Iteration had taught them how to avoid imperfections.

Coincidentally, today Coding Horror provided a great piece about the theory that worse is better which is a variation on the themes my brother-in-law is discovering. Jeff’s conclusion adopted from Steve Martin: “Strive to be consistently good and great will take care of itself.”

Jon Udell’s talk at CUSEC 2008

Wednesday, January 30th, 2008

Jon Udell is a bright light Jon Udellin the world of XML transforms and ontological thinking. His presentation recently at CUSEC 2008 is called “Hacking the Noosphere” and is about the ways in which we can start to create a shared human consciousness.

That sounds like a wildly optimistic goal, but it’s not. With the technologies we’re currently using, including simple ways to link disparate things together, the horizon glimmers with possibility. We can do this stuff; we can start doing this stuff now.

Udell taps into both the grand picture of success and several concrete examples of progress made towards the goal.

An amusing aside in Udell’s talk is another example of the long nose, where Doug Engelbart (same guy who invented the mouse) demonstrated technologies that looked a lot like a GUI, hypertext, and Skype back in 1968.

Ransom notes and other poor uses of technology

Saturday, January 26th, 2008

When desktop publishing was first introduced, people jumped on it with all the fervor of an incensed mob. They wanted the control that being able to do typesetting for their own projects gave them. They went crazy, using five different typefaces in the first half of every page. Professionals in the industry dubbed these abominations “ransom notes” because it looked like the desktop publishers had purposely cut disparate fonts from various sources to throw off the authorities.

Things settled down eventually and people realized that some level of training is needed in addition to a powerful tool-set. The strange thing is, this cycle repeats itself with each new and cool technology. Blame must partially lay at the feet of the innovators themselves. To get buy-in they oversell. “Visual programming will allow people with business domain knowledge to code up their own applications.” Remember that one? Ever see some of the poorly made Visual Basic programs that have been bolted on to Word and Excel? Ever see some of the good ones? It is not the technology itself that is to blame (well, that is a completely separate argument at least). The users of the tools need training.

The good part of the story is that, just as in desktop publishing, people who have the right domain skills — or develop them — eventually eclipse the casual and unskilled tool users. For example, some of the scary PHP web sites that were thrown up in the early days have reached their breaking point and the new crop of PHP-savvy coders (who in my opinion are indeed real coders) are actually pretty good, producing nice stuff. After all, concepts like scalability and security may not matter at first. But anything can smother under its own success.

A mouse’s nose is longer than its tail

Saturday, January 12th, 2008

You’ve probably heard of the long tail. Something that has been around for a long time and may have had high popularity at some point the past, is sustainable in today’s on-demand industries even when its volumes drop off. In fact, taken as an aggregate, low volume items on the long tail outperform today’s “hot sellers”. See if you can work out the meaning of this quote by former Amazon employee, Josh Petersen: “We sold more books today that didn’t sell at all yesterday than we sold today of all the books that did sell yesterday.”

A new term has been coined to described a phenomenon where something needs to have been around for a good long time before it will really take off and become “popular”. In a recent Business Week article, Bill Buxton coined the term “long nose” based on Anderson’s original “long tail”.

For those of us in the high tech industries, it is easy to fall into the trap of whatever is shiny and new. MouseIt is also very easy to become cynical or at least tarnished by harping about the same old technologies for years before they catch on. Jon Udell’s take on this is that you can learn to remain fresh and positive by bringing your ideas into new contexts, giving them new audiences. Once again, the mantra of diverse teams driving innovation is given yet another boost. Fresh eyes bring fresh perspectives.

The example that prompted the title of this post was the computer mouse. The first one was created in 1965!

What’s exciting about the long nose is that each one of us is likely sitting on or espousing new technology that has not caught on yet but could indeed be the next big thing. Just keep pushing for a decade or so!

Domain knowledge as a curse

Saturday, January 5th, 2008

You’re sitting around with your colleagues, discussing the latest approach to a technical challenge. Acronyms and idioms are flying.  Leaps of logic are made.  Ideas are built up and discarded as mutual understanding is conveyed almost by inference.

Now imagine there’s a guest in the room: your non-technical friend… someone whom you respect for intelligence and quick-wit, but who simply doesn’t have the same domain knowledge. If that friend was forthright enough to ask about all the logic gaps, would it hinder or improve the quality of the conversation?

The answer, as in so many things, is “it depends”.  Acronyms and idioms, when well understood by those present, are a great shorthand, speeding up communication.  But often the fundamentals behind the technical challenge itself — the reason you’re all talking in the first place — are glossed over in the rush to “talk tech”.

Abhijit Nadgouda posted today about this problem and how in programming he has tackled the issue.  His thoughts were prompted by a more general article about the problem by Janet Rae-Dupree.

The concern they both raise is not so much that the circle is closed and that newcomers can’t tell what’s going on, but that innovation itself is stifled because the shorthand encourages travel along the same well-worn path.  I believe the two phenomena are closely linked.  This returns to my thoughts on diversity.  Widely divergent approaches to problems will always yield a better result.  Occasionally you have not only to return to fundamentals, but ensure that new blood can flow into the solution (when newcomers understand basic assumptions) and allow true innovation to result.