Dec 26 2007

Bear programming

Published by gojko under news

Kuniaki Igarashi posted a nice presentation on Omoiyari-Driven Development, with the core idea of programming while keeping in mind how other developers are going to use and understand your code. This practice aims to reduce misunderstandings among team members. I have a strong belief that communication and communication-related problems play a key role in software development, and although I would not consider being thoughtful of others as an idea that can lead development, I certainly agree with Kuniaki that it is a very important practice. I wrote several articles about related techniques, including Documentation for telepathic developers and The Poka-Yoke principle and how to write better software.

I am pointing to this presentation mostly because of the secondary “Bear programming” practice, which revolves around explaining the problem first to an imaginary team member (or in this case a real stuffed toy bear) before raising the flag and asking for more help. When a team member asks a question that clearly signals that he misunderstood the issue or the underlying infrastructure, I always try to lead that person into expressing the problem better or drawing it on paper. Very often that team member will reach a good conclusion himself - expressing it on paper or to another person just helps to clear the issue in his mind. This is, in my experience, much more effective than just giving an answer straight away. Bear programming speeds up the process a bit and includes a virtual person for people to talk to.

A stuffed toy is, however, no replacement for an experienced team member - and if agile development has thought us anything it is that there is no replacement for direct person-to-person communication. Asking for help is a good thing and I would not want to prevent people from doing that. But this can be a very useful practice to prevent junior team members from wandering off into the wilderness when they hit a problem. I would suggest using Bear programming, but with a different trigger - before starting to develop some utterly complex workaround, explain the problem to the bear. If that does not help, then raise the flag and call someone to assist you. Using the commander’s intent template can also help a lot to improve the shared understanding - so if you are often getting these problems ask yourself whether you can explain stuff better in the first place.

4 responses so far

Dec 11 2007

How to sell TDD to non-technical stakeholders?

Published by gojko under articles

How do we sell the test-driven approach on a wider scale to business analysts and customers? How do we get them involved in that process? It seems that a lot of the problems and confusion obstructing that effort come out of the misleading name of the term “acceptance tests”.

Dan North suggests using the word “behaviour” instead of “test” to point out how acceptance tests express system behaviours. I found this approach very useful for describing the role of TDD to “outsiders”, who are not interested in low-level functional testing and tune out as soon as people start talking about anything related to testing, including Test-Driven Development. Dan writes: Continue Reading »

2 responses so far

Jun 14 2007

Don’t deal with problems like Gaggia

Published by gojko under articles

From /dev/coffee to modeling transaction processing based on Starbucks shops, the world of coffee has often inspired programmers. Here is a not so bright example from the world of coffee, giving us a hint how problems should not be solved. We recently bought a new coffee machine, and after a glance at the user manual, I was amazed to find out that our new Gaggia was affected with a common flaw of enterprise software: ignoring “stupid” problems.
Continue Reading »

8 responses so far

Apr 03 2007

Documentation for Telepathic Developers

Published by gojko under articles

The adoption of reflection into main-stream programming tools and languages over the last six or seven years gave developers almost telepathic powers, allowing us to instantly understand any object without having to read through 200 pages of boring manuals. Code insight, instellisense, class browser, or whatever the feature is called in your favourite IDE, started as a helpful utility but has now almost completely replaced API documentation. Most developers simply do not read supporting documents at all any more. Continue Reading »

4 responses so far

Jan 31 2007

Blinded by the user interface

Published by gojko under articles

A friend of mine has a problem - his team worked for months on a big system with great success, marvellous technical achievements and a very elegant architecture. However, the users don’t share his enthusiasm. They don’t appreciate the architecture, flexibility and openness to change. Somehow, they seem ‘blinded by the user interface‘. Although the statement is completely correct, it’s hardly something that developers should be moaning about - on the end, ‘user interface‘ is called like that because it is exactly what users see. Instead of complaining how users only see ‘the stupid UI‘, we can embrace that fact and improve their feelings about our software.

Developers tend to over-emphasise functional aspects, underlying structure and technical achievements. But users are blind to that - they only see what the software does, not how. Most users are only concerned about how the software will help them get their regular job done, and how pleasant it will be to work with. For them, the underlying structure, service layers and database optimisations exist somewhere over the rainbow… Continue Reading »

8 responses so far

« Prev - Next »