Thursday, 4 May 2017

Things I do in real life that show I'm a programmer

Sometimes the way I talk, the way I interact with people or just the way I do stuff betrays (at least in my mind) my background as a software developer.

Endless Refactoring

I am constantly annoyed by how inefficiently my wife loads the dishwasher. There are some spaces that are clearly suited to the pasta bowls and the dinner plates, some that are better suited to the cereal bowls. More than that, if you load the pasta bowls from the right and the dinner plates from the left, you can use each space on that row. If you load the pasta bowls from the left you cannot load dinner plates to the right of those spaces because of the way the bowls are shaped. This is really obvious. It is also simple. And yet, no matter how many times I point it out, she always does it wrong. The result of this is that the dishwasher appears full when it isn't. A simple re-organisation of the contents makes the space available that was otherwise wasted. I therefore constantly refactor the dishwasher after my wife has put stuff in it. I find I cannot just put more stuff in. If she puts a pasta bowl in the wrong position and it is the only thing in there, I HAVE to move it. I guess this is because I know from experience that if you leave smells lying around they morph into a horrible mess before you know it.

See also refactoring the fridge and the (very few) shelves allocated to me in the bedroom wardrobe.

Optimising Journeys

When you work in London there are many ways to get from one place to another. Many years ago a friend of mine (who is from the midlands and back then was not at all familiar with London) told me that he came to London for an interview and the instructions simply said "nearest Tube station, Euston Square". This was long before smart phones or Google Maps. So he got to Euston Station and looked on an Underground map. He saw that to get to Euston Square he needed to go to King's Cross (one stop on the Victoria Line) then change to the Circle Line and go one stop to Euston Square. The famous tube map gives no indication of how long it may take to switch lines at any station. It also gives no real indication of surface distance. So he made his journey and emerged from Euston Square about 20 minutes later. The first thing he saw was the street sign that says "Euston Station - 300 yards".

Not all journeys are so obviously sub optimal. But I have always tried to know where the exits are from the platform that I'm going to arrive at so that I can get in the most appropriate carriage. I love the latest version of London Midland's application because it tells me which platform the trains are leaving Euston by and thus which entrance to the station is optimal. Should I really be concerned with optimising my journeys to this extent?

Retrospectives

I guess this is more of an Agile thing than strictly speaking a developer thing. After a few years of indulging in blamestorming and defensiveness I started to be involved in the culture of continuous improvement as my previous employer evolved. When I moved to ThoughtWorks I finally shed the last vestiges of defensiveness and started to view regular retrospectives and feedback as opportunities to learn and improve. The trouble is when I try to engage people who aren't from this background in conversations about what went wrong or what could be improved or how we can avoid excessive risk, then I get a wall of defensiveness and accusations that I'm attacking people. Oh how I wish people could detach from the obviously over emotional reactions that have to advice or criticism and start to engage with opportunities to improve.

Am I expecting too much of people who haven't gone through an Agile transformation?