Cartoon Truth
A cartoon from Mastodon inspires some thoughts.
The picture, for those who haven’t been watching, shows two contenders in the Olympic air pistol competition. Most of the competitors trick up with special lenses, arm braces and strange postures, while the competitor from Turkey just came out in a t-shirt, stuck his off hand in his pants pocket and shot, winning silver.
The joke for us, presumably, is that the young developer uses all these buzzy things and the old timers just casually write good code. I’m here to enjoy the joke and to say that it’s true and yet it isn’t.
There’s no doubt in my mind that a skilled 20 year programming veteran can, in their milieu, produce working code rapidly with seemingly low effort. Similarly, any master craftsperson makes their craft look smooth, elegant, and easy.
Well, above I said “working code”. I have met many top programmers in my life, some of them truly amazing, and I have never met one who no longer made mistakes. The very good ones made careful silent decisions, knowing rather well what they could do, say, without testing, and what needed testing, extra care, a scribbled diagram, even some research.
The very best, watched by someone who could recognize what was going on, would see them writing lots of small tests, considering the domain as they design, building just the right objects, checking the behavior of the code, meeting well-known characteristics of good design, avoiding duplication and so on.
In short, the best experienced developers I know use TDD, DDD, OOP, BDD, SOLID, DRY habitually, automatically, and well. It’s not that they don’t do those things: it is that they do them so gracefully that it’s hard to see.
“But”, you say, “I know an experienced programmer who doesn’t do all that stuff and they still …”
I suppose it could happen. There are plenty of ways to be good. But I’d bet that if I were to sit down and watch and analyze a truly good programmer, I could point out where many, perhaps most of the ideas on that list were coming into play. It would be fun to find out.
Are there exceptions? Sure, there must be. I have observed one good programmer who seemed to do it by keeping the whole program in his head. His code worked. I couldn’t understand it, but, as far as I could tell, it worked. How did he do it? I honestly don’t know. Could I teach someone to do what he did? Not possible. Could he teach someone else? I frankly doubt it.
Me, well, I have six decades of programming experience. Six. That’s scary, think how #$%#! old I must be! But my point, and I do have one, is that I do think about TDD and BDD and OOP and all that jazz, and I use those ideas, and every time I program, I think about how to use them, and when I’m at a pause I think about how I could apply them better.
It gives me great joy to use the right tool, the one that fits in my hand perfectly and does the job exactly right. And it gives me joy, at a pause, to reflect on how it went and how I might do tomorrow’s work just a bit better.
And, yes, ask me a programming question in the areas where I’m experienced, and I might just stick one hand in my pocket and give you a really useful answer without all those TLAs and NLAs2. How can I do that? Luck? Inborn talent? Practice with the TLAs and NLAs? Constant attention to how things are going?
All the above, I guess. But I think it comes down to thoughtful practice, paying attention to the ideas within and behind all those acronyms.
And oh my friends, it is such fun!
-
Alt Text: Picture showing two Olympic air pistol shooters, one young wearing all kinds of gear, the older Turkish shooter standing casually in t-shirt with one hand in pocket. (He won silver.) The young one is titled “Developers after six months experience: TDD, DDD, OOP, BDD, SOLID, DRY, Copilot, ChatGPT, Claude3, …”” and the older one “Developers after 20 years experience: —”. ↩
-
Three-Letter Acronyms, generalized to N-Letter Acronyms. ↩
-
You may notice that I do not comment on the “AI” “tools”. I’ve tried them a bit. Sometimes they offered useful advice. Sometimes they were flat wrong. There are reasons to dislike them, not least that they consume more energy than a small country. ↩
