Software geeks have a reputation for being pretty smart. Footballers… not so much. But footballers understand something that software geeks don’t. Imagine this:
It’s 5 minutes to 4pm on Sunday July 13th 2014. The sun is high in the sky and the whole world is electric in anticipation. Rio de Janeiro is buzzing with a carnival atmosphere in that way you don’t see anywhere else in the world. The Estadio do Maracana football stadium is packed to bursting… no-one wants to miss a South American World Cup final between these old rivals, Brazil and Argentina… The chanting can be heard for miles around… the stadium is vibrating…. the stage is set.
Scolari begins his final pep talk to the Brazilian players who are eagerly awaiting his wise words before they play the biggest match of their lives.
“We’ve got this far doing what we know – but today we need to go a step further. We need to do something no one will never expect – we need to do something that will go down in history for its brilliance!
“For inspiration I have looked to some of the smartest people of this time – the people who are literally changing the way we interact with each other and the world around us. We are going to take an approach used by software geeks.
“This inspired plan is to treat football like a traditional Ford construction line. This is why for the last three months I have split the outfield players into three groups and I’ve sent you to three different training camps for specialised training. This is why you have never actually met in person until today.
“Defenders: All I want you to do is control the ball and boot it up to the midfield. Midfielders: All I want you to do is run up the wings and kick the ball into the 6 yard box. Strikers: Just wait in the 6 yard box for the ball and when it comes simply place it in the back of the net.
“By the way – I should probably do some introductions… Never mind – plenty of time for that after we win eh boys? Just remember, each distinct group has their own strategies to optimise their own little bit of the puzzle so please don’t tread on each other’s toes. Defenders, just let the midfielders do their thing. Strikers, you don’t need to know how or when the ball will get to you and whether it will come at the right speed, angle or position, just be ready when it does.
“Right – let’s do it!”
It probably isn’t a surprise that Argentina win. The Argentinian players understood each other. The pale blue strikers would do their bit to support the defenders when needed. The midfielders practiced with the strikers so they instinctively knew how to pass the ball in a way that suited Lionel Messi in front of the Brazilian goal. In contrast, the Brazilian team struggled to successfully pass the ball. Afterwards the Brazilian fans, cold and disappointed, ambled out of the stadium. After all the hype, why did their boys throw it away so shamelessly?
Don’t patronise me… Football and software are totally different!
Maybe it isn’t fair to compare delivering code without bugs to getting the ball in the opponents net without being tackled, but then again, maybe it isn’t that daft after all?
When you last had a failed deployment, why did you drop the ball? Was it your fault? Whose fault was it?
Oh, you are the DBA and that developer wrote code which they assured you had worked on their machine – but there was a problem with the deployment script they wrote – or they weren’t aware that you just cannot do X on production because Y? It’s their fault. Wrong. You are the person who has the experience to fix these problems, why didn’t you help?
Oh, you are the .NET developer and all your deployments work because you use the same method to deploy to each of your environments so clearly the guy who makes the production deployment in their own special way messed it up? Wrong. Perhaps if you had spent time thinking about how your code had to be deployed you might have spotted the problem earlier? I’m pretty sure that between you and the deployment team you could have worked it out?
In both cases you are part of the same team. Your goal is to deliver the software updates that the business requires. Why are the Ops or DBA teams rewarded for stability? Because this is one of the business requirements. Why are the developers rewarded for shipping new code? Because this is also one of the business requirements.
Wouldn’t life be a little bit better if you worked together?
Perhaps if Dave the developer sat with Susie and the rest of the DBA team for a day each week he would learn a little bit about why Susie can’t use his deployment tool. Perhaps he would understand the problems it can cause? Perhaps he would have a bright idea about a way to fix the problems?
Perhaps if Susie spent a day with Dave she would learn a little bit about source control? (She would love that – a way to track changes!) Maybe she would learn not to be so suspicious of CI? (She would love that too. Catching the bugs before they get anywhere near production! Lovely.) Perhaps she would be able to make suggestions for changes that would make production deployments easier or perhaps she would understand why Dave needs that test data and she will have a great solution for providing it on demand in a way that avoids all those compliance issues?
The Wall
In 1979 Pink Floyd released an album called ‘The Wall’. My old singing teacher told me she remembers standing in the playground outside the school staff room with all the other naughty kids chanting “We don’t need no education! We don’t need no thought control!” and “All in all your just another brick in the wall!” at her old teachers while they silently ate their lunch. The wall was a symbol of the divide between the kids and the teachers. Each teacher was another evil brick making the psychological wall between kids and adults more insurmountable. Any ‘us and them’ mentality is not healthy, especially when you are actually required to work together to meet the same goals.
So ask yourself some questions: Is there an ‘us and them’ mentality between people who work on different parts of the pipeline from dev to prod? Are you good at working together? Do you work in your own silos? Do you know how the people handle their bit of the deployment pipeline? Do you sit together? Do you know each other’s names? Do you ever drink a beer or a coffee together? Perhaps you even play football together after work? Are you making the problem better or worse? Are you a brick in the wall?
Sometimes, a good place to start is to look at where you work, and decide whether there literally is a physical wall between the guy who writes the code and the guy who deploys it. That probably says a lot about the organisational culture.
What could you do to tear down the (metaphorical or physical) wall?
The unexpected proof
I originally posted this on Friday May 23rd and it stopped there. What could you do to tear down the wall? The following Tuesday I visited a fund management company in London. Historically they had different functional teams who did things their own way and struggled to see eye to eye. In many ways they were the archetypal Ford construction line with a silo of developers, a silo of testers and a silo of DBAs, none of which was used to working with the others. Initial attempts to progress towards a more joined up pipeline stalled because they tried to introduce new processes and technologies without agreeing on a shared vision and goals they could work towards together.
I met one of their technical architects at Pipeline in April and he managed to set up a meeting with me and each of the key stakeholders for each part of the pipeline. About ten of us spent the afternoon in a meeting room and we put our heads together to work out what the challenges were and how to resolve them. Between the senior database architect, the head of config management, the head of dev and test, the DBA and various other senior technical and management people we were able to see eye to eye and form a plan to solve some of the key problems in their delivery process. (We decided to start at the source.)
It just goes to show that more often than not if you can ‘tear down the wall’ good stuff happens.
If you would like to keep reading…
This post was originally written three weeks before the World Cup. My story was completely made up, but it turns out that Argentina did make the final and that Brazil did in fact suffer a thumping defeat, albeit in the semi-final at the hands of Germany. I’ve analysed what actually went wrong for Brazil in ‘Don’t be a brick in the wall – Part 2‘ and there are some striking parallels with common patterns in modern IT teams.
Enjoy.