Thursday, 31 July 2014

Tell your tale

Why are the stories called so?
I think it is because they are meant to be told.
We lost this essence somewhere when we designed the first template for a story. We forgot it was never meant to be written down. It was meant to be told.
We Indians among all; should be able to appreciate this most. The best knowledge base we have had transcended generations by word of mouth. The Vedas!
A good story should have a plot, characters, premise, key events and its subsequent course. Tell it with flair, passion and imagination.
Use your metaphor as the context and the base of your vocabulary. I remember reading somewhere that our epics and puranas were used as metaphors for the instructive dialogues in our Vedas and Upanishads.
Architects and product owners, put down your pen, uninstall MS word, walk to the center and tell us a story. 

Saturday, 19 July 2014

Developer testing ( continued)

Developer testing

In the last blog, I discussed about the four traps that discourages developers from testing. Let us consider some alternatives to these.

Test-early-and-often than test later
Explore than cover
Arsenal than one tool
Football (have fun!) than Foosball

As a developer, half of our time, we could spend in coding. The other half of the time, we should spend in testing. This is done best, when we test early and test often. Each of us could keep our styles, may be I would code for a day or two and then test for the next couple of days when you may be switching between the two every couple of hours. 

Developer testing is a deep reflection on what we have coded. Compiling the code is probably the first step in this. I suggest that the developer testing be an exploratory activity. Brave yourself to tread any path in your code fearlessly and be surprised at what you find there. Test the real code, use a stub when you are stuck.

The following excerpt from T S Eliot's "Little Gidding" is an apt metaphor about exploring.
We shall not cease from exploration
And the end of all our exploring 
Will be to arrive where we started 
And know the place for the first time

In my opinion, it may not be necessary to regress all your developer test cases each time. For ensuring the sanity of your design, you may consider a subset of test cases as a smoke suite. So this concern need not tie you up with a particular test tool. Build a rich arsenal; templates, data generators, test case generators, whatever. Code and test at will.

Developer testing is a reflective technique. For all you may, you could even stare at your code for half the time. There are no particular rules for developer testing other than those you follow for coding. Have fun at it as much as when you code.

Tuesday, 15 July 2014

Developer testing

Developer testing - an oxymoron?

Developers love coding.
Coding ain't done till it is tested.
Developers hate testing.
I have noticed four traps that discourage developers from testing. I have named them (in no particular order) the test-later trap, the coverage trap, the one-tool trap and the foosball trap.

The test-later trap

This is probably the most common trap. In my company, this is probably a residual practice from "our waterfall" days. When code piles up, developer testing becomes daunting and dreary.

The coverage trap

All fixes are not free. Some back fire too. 
Long, long ago (perhaps not so long!), some one had an idea. If we cover (not test, mind you!) all the code that we have written, all is well. 
Which respectable developer would like to do this work?

The one-tool trap

It is not enough that we test all that we code, all those tests need be run again as regression. This would be difficult to achieve if all of us don't use the same tool. If our software is in maintenance, we should probably continue to add tests to the same (sometimes archaic) tool.

The foosball trap

I love coding because it is like playing football. There are a few rules, but I can always play in my style. I can deftly pass it to the striker near the box or curve it in like the great Italian playmaker. 
When someone says "don't write a line of code until ...", well! Who wants to code or test like that?

So much for complaining.
Any suggestions to happily marry coding and testing? 
See my next post.

If walls could tell stories

If walls could tell stories

My team finishes another stand-up near the story-wall. Some of us lean against it for support, otherwise, the wall is largely neglected. In the first 2 weeks of our sprint, at times, our QA reminds us of updating the cards, moving them to the correct states. From the third week, he also gives up.

Why is it that our story-wall has ended up as a rusty board?
Why are we not feeling motivated to move the cards?

I observe that the story-wall generally does not visually encourage us. A week or two into the sprint, and we have at least as many cards as our team size, on the board. And then, some urgent tasks come in, some tasks take longer than we initially thought to move and we wonder "So many tasks?!"

An agile team structure is some what like a team formation in a game. We also have flamboyant forwards, game controlling midfielders, play makers and some great defenders.

I remember having read some where that many agile methods are influenced by sports. May be that is why it is also suggested that an agile team may be of 6 to 11 members in size. Most team sports have teams of these sizes.

I wonder if we can (re)model our story wall like a sports team formation, say a football (soccer) team formation. We can choose different formation in each sprint to spice it up, like 4-3-3 or 4-4-2. There can be a goal, when a developer moves her card to system test and when the tester moves it to done. A review can be an assist. We can have golden balls & golden boots. The clock can tick with each day progressing. We can let each team member choose their position, may be even personalize it with an avatar or photo. Five days into the sprint and when our score line reads 1-0 at 00:05, we can even break into a jig.

What say?