There Is No Wasted Knowledge
In a recent episode of the Fragmented podcast, Donn Felker walks through how to pick the next technology to learn. While the advice is generally pretty good, there’s one bit that I took issue with.
At a specific point in the podcast, Donn talks through the potential benefits and risks of dedicating yourself to a specific technology. In this case, he mentions what can happen if you become a Bluetooth expert but another wireless technology comes out. It seemed somewhat damning. The underlying message was that a lot of value is erased when your knowledge is superceded.
I don’t agree.
“There is no knowledge that is not power.” -Ralph Waldo Emerson
There’s a bit of self-reflection for me here. I consider myself a C programmer. In language, not in talent, though that might be accurate, too. I no longer start projects in C. I use C++. However, I’m increasingly switching to Rust.
I started my professional career as an indie Mac developer. I’ve put 18 years into learning and applying Objective-C at various scales. However, around 7 years ago, Apple announced Swift. There was (and is) a general expectation that the days of Objective-C are drawing to a close. While I expect it will continue to live indefinitely in Apple’s frameworks, I’ve accepted that spent far more time with Swift than I do with ObjC.
I don’t regret the investment that I made in these languages or in any of the technologies that I’ve learned. Information comes and goes. Technologies rise and fade. However, the information that I acquired and the concepts that I learned stay with me.
I’m able to pick up new technologies more rapidly because I can map them to concepts that I already know. I can infer important idioms because I can recognize the parts that are novel or different from the pieces that I already know. When I moved on from C and Objective-C, I left some value behind, sure. But I had a head start on the next bit of tech. I also got to carry a significant amount of value with me as I moved on.
You can take it with you
In the example from the podcast, we can put forth a scenario in which a programmer invests heavily in Bluetooth but another technology is introduced to supercede it. The programmer isn’t suddenly out of luck. The knowledge that he or she has is still immediately necessary for the current slate of Bluetooth-enabled products. The programmer also carries a lot of value forward in the career. If there was a transition to the new technology, this individual already has deep knowledge of the domain space and is likely to transition tech stacks quickly.
I sincerely doubt that any individual has dedicated themselves to learning a technology like Bluetooth for the sake of Bluetooth. It’s not the spec that drives passion and curiosity. It’s the problems that can be solved. People who learn Bluetooth are likely more interested in the field of near-proximity wireless communication. Bluetooth is their way to express that interest. They aren’t in it for the specific tech but rather for what it provides for them.
For this reason, I believe that people can and should choose their next learning opportunity with confidence. There isn’t a loss from diving deeply into a tech stack that you’re passionate about. There isn’t a risk that things might change and leave you with out-of-date knowledge. The only risk is in analysis paralysis. The loss is from the time wasted not chasing your curiosity.
The careers for software developers are spent in near-continual learning and knowledge accumulation. You can’t learn all the things, but everything that you do learn increases your value. You can expect to be learning new things and leaving old technologies behind. Don’t let risk aversion prevent you from exploring interesting areas.