What software knowledge will stay relevant?
I recently wrote that a lot of our current first-order knowledge won't matter very much any more, but some of it will matter more than ever." I've been asked whether I know what that knowledge is.
No! I do not. Some of my initial conjectures didn't make much sense:
- I briefly thought that knowing stuff about distributed version control (e.g., git) would be durably useful, but now I'm not sure. I don't know what tools we'll use for version control (Jujutsu? Something else? People are speculating!). Moreover, I find myself delegating more and more git mechanics to AI.
- That situation is part of a more general pattern: knowledge of fundamentals, especially of fundamentals that tended to confuse programmers, attracted writing. LLMs thus know a lot about git,
package.jsonconventions, and so on. If I suspect something is too essential not to know, they might actually be so essential that LLMs have had wonderful educations about them. - As I've often written, I'm skeptical of my (or anyone's) ability to know much about what the future of software development looks like. I therefore can't know what first-order basic knowledge will remain essential.
That said, I'm often using my intuition for what choices cause observed behavior of a system. I'm often reasoning from what I see to "aha, X is probably depending on Y" or "why is it hitting the DB now?!" or whatever else. This isn't what I'm calling "first-order knowledge," but you can train yourself in it, and I expect it will be useful for a long time to come.