This is a tale of personal frustration and reflection made immortal.
Laying in bed this morning, I realized that I’ve worked in five different ecosystems in just the last two years:
- an enterprise client (Windows, C#, NServiceBus, Azure, VS Enterprise)
- an enterprise client (Windows, Scala, Apache Spark, DataBricks, IntelliJ (Windows shortcuts). And also C#, AWS, Kafka, with a dash of Angular for good measure (VS Enterprise))
- a start-up client (Linux, React, VS Code)
- an enterprise client (Mac, Kotlin, Spring Boot, AWS, IntelliJ (Mac shortcuts))
Actually, that’s more like eight.
I’m not even counting tinkering with Arduino or Unity or dabbing a toe into the worlds of Elixir, Ruby, and Python. I also didn’t list ancillary tools, which vary as much as the tech stacks. Each of the above are things where my primary job and success was grounded in adapting to the platform and delivering paradigmatically quality code for each and helping others do the same. Oh yeah, and architecting and socializing platform-appropriate solutions.
In the same timeframe, I’ve also transitioned from Windows to Linux to Mac. Windows to Linux was comparatively easy. Shifting from Windows/Linux to Mac has been much harder and I’m not even close to over it (no help from the hardware being painfully unusable).
These are simply just facts.
Oh, and to top it off, my next engagement is slated to be Windows Desktop development, RDPing from a mac. 🍰
It feels like I have no idea how to write code anymore.
And the shift in operating systems and IDEs means where I was previously adroit in navigating my environment, the code, and generally feeling good, now I have to do a double-take for basic text editing and frequently find myself reaching for the mouse.
Do I appreciate the different perspectives each has given me? Yes, absolutely.
But the mental jumble is hurting me, and it’s becoming apparent that it’s hurting my career, too.
Interviewer: Tell me a little about yourself.
Me: Well, according to my resume, I’m pretty awesome.
Interviewer: Can you do xyz?
Me: Probably, I’ve done it or something similar before.
Interviewer: Please code your way out of this bag.
Me: Sure! … Just a sec while I look up the syntax.
Interviewer: What about using this language feature?
Me: Oh… right. Yeah, good idea.
Interviewer: Thanks for your time. We were looking for somebody with a bit more experience, though.
Some generalization is good, but clearly it can go too far.
Maybe the feeling can be likened to trying to learn a foreign language. And then another. And then another. I studied German in high school and Japanese about a decade ago. Most recently, I’ve been trying to learn Spanish, and in order to get my brain to stop reaching for the other languages, I’ve had to cut exposure so that it builds new pathways without constantly wandering off in the wrong direction. Coding feels somewhat similar in that so much mental effort is spent just finding which paths are applicable that there’s little left for scouting out idiomatic approaches or choosing the best one.
Sumimasen, ¿puedo tener ein bisschen más bitte ka. (Pardon me, can I have a little more, please?)
Author’s note: The abrupt ending is intentional. I will attempt to explore more around the topic of developer generalization for both individuals and employers in future collaborative posts. Thank you to the initial reviewers from Test Double who assured me that this post has value by itself. Stay tuned!