Novelty Makes Novices
My experience in the last decade have been that software developers are asked to learn new technologies with such frequency that novice level skills have become a semi-permanent norm that is expected and accepted.
Here's some technologies:
- clojure
- edn
- kotlin
- maven
- VS Code
- vim
- elasticsearch
- kafka
- kafka connect
- kafka streams
- mongodb replication
- event sourcing, change data capture architecture, CQRS
- avro
- graphql
- graphql schema delegation
- apollojs
- nextjs
- postgresql ltree plugin
- yarn
- advanced circleci configuration
- advanced docker
- mozilla sops
- kustomize
Is that list everything I've used in my 20 years in the industry? No! That's just tech I had to learn and use in my 18 months at Reaction Commerce! That's more than one each month. Alomst every one of these represents "probably should read at least 1 whole book on this" depth.
Then of course we go through an acquisition and our tech stack changes pretty much completely. 2 new programming languages, 2 new databases, a new public cloud, a new RPC system, in-house frameworks and libraries, and so on.
In terms of my personal job satisfaction, I'm hoping that now that the acquisition transition is pretty much complete, I'll start to have at least a few stable bits of my tech stack: mostly the same DBs, programming languages, and cloud managed services. I enjoy doing work with intermediate or advanced skills a lot more than I enjoy learning new things and fumbling around as a novice. Of course others will crave and flourish with a series of new stuff to learn in a cursory way.
Thinking more broadly, I have some vague concerns about this might have an indirect causal relationship with the generally terrible state of technology at large, but I have no way to really test this, and the even second level more cynical side of me suspects maybe even if expert implementations were the norm, tech would still be mostly terrible because we don't really care about making it good.