In a memorable scene from HBO’s Silicon Valley the team roll their sleeves up (figuratively) and sit down to ‘write code’. Despite being a show noted for it’s realism, I contend that very little time in software development is actually spent ‘writing code’.
Let me explain…
Ok, so here’s a loose schematic for how software might be developed:
10 Design
20 Writing
30 Review
40 Testing
50 Debugging
60 Revision
70 Goto 30
80 Deployment
90 Profiling
Maybe that is too far abstracted from real-world industry practices, but notice that the writing of the code is only a small part of it nonetheless.
From my personal experience, I’ve spent much more time just thinking about how I want my software to work. In a memorable episode of The Amp Hour, Claire Wolf recalled how she spent months contenplating a new project - the writing was a brief period at the end. This is probably unusual, but I would assert that brain time is an incredibly useful - and efficient - thing to indulge in.
Also, I’ve spent much more time writing code outside of an IDE, like in phone memos - another practice that I recommend (except do it on your desktop/laptop, phones are not the tool for this🤦🏻♂️).
Another thing is, and I’m not sure if I’m alone in this, is that it is hard to author code and type it at the same time.
Put me in front of vim, with another terminal ready for go run ...
, and I’m most likely to get stuck in an ever increasing and mind-melting loop of change-and-compile. Progress grinds to a halt.
If I take a break for a few minutes, hours or even days, what I need to write will spontaneously materialise like magic. This can be noted down in the moment for convenience, and the actual process of ‘writing the code’ is more or less just a matter of typing it out.
Well, I admit the title of this post is incorrect, fair cop. But for me it boils down to one honest maxim:
writing code is only about 10% of software engineering
And for the adventurous:
Thinking time is much more productive than typing time
I have a theory that this is how pair programming works. If just one person is at the keyboard, each participant can be in one of the modes of typing or thinking, without having to rapidly context switch between both. Someone should do some research on this. Someone probably has.