Programming

Thursday, April 27, 2006

I don't normally talk about work, but today I had a two fantastic talks.

The first talk was by Kevlin Henney on test-driven development. He is a bit of a guru so we were privileged. Introduction to software process. He says that waterfall works only for projects of 4 days, and the process simply doesn't scale up. In fact, Royce's original 1970 "waterfall" paper was precisely that waterfall doesn't work. Kevlin also says that design is an activity, not a phase, and that design is aways ongoing. A final example doing TDD using assert, to build up a simple most-recently-used class. We all love TDD.

The second talk was by a project (no, correction, a programme) manager. This is how my company manages projects. Page 5. A fricking waterfall. Except that this was Royce's deliberately wrong version of the waterfall with no feedback loops, and no agility. Design was a phase in the waterfall, not an activity. Well never mind. Lots of stuff on how to plan and break down tasks. What the milestones and deliverables are. Time to play bingo.

These are the words and phrases uttered during the project planning talk. I have added a definition to each word for the uninitiated:

activity - what people do when they're not attending meetings.

actuals - evidence that your developers aren't telling you porkies.

approval - when somebody really important nods their head.

at risk - we all know that product managers change their minds at least 10 times before deciding that what they originally said was true. Proceeding under that assumption.

allocation - putting developers on blind-dates with activities. By the time they realise that their activity is a complete dog, it will be too late to back out.

assumption - something that will come and bite you for years to come.

baseline - a line in the sand, that you can erase and redraw when you think nobody's looking. Attempting to change something baselined involves a change-control.

bring the milestone back - someone walked off with the milestone. Catch them, and make them do overtime.

build-cycle - Something that takes 20 manual steps, which takes 4 attempts to get right, whilst most companies press a button and 4 hours later out pops a CD.

buy-in - getting people to agree under false pretences or a big stick.

call-out - what a project manager does when you mention slippage.

change-control - a speedbump on the motorway of agility.

concept-phase - the phase that lasts 50% of the project, because that's the fun bit.

commit - apparently, male developers have a particular problem with this word.

complexity - if your diagram has enough lines on it, maybe you'll keep ahead of the developers??

code-complete - when all is done and dusted, apart from those 10000 defects logged against another project to not upset the stats too much.

complete-date - another fictitious date, in a long line of fictitious dates.

contingency - a concession that project plans are mostly fiction anyway.

critical path - what project managers fantacise about. This is the really important bit that project managers colour in with a red crayon.

dangling task - nobody likes a droopy task.

dashboard - the giant pointer of blame in the sky.

deliverable - at some point, you need to pull one of these out of your butt.

dev-team - the human livestock.

descope - when you realise that your eyes are bigger than your stomach, and you have bitten off more than you can chew.

drum-beat - what you hear whilst the project managers practise their voodoo.

driving - motivating using a large stick.

earliest date - in the starry-eyed concept phase, people romanticise about this date.

estimates - holding a gun so someone's head and asking them to make up a number.

factor it in - something written on a post-it note on the project-manager's monitor.

feature-complete - when it's not ready yet.

firm-up - make less imprecise.

focus - diverting resources from other peoples projects onto your project. Then motivating them with a big stick.

framework - a comfort-blanket for programme managers.

functional test - a game of ping-pong between developers and testers.

Gantt chart - a project manager's autistic little boxes. Giving something a name means it must work, right?

highlight - like Sauron's eye when something slips.

issue - a polite way to say "screw-up".

issue-management - herding cats.

iteration - because developers can't be trusted to think more than 4 weeks in advance.

key milestones - milestones that are less easy to sweep under the rug, but by the magic of shifting, we can anyway.

level resources - working people to the bone.

life-cycle - Plateaus 1-6 in the XwaterfallX project plan.

milestone - something you hide in the closet, that you take out occasionally and laugh about.

mitigation - a carefully constructed NMP field. (NMP = not my problem)

move-in - something your girlfriend wants.

multitask - being able to listen to a talk and play bingo at the same time.

objective - produce as much paper and go to as many meetings as possible. Oh, and deliver on time with quality.

owner - the shareholders of the company. Anybody who thinks they are an asset owner is seriously kidding themselves.

overall risk - multiply all of the risks together, and you get a 50% overrun. Hey the maths works even if the project doesn't.

phase - a magical entity that happens sequentially and concurrently all at the same time.

planning - what project managers love to do almost as much as attending meetings and printing things out.

programme - not to be confused with program. To a project manager, the programme is the deliverable, and the program is a side-effect. To a developer, it is vice-versa.

project-level - something not as important as programme level.

project-plan document - it goes without saying, everything needs a document, and this is the one about the project plan.

project manager - a wannabe programme manager. Someone with a laptop and a PDA, and goes to lots of meetings.

programme manager - where the real power lies. At this point, you get a laptop, a PDA, go to lots of meetings AND you get to boss the project managers around.

project schedule - the good intentions at the start of your project.

quality criteria - a number conveniently chosen to be whatever the quality is on code-complete date.

replan - what happens when fiction meets reality.

rework - in the rush to complete features in isolated projects, nobody had time to spot the fatal flaw.

resource-levelling - working some people to an early grave, whilst others sit around playing darts all day.

resource-manager - someone who makes sure people are looking busy.

risk - something that might become an issue (hey, I didn't go to a risk workshop for nothing!)

risk-register - a list of things that will eventually go wrong, due to Murphy's law.

roll-up - this happens at the end of a phase.

sandbag - I really haven't the foggiest on this one, but it's a verb.

schedule - like a plan, but more official sounding.

shifting - schedule, what schedule? Re-baseline and hope nobody notices. E.g. we shifted Huntsman and it came in on time.

slippage - golden words to a project manager. This will result in a flurry of meetings and paper, which is what project managers love doing the most.

smoke-test - a beehive analogy.

staged development - a process that is so indistinguishable from a waterfall, that people go to great lengths to state that it is not a waterfall. The lady doth protest too much!

system-test - not a unit-test or a feature-test. Monkeys pressing buttons at which point peanuts drop from the feeders.

task - segmenting up what the little people actually do.

team-knowledge - a foreboding of impending doom.

timescale - guess what - Einstein says there is no absolute time. Presumably the project-plan has been travelling at 0.99 times the speed of light relative to the project.

tolerance - what project managers begrudgingly have of developers.

up-front - anything up-front will need to change unrecognisibly, so it's best not to bother.

tracking - if you slip on a project, your project manager will track you to your house and strangle you.

utilise - steal from someone else's project.

visibility - poking your head above the turret. Always a mistake.

And you think techies are bad?!

P.S. This page is a tribute to our programme manager Sarah Walden who in spite of the jargon is fab!

0 Comments:

Post a Comment

<< Home