Several years ago – I would regularly travel from Washington State to New Jersey for business. I worked at a wonderful little telecommunications company whose headquarters were down by the “Jersey Shore”. :)The team was fantastic, the product was fun and highly technically interesting.
Whenever I’d head over there I’d inevitably find myself in a Panera with one of my teammates, who happens to be a very good friend. And we’d see if we could run them out of coffee before we run out of philosophical problems that we wanted to solve. Usually the restaurant would close and we’d have to leave…..
There’s a spectrum in software development. A spectrum relating to how much philosophy, talking and deep thinking people want to do about the work that they do. At one extreme – typing in code and seeing the computer ask “how high” when it is told to jump is viewed as the single most valuable and important thing. On the other extreme – if left to their own devices, these developers would sit around talking about the meaning of agile, the best possible way to structure code and how the two fit together for hours while at the same time not actually writing a single line of code.
As someone who has an in-built wiring for the latter end of the spectrum, a thing I’ve been learning lately is that operating off of an intuitive, not fully explicit understanding of a thing can be very effective. Even as I type this my instinct begs me to reconsider. But it is in fact the truth; furthermore a lot of information can be gleaned by those of us that want to learn from someone who operates in this space. By observation and by imitation and by active questioning – that is, by helping the potential teacher put their intuition into words.
Not only can it be very effective. It can be MORE effective than having a deep explicit understanding of the topic or action. Because turning intuition into words is expensive in terms of time.
I was helping my brother-in-law to build a deck a few years back. Already, for those of you that know me, you might be giggling at this point. But it’s a true story. Anyway – I somehow ended up with the task of building steps for the deck. And so, I started with what I knew about parallel and perpendicular lines from geometry, then started doing some sines and cosines from trigonometry. When he saw what I was doing he hid it well – but I’m pretty sure he was laughing at me. He said, “just use the template”. Basically, trace along a pattern that has been pre-cut and then cut it into the steps. My first, gut reaction, I kid you not was that that sounded like cheating.
We were building a deck, not pursuing understanding of physics or geometry.
Again, even now, my gut disagrees with me on this but I’ll say it; we were not cheating.
In agile – when we build things, we break them down into user stories for PRECISELY THIS REASON. I do not think I am alone amongst programmers who, when they are given a task, take the one that will end in the most thorough understanding and most considered approach. Stories put a boundary around that impulse, help us to define “the template” by limiting ourselves to what is directly useful to the person we are building for.
So it goes with philosophizing about software development. To the extent that we justify our thinking by our work, its value is defined by its multiplying effect on our production. But not all thinking multiplies the things that we are trying to do right now. It might help us in the future or it might help others – and both of those are valuable. Knowing, then, what are goals are (immediate production, helping others, future production) and what their respective weights and priorities are will put us in a better position to decide if we continue to think, or if we move on to coding.
Don’t get me wrong; deep thinking about software development is not something we in our industry have an over-abundance of. But what I am saying is that there is a time to remember that sometimes you’re just building steps and thorough understanding is overkill.
So in an effort to maximize velocity and the immediate value we are creating, sometimes there’s great wisdom in the words of Crash Davis, “don’t think, it can only hurt the ball-club”.