Software development can be a complicated process as the complexity of systems grow and the number of people involved increases, especially when these things happen quickly. This is when clear direction is important. Equally, if not more important is the experience and maturity of the teams building the software. Their ability to learn and adapt to the challenges that arise from the growing complexity will depend on mindset and the ability to work together. If a whole team can grow to understand the driving forces delivering the right software in the right way, it can be epic. So... STORY TIME!
A walk in the dark
Imagine trying to walk to the top of a densely forested hill in the dark with no path to follow. Even if you know where you should be going, finding your way would be nearly impossible.
Your goal is simple, get to the top of the hill. Easier said than done. As you stumble around in the dark, trying to head up the hill, you constantly run into obstacles. You trip over roots that you cannot see and have to push your way through brush and trees that seem to have a will of their own to hold you back. Why is there no path up the hill? Has no one gone this way before?
As you persist you trip and fall, sliding downward, losing elevation in seconds that you worked what seemed like hours to gain.
Could this be easier? Of course but how?
What if there was a light at the top of the hill? This would help some. For one we would know for sure if we were heading in the right direction. We would have a feeling for whether we were getting closer and how far we have to go. We could use it to determine how thick the undergrowth is by the amount of light that shines through, helping us decide on a direction of approach.
Does this light help us in actually walking? In doing the actual work of moving forward? Not really. It is still dark in the forest, there is still no path, and you are still tripping over those damn roots!
What if a friend appears with a torch? He has been up the hill before and he has a good idea of the best route with the least resistance up the hill. Does this help? Immensely! The going is still slow but you can now see where you are going. You have someone to warn you of roots. You can even see the roots. And you can catch each other when you stumble. You can even carry the torch for a while...
So what the heck does this have to do with software development?
For those of you who have been on some tough software development projects, the analogue is probably quite obvious.
Goal: Get to the top of the hill
In business having a clear goal is important but a goal tells you the what you want to achieve, not necessarily how you are going to achieve it. Blindly following the gradient up means you are probably moving toward your goal but it does little in informing how to achieve it.
Vision: Follow the light
Having a clear vision of how a goal is going to be achieved is important. It sets a light on top of the hill to be followed. Again it does little in terms of the how but it gives anyone working toward it a clear sense of moving in the right direction.
Experience: A friend to help find the way
The most innovative goals. The clearest vision. None of these are worth anything if execution fails. From this you may think my analogue is about Team Leads or Architects who tell development teams how to execute. It is not. The torch bearer shows you the way by walking with you. Guiding, teaching, catching, and learning too. If you want to change the software that teams build you need to change the culture of the teams that build the software.
If you remake awful software from scratch without changing the culture that created it: you'll remake awful software— Romeu Moura (@malk_zameth) October 15, 2015
Goals, visions, speeches, manifestos, and tech radars. These things are all useful. They give a direction. They light a fire on top of a hill. They do not however really help people get to the top of the hill. That is done by building people up. Making sure teams have the skills, the collaborative environment, the mentors and experience available to find the path in the dark.
Although I like thinking software development is like engineering, mostly it is like a long hike in the wilderness.
Sometimes it is boring...
sometimes you see amazing things...
sometimes you get lost along the way...
so its good to have someone with experience...
and its easier if you bring some friends.
I hope your path is challenging and fun, that you meet good people along the way, and that it is well lit.