Where is the Nanny?

– this is a direct parody of @unclebobmartin’s post, “Where is the Foreman?" –

The nanny in a household is the lady who is responsible for making sure all the kids do things right. She’s the lady with the tape-measure that goes around making sure all the clothes fit properly. She’s the lady who examines all the hair, teeth, and floors to make sure they are clean, and don’t have any significant food particles. She’s the lady who counts the buttons on the jackets to make sure they won’t gap open when they’re worn. She’s the lady – the lady who takes responsibility – the lady who makes sure everything is done right.

Where is the nanny on our software projects? Where’s the lady who makes sure all the tests are written. Where’s the lady who makes sure that all the exceptions are caught. Where’s the lady who makes sure all the errors are checked, and that references can’t be null, and that variables are thread-safe? Where’s the lady who makes sure that the programmers are pairing enough, talking enough, planning enough? Where’s the lady who keeps the food off the floor?

Without a good nanny, a nursery would fall apart into chaos. The children wouldn’t line up. The jackets would hang askew. The pants would be on backwards, and the underwear on the outside. Without a good nanny the diapers and the cups would both leak, and the whining of babies would be heard in the drawing room. Without a good nanny the children would get to school very late, with a huge mess left behind them, and have abysmal outfits.

Without a nanny, the floors would be covered in food.

What would the nanny do on software project? She’d do the same thing she does in a household nursery. She’d make sure everything was done, done right, and done on time. She’d be the only one with commit rights. Everybody else would send her pull requests. She’d review each request in turn and reject those that didn’t have sufficient test coverage, or that had dirty code, or bad variable names, or functions that were too long. She’d reject those that, in her opinion, did not meet the level of quality she demands for the project.

I imagine that many programmers recoil in horror from the idea that someone else would have the power to judge their code and reject their commits. After all, how can you get done on time if the code has to be right? How can you possibly meet your schedule if you have to write all those tests? I mean, if there’s a lady who’s actually going to look at the code, then there’s no way to make yourself look good by saying that the code is done when it’s not. It’d be awful.

Awful or not, it’s what most industries do. If you want to get a project done, done right, and done on time, you need a nanny. And that nanny has to be so technically astute that she can check the work of all the workers. She has to have the authority to reject any work she considers sub-standard. And she also has to have the power to say "No” to the unreasonable demands of the customers and managers.

Where is the nanny on our software projects? Where is the lady with the commit rights? Where is the lady who makes sure all the tests are written, and all the concerns are separated, and all the right dependencies are inverted?

Why don’t we have this lady?

Is it any wonder that our floors smell like breakfast?

———————

Gendered language matters. It matters to who feels like they belong, who feels like they should be in charge. If you are skeptical of this, please please read (or at least skim) this satirical piece by Douglas Hofstadter:

http://www.cs.virginia.edu/~evans/cs655/readings/purity.html