Improving Wetware

Because technology is never the issue

An amusing speculation about the Waterfall

Posted by Pete McBreen 10 Dec 2009 at 20:36

Tarmo Toikkanen has an interesting speculation about Why people still believe in the Waterfall model, putting the blame on the Royce paper that was trying to say that waterfall was not the way to do software development.

OK, so why do people still advocate the waterfall? If you look at the scientific articles on software engineering that discuss the waterfall, they all cite Royce’s article. In other words, they’re saying something like “The waterfall is a proven method (Royce, 1970).” So they base their claims on an article that actually says the opposite: that the model does not work.

Tarmo was not the first to run across this idea, but the interpretation of the problem is different.

Don’t draw figures or diagrams of wrong models, because people will remember them. And in the worst case that could cause hundreds of thousands of failed projects and billions of euros and dollars wasted for nothing.

Other people has written about The Waterfall Accident and Waterfall Model; not what was intended.

Time to move beyond Agile?

Posted by Pete McBreen 29 Nov 2009 at 16:35

Just found a very interesting post from Luke Halliwell on The Agile Disease that looks at the fit between Scrum and the game industry, but many of his points are relevant to other development domains.

[Agile] was designed by consultants, aimed squarely at the world of in-house enterprise IT: a world where mediocre developers work for large corporations that don’t understand software development, but can afford to buy in expensive consultants to “save” their runaway projects.

Having daily stand-up meetings is ludicrous; it exists simply to protect against the dysfunction of team members that never talk to one another. … In anything resembling a normal, common-sense team, people will surely raise blockages with their manager as soon as they occur and not need to wait for a daily meeting!

After that rant Luke went on to describe what worked in his field, and even had a post after attending a Scrum Master course.

Amusing quote from an economist

Posted by Pete McBreen 25 Nov 2009 at 19:11

Talking about why things are a lot more complicated than we might otherwise think.

Books are thick cos things are hard – Richard Denniss

A comment towards the end of his talk: ENVS1001 - Resources, Environment and Society - 2009 audio podcast, Week 05 Panel B: Can Economics Save the World? Richard Denniss (Fenner School of Environment and Society, Australian National University on iTunesU)

Software development as a scientific activity

Posted by Pete McBreen 22 Nov 2009 at 22:21

Given that I do not agree with the characterization of software development as software engineering, it was somewhat of a surprise to find that there are a lot of parallels between software development and science.

Debugging and testing are probably the most scientific activities, in that developers have to make guesses about what is happening and then devise experiments to prove those guesses wrong. Developers also have to make predictions about how the systems they are developing will behave and then defend those predictions against speculations made by uniformed observers and occasionally defend against misinformation conveyed by financially interested parties.

One conclusion I could make from this is that the politics of software development are very similar to the politics of science. Practitioners try to pretend that there is no politics involved as it is all perfectly rational and understandable, but because people are involved it is all about politics. As soon as we start making predictions, then how we interpret those possible futures has a big effect on the actions we might take. This then becomes the realm of politics and it is that part that many software developers forget about (and many scientists as well) - Politics Matters.

We probably could have saved ourselves , but we were too damned lazy to try very hard … and too damned cheap. – Kurt Vonnegut

To celebrate the politics of science I’ve included a graphic reminder in the sidebar that small changes over a long period can result in a very interesting future.

Improving Documentation

Posted by Pete McBreen 11 Nov 2009 at 07:48

Seen a few useful blogs on documentation recently.

Jacob Kaplan-Moss has a good look at how the Django culture does documentation.

I especially liked this

Auto-generated documentation is almost worthless. At best it’s a slightly improved version of simply browsing through the source, but most of the time it’s easier just to read the source than to navigate the bullshit that these autodoc tools produce.

My take is that it is possible to produce readable and useful documentation using Rdoc or Javadoc, it is just that most projects do no take the time to produce good documentation. In many cases of Rdoc generated documentation all that is there is the signature to the method and a link to that excerpt of the code… not very useful.

Real Options

Posted by Pete McBreen 17 Oct 2009 at 20:44

I met Chris Matts a few years ago and his REal Options ideas stuck with me but I never remembered to link to him.

His Blog is called decision-coach, and he has a very interesting approach to copyright

Terms and Conditions for Copying, Distribution and Modification

  1. Do whatever you like.

Chris seems to be going to be using a cartoon approach that shows promise, though it looks as if the book will have professionally drawn cartoons - personally I’d miss the hand drawn versions. The idea of when to design tests is covered in the Information Arrival cartoon, which is a long but worthwhile read.

Uncle Bob on Test Driven Development

Posted by Pete McBreen 08 Oct 2009 at 11:28

Seems that there is still a lot of resistance to using TDD.

Uncle Bob explaining the role of TDD in developing Fitnesse makes for interesting reading.

The bottom line is that TDD is a design technique but should not be the sole design technique. All the old design rules and skills still apply; and TDD is a powerful way to inform and augment them.

Pseudo random links

Posted by Pete McBreen 07 Oct 2009 at 22:14

Queue of things to read

Paul Graham - startup school

Business models

Economics 1

Economics 2

Ruby, Unix and processes

Validators in Rails 3

Artisans and Handmade Software

Posted by Pete McBreen 07 Oct 2009 at 22:09

Not much time to post recently, but have to note an interesting post about Software Artisans and Handmade Software

Had to smile at the thought the calling yourself a Software Artisan was pretentious. If they think that is pretentious what would they think about calling yourself a Software Craftsman?

So Much For "Don't Be Evil"

Posted by Pete McBreen 03 Oct 2009 at 19:14

No Thanks Google

How Do I Disable Sidewiki?

Comments are deliberately turned off on this blog, but now Google wants to enable commenting via Sidewiki so that anyone can put comments directly in view while others browse what I have written.

NOT a good idea.

As Dave Winers says my Website Is My Space

Possible way to disable Sidewiki

Google site states “Sidewiki currently does not support comments over internal or SSL (https) encrypted pages.” So that might be a temporary fix - making the entire site SSL, but again there is the word “currently” which means that it might at some point allow for comments on SSL pages....

Talk About Being Late To The Party

Posted by Pete McBreen 03 Oct 2009 at 07:23

Ivar Jacobsen has an interesting piece in Dr Dobbs - Why We Need a Theory for Software Engineering.

I’d have thought that 40 years after the initial NATO conferences on Software Engineering, someone would already have the theory well developed by now. Setting aside my bias for a while, teh article has some really good questions

Do we really know how to develop great software? The answer for many people is clearly yes. But do we know how to communicate and continuously improve the way that we develop software? Do we really understand the best way to communicate and share our knowledge?

Do we stand on quicksand or the shoulders of giants?

Have you ever taken the time to investigate a new method or practice only to find that it is just the re-branding and regurgitation of ideas that you have seen many times before?

Have you ever got frustrated that every new idea about software development seems to be at the expense and in aggressive competition with everything that has gone before?

Does it seem to you that following that latest software development trend has become more important than producing great software?

I sense a certain amount of frustration in these questions, because over the last 40+ years it sometimes seems that little progress has been made in our ability to reliably develop software. Admittedly my answer to these questions does not include the answer “Software Engineering”, but other than that I find I share the sentiment expressed in the article…

It is clear that we need to stop chasing after fads and easy answers that forever disappoint, and that we need to do it without discouraging innovation and the generation of new ideas. People need to stop constantly re-packaging and re-branding old ideas just for the sake of it. Instead they should focus on helping people understand how to build great software.

The Argument From Ignorance

Posted by Pete McBreen 22 Sep 2009 at 20:28

Neil Tyson talks about the argument from ignorance

Beautiful quote from Neil - “Optical Illusions are Brain Failures”

Video on YouTube

Certification just won't go away

Posted by Pete McBreen 22 Sep 2009 at 20:10

I just love this Joe the Developer doesn’t need a certificate from Gojko Adzic

What is really amazing about this particular time is that serious people whom I respect seem to be arguing for certification, with the idea that certification is coming anyway so it’s better if the community gets on board and influences it rather than ignoring it and suffering after. To that I can only say that people do drugs anyway but it’s still not OK for us to sell it to them.

It seems that there is now a move afoot to make Certified Scrum Developers… The World Agile Qualifications Board .. words fail me.

Cooper on Agile

Posted by Pete McBreen 22 Sep 2009 at 20:04

Alan Cooper on Agile

“I’ve long been an advocate of such technological-craftsman-self-determination. It’s just that I advocated it via the “interaction design” point of view. ”

Kent Beck's blog has some great quotes

Posted by Pete McBreen 20 Sep 2009 at 09:41

Some of it is priceless.

Nice to see that Kent is thinking beyond XP now Incremental design as described in XP takes a firm stance on such situations: eliminate the duplication or the excess complexity as soon as you see it. The responsive designer, however, takes a more nuanced approach.

Nice observation from Scalzi

Posted by Pete McBreen 20 Sep 2009 at 09:02

A general observation from Scalzi,

The Internet does seem to be full of people whose knowledge of complex concepts appears limited to a dictionary definition.

Decentralizing social media

Posted by Pete McBreen 15 Sep 2009 at 18:28

Decentralizing social media s likely to become a hot topic.

Dave WIner has created RssCloud to enable more or less real time RSS updates and notifications, helping to decentralize the notification system. Twitter was an interesting model for a while, but it has demonstrated that it does not scale to a real flash mob. Sure it works well for large traffic volumes, but when there is a massive spike in traffic the centralized model is always going to be in danger of slowing down.

At some level high traffic is indistinguishable from a denial of service attack, sure the traffic is wanted, but if the servers cannot handle it, then the system exhibits the same behaviors that it would under a real denial of service attack - no new traffic gets through in a timely manner.

Defending Software Craftsmanship

Posted by Pete McBreen 12 Sep 2009 at 20:23

Saw this a while back but forgot to link to it.

In Defense Of The Software Craftsmanship Concept by Alan Skorkin

What about simply writing clean, nice code and doing it quickly and well. While I would love to say that anyone can do it no matter how ‘old’ they are, I would be lying if I did. Any developer who has ever looked at code they themselves wrote 1, 2 or 3 years ago will tell you that this is one skill that you can hone and improve until the day you, errr — become a manager (don’t bite my head off, i am only kidding :)). The point is, having a skill that you can continue to improve for as long as you’re able is the very definition of craftsmanship.

Other than the subtle jibe at managers, a nice summary of software craftsmanship.

Masterpiece Engineering

Posted by Pete McBreen 05 Sep 2009 at 16:44

Stumbled across this paper from the 1969 NATO Software Engineering conference that indicates that even back then someone was thinking that maybe engineering was not the right metaphor for software development

Unlike the first conference, at which it was fully accepted that the term software engineering expressed a need rather than a reality, in Rome there was already a slight tendency to talk as if the subject already existed. And it became clear during the conference that the organizers had a hidden agenda, namely that of persuading NATO to fund the setting up of an International Software Engineering Institute. However things did not go according to their plan. The discussion sessions which were meant to provide evidence of strong and extensive support for this proposal were instead marked by considerable scepticism, and led one of the participants, Tom Simpson of IBM, to write a splendid short satire on ”Masterpiece Engineering”. –Brian Randell

Since then we have endured 40 years of people pushing the software engineering ideas on us, and in spite of all that projects still have major stresses.

Lecturing Birds on Flying

Posted by Pete McBreen 03 Sep 2009 at 19:40

Lecturing Birds on Flying is another take on Nassim Taleb’s Black Swan idea, and Pablo Triana does a good job of explaining that a lot of what was supposedly solid theory around financial modeling, is actually not applicable in the real world.

It turns out that most models make the assumption that the probabilities that apply in markets are normally distributed (where anything beyond a three sigma event should be exceedingly rare), is incorrect and that the probability distribution has very “fat tails”, where a twenty-five sigma event is not unheard of. This work complements Nassim’s black swan book by restating the ideas in a slightly different way and by being written after another event that demonstrates that the markets do not have normally distributed probabilities.

The applicability to software craftsmanship stands out for me in the way that the models try to ignore the effect that individuals have on the market. The assumption is made that the actions of individuals are all independent, when it is blindingly obvious that this is not the case. Yes, the assumptions might work if the market was made up of lots of small players, but that is not the case. The markets only have a few players of any significance, the trades of any of these make the markets move, the small players make the random day to day noise, but the big players are what cause the problems - the too big to fail kind of problems.

Software Engineering is too big to fail

To get a good software disaster, you need the big ideas from software engineering that can influence lots of people to make similar mistakes on a project. The average level of software development is abysmal, most projects only succeed to the extent that they have one or two talented or experienced developers who manage to overcome the overall lure of failure.

Software projects should be built around the outliers that happen to be talented or experienced enough to succeed, but even then the sponsors should only bet as much as they can afford to lose. Nobody knows how to make massive projects successful - other than throwing money at it until it is politically acceptable to call the result successful.

The issues in software are different than in finance, but in both cases the underlying model of how the field works is incorrect, and the consequences of this mismatch between model and reality are what causes things to crash and burn.