Wednesday, April 27, 2011
Tuesday, April 19, 2011
This started as a joke I put up on Twitter, but the more I thought about it, the more I feel how we could learn a bit from the Empire, by looking at how they run projects, and how not to fail like that in our teams.
1) Death Star Vs Alderaan
The Death Star is a planet killing ultimate weapon. Woot! And part way through Star Wars IV A New Hope, it appears above Alderaan, and blows it to smithereens.
This Governor Tarkin claims this is the first demonstration of it's firepower.
Now if this was a truly Agile project, then in the first part of the film, the Death Star would have gone around blowing up an asteroid first, then a small moon, before moving onto Alderaan, to effectively show the capability of it's destructiveness in a couple of iterations.
Okay so the Death Star worked - but what if it hadn't? Instead of feared throughout the galaxy it'd have been on the "and finally" section of the news.
2) Getting the Death Star working
There is a gap of 20 years between the films Revenge of the Sith and A New Hope. In A New Hope it's said that the Death Star is only just operational.
And yet in Revenge of the Sith, the Death Star is shown under construction – that means they took 20 years to finish it and work the bugs out of the system!
Ever heard of deadlines? C'mon we've got a galaxy to run here!
3) Blowing Up The Death Star
The plans of the Death Star appear in the second film, Attack of the Clones. In A New Hope, the Rebel Alliance get a hold of them, find a weakness (the exhaust vent leading to the main reactor) and attack it.
Yes – it took over 20 years to get the Death Star working, but they kept to the original plans – they never went “wait a moment ...” and thought of a better way?
4) Stand-Up Meetings
The Empire never got the hang of stand up meetings. Look at this – only Darth Vader is getting into the spirit of it. And even then he ends up force-choking another member. Which is a novel way to keep meetings from over-runing.
5) Armour Plated Solutions
The AT-ATs were better armed and armoured. They won, they took out the bases reactor and shields.
But they were also very slow. By the time they got to the reactor, the Empire had given their competition the Rebel Alliance enough time to get ahead of them and move on to a new base.
Had the Empire used landspeeders themselves, they could have quickly taken out the reactor, and wiped out the Rebels there and then.
6) Embracing Failure
No-one in the Empire really learns from failure – as they often end up being force-choked to death.
This is particularly bad as sometimes the one to blame for Luke Skywalker getting away is Darth Vader himself. Poor management.
7) Hoping the Little Problems go away
On Endor, the Empire was plagued by little fury pests. Rather than deal with them decisively, the stormtroopers just hoped they'd go away and not bother them.
In the end those pesky Ewoks ended up ganging up and becoming a giant problem which brought down the Empire.
When you can, exterminate those Gremlins before they gang up on you!
Friday, April 8, 2011
So I've chewed out the "bad" ways we sometimes communicate - what are the good ways to do it?
The project I work on has got communication down to a T, and their rules are pretty good. They call them Agile-ish or "pragmatic development". Having got used to them, I find them pretty smart.
If you have a technical issue,
- try and find the person you need to chat with, and talk
- failing that, book a meeting
- or else phone them
- only if all the above fail, write an email
- if you write an email - no more than three paragraphs. Keep it short and to the point. No massive lists, no more than a few points.
- keep documentation brief and readable
We're trying to come up with new ways of displaying information. For instance I have been talking with my Testing Learning partner from my old company. We both have the same worries - you write your test plan, but does anyone read it?
A solution suggested from Agile Testing by Lisa Crispin and Janet Gregory is to produce a 2-page test plan of the salient points. What I've since been working on was an idea suggested by a couple of people from the Software Testing Club - a mind map!
Basically at the moment (it's a crutch I know) I'm still writing out my traditional 12 page test plan, but supporting it with an A3 mind map based on an structure provided by Ivor McCormack ...
It's truly a thing of beauty isn't it?
I've used this for two projects so far and been amazed - I put this in front of a manager or developer, and within a couple of minutes we're cutting to the chase, and discussing testing effort. It's that intuitive and easy for another party to pick up - success!!!
My study partner has also seen this, and taken it to use on her project. I'd like to take credit, but it's a collaborative effort, and proof how testers through the internet can share stories and education to help each other.
At the moment the traditional test plan exists in the background, but I'd like to eventually move to just a mind map. I don't know if it's possible, but it would really ease things if we could. Everyone seems to love them, and it takes 5 minutes to pick up vs hours of review!
Tuesday, April 5, 2011
Over on the Software Testing Club I've been talking a little bit about communication within teams and it's been interesting to see how passionate the responses have been.
We've all been there – been given a series of planning and design documents for our project. They're very long. And dull. And when you're reading it, it goes
“The system will readily maximise future leverage in the marketplace under the caviat that increased technical processing will accelerated – blah blah blah – oh this is so boring”
Yup – and there's usually about 60 pages in that vein!
Over the last few years I've read some truly mindnumbing documents. We then send them to the customer, and get really irate they never comment back on them. Or worse still when we deliver and they go “why does it do that?” we go “but we told you in that 400 page technical spec!”.
Why are we making it so difficult? Let's step back from the problem first and ask – how would we as engineers solve a similar problem of communication if we were dealing with a technical computer based issue?
So like the SOA examples I've talked about previously we need two computer programs to communicate how would we deal with it?
First off we should be going “why are we communicating”. Most communications fall into one of what I call “the 3 i's” …
- Instruction – telling another party to do something
- Information – providing another party with data of some kind
- Inquiry – asking another party for information
So whatever we're communicating for the computer, it had to fall into one of those. If it's not, then it's just waffle / overhead, and we need to bin it.
We then take a lot of time thinking about protocol – we want the messages we send to another system to make sense there, and likewise we want the information we receive to make sense to us. We also know that brevity is key – if we make messages unnecessarily long, we know it'll consume bandwidth without really delivering any kind of value or service. If not, then once again it becomes an unnecessary overhead.
We are super-optimised when it comes to dealing with communications between systems.
Why then are we so bad at communicating with each other?
No really we are! We're so good at the rules of communications on computer systems, we know its a complicated minefield, so we treat it with respect.
But we've known how to write since school and been talking since we were about two. Easy peasy, it just comes naturally hey?
And so we run meetings which constantly run overtime, but don't go anywhere. We write reports which are too meandering and too technical for the audience, and no-one reads anyway.
No – no – NO!
Let's try this again.
Every email, memo, report we write needs to be tailored just as we'd design a computer message.
We need to make sure it has purpose – that it either informs, instructs or inquires.
We need to make sure it has protocol – that it conforms to an easily understood standard by the intended party, and has the information they need without unnecessary length. That it is targeted for it's intended audience.
We also to use plain English where we can. Sometimes we expand what we write with buzz words and jargon because we feel it gives a certain grandeur and polish to what we say. I know many a person who's a bit guilty of using a “posh word” in not quite the manner they really should. Instead of looking clever, they look stupid, and this can also mean confusion creeps into what they're doing.
If not careful we can become like some aging thespian saying “To be or not to be. That is the question. Whether tis nobler in the mind to suffer the slings and arrows of outrageous fortune. Or to take up arms against a sea of troubles, and by opposing, end them”.
Most kids if you said that to would go “huh?”. However if you said “Look shit happens. Either learn to take it or give some back alright?”, they'd go “ah”. Targetting for the audience you see.
Some of you might say that's not proper English, but then (and no offence, as I love his work), neither is Shakespeare these days.
Let's keep it simple eh?