Discover more from Software Design: Tidy First?
More What, Less How
Synthetic -> analytic skills
The year is 1975. My father, an accomplished assembly language programmer, is hearing increasing noises about higher level languages like C. C promises to let the programmer decide what the program needs to do and then the C compiler will decide how to do it.
The compiler will never be as efficient as hand-coded assembly language & cycles are precious. The compiler is getting better.
The compiler will never be able to cram as much code into as little space & space is precious. The compiler is getting better.
The compiler takes longer to run than the assembler & compiler time is precious. The compiler is getting better.
And think of all the finely-honed skills my father would be giving up if he moved away from assembly language:
Keeping track of what is in each register at all times.
Keeping track of what is on the stack.
Minimizing data movement between the two.
Memorizing all the details of the entire instruction set.
Having an accurate mental model of the execution time of each instruction & how the instructions affect each other.
How → What
I hope you see where this is going. Large language models promise to let people say what they want a program to do & the model will figure out how to accomplish the task. Yes, and… Once you’ve specified what the program is to do in sufficient detail that the program does what you actually want (for the moment—your desires always change), then the language in which you describe “what” is, information-theoretically, equivalent to a programming language.
GPT is a little different, but it’s also technological innovation tale as old as time—more what, less how.
My tweet that kicked this off stated that 90% of my skills are now worth $0 but the remaining 10% are worth 1000X. Lots of folks asked what’s the 90 & what’s the 10. If I knew, that’s what I’d be doing.
I don’t know what’s the 90 & the 10, but I know where & how to look. Where to look is in analytical skills. Choosing what. Changing what based on feedback. Finding odd analogies. Connecting weird things no one else would think to connect. That’s where to look.
Skills that let you synthesize, to create a solution from scratch, those are the skills that become less valuable in this new world. Skills that help you analyze problems & solutions, those are the skills that just gained leverage. Lots.
How to look is to go back to Explore in 3X: Explore/Expand/Extract. The rules of exploration are that it’s a numbers game. More experiments, more value. Try a little bit of a lot of things. One of those experiments will have dramatically more impact than anything to date. Follow up that.
(Meta comment: this essay is exactly that process for me. My tweet & essay about my experience with ChatGPT generated 3 times as much traffic as my best previous day on this list. And so I’m following up. On a Saturday. Even thought I want to get back to talking about the glories of software design. This is what the Expand phase looks like.)
What did my dad do? He jumped from assembly language to C. He still worked on the same kind of micro-controller code he always worked on, but the compiler let him do so more efficiently. He let go of those how skills & learned to focus more on what.
In a bittersweet ending to the story, when I got to & through college & objects became all the rage, I waxed enthusiastic about this new technological wave that would let you decide what & the computer would figure out how. My dad tried & failed to figure out object-oriented programming. He kept writing micro-controllers in C until demand finally dried up, he aged out, & he retired.