I’m on a 12 week software bootcamp run by Makers Academy and this is my reflective blog on the experience. This past few days I’ve been thinking a lot about the act of learning, being taught, teaching and growth.
If what we are learning is a city of knowledge, then it can be tempting to view an experience like this bootcamp like a version of the famous London taxi drivers knowledge. In order to be allowed to be licensed as a black cab driver in London you have to learn every single street. I mean. Every. Single. Street.
There are thousands of streets and landmarks within a six mile radius of Charing Cross. Anyone who wants to drive an iconic London cab must memorize them all: the Knowledge of London.
Its incredibly impressive — and in many ways, despite the hugeness of this task, there is also something very knowable about this path to success — when I know all the stuff, then I’m there.
Taken as a metaphor for learning to be a software developer, it starts to look a bit problematic however. What if I want to work in a different area than the one I learn in for example? Reflecting on this I think maybe it’s more helpful that we get really good at reading a map. Then we have learned the skills we need to make our way anywhere — including places we haven’t thought of yet. And while knowing all the stuff brings a confidence with it, so does knowing how to find your way.
But software development can also be very creative. What if I want to work in new areas. What if I want to make my own map? Reading existing maps is really useful, but there is also some lower level skills needed here too. Compass reading, topography — and writing it down — mapping new places so others can follow you. I was thinking about how much I have changed even in a week on this bootcamp. I used to fire solutions at problems until they went away. Now I study the error messages and follow a procedure. Consequently I am much more certain of why something works and of how I got somewhere.
Process is emerging as a key thing to note and build. As I was walking through London with one of my kids yesterday I remembered stories I’ve been told of characters leaving a trail as they enter an unfamiliar wood, so they can follow it back — and I wondered if in some way TDD provides me with a path to follow. The satisfaction not just of something working, but of knowing why it works.
I’ve been really struck so far at Makers by the style of leadership. There is a total absence of expert energy. Instead there is a humble openness and confidence to the coaching. I feel that me and my cohort are really listened to and our thoughts and ideas allowed to be heard and acted on. Nothing is wrong or right, and I feel like a real effort is made in trying to understand our emerging process. If the coaches are the Senior Devs in the team I am currently in, then this is something I would really like to learn from as I progress.
There was a brilliant moment when pairing on Wednesday when we came across a resource that said “Error messages are good”. I’m not sure I was really quite ready to hear that at the time, so I responded with an eye roll and some nervous laughter. But actually — in this nugget is perhaps one of the most important things I’ve learned this week. It’s all about the error. What’s it trying to say to me? How do I fix it? I am starting to learn that I have the best experience when I stay really close to this — just fix the error in front of me. When I lapse into trying to address several things at once a couple of things happen. One I move into assumption — I don’t actually know if there is an issue beyond the one error I am supposed to be addressing and second I become overwhelmed very quickly as I am not able to see the consequences of the many changes I am making. So just address the error message. One at a time. Step by step.
So error messages teach us something, and this got me thinking about the errors I make as a person. They teach me something too. As I type this I’m a little overwhelmed by the hugeness of this. I’m 43 years old, and for most of my life I have been told that I can learn from my mistakes, I’ve liked social media posts that say things like “your mistakes are your teacher” but I’m not sure I have really managed to get with it yet. Maybe change is coming. What if the mistakes I made where there to allow me to incrementally change — as the messages in the terminal allow me to move forward in tiny steps. One to think on…
Which leads me to think about how to react to the curriculum, my peers progress, my progress and struggles and growth generally. We have been told there is far too much resource available to us on the course to do it all. And anyway, if that resource is the taxi drivers knowledge of London, it doesn’t serve us well if we end up in Coventry anyway. So how would it be if each step of the course means different things to different people depending on where they are at. That our progress through the course is also teaching us — helping us to see where we are and what we need to do next.
So what is this experience? Where are we going? It’s a path to being a software developer obviously. I wonder however if we’re being encouraged to see that we are already there. I started this blog thinking about how to be a Software Developer. Maybe instead I am a Software Developer learning how to be.