We talk about toys. We love new buzzwords. We adore things that sound cool. Yes, we do.
Is it the gamification of career? Do we collect such things like achievements in a computer game? Add “Haskell” and “Blockchain” to your CV, and you will get a “rockstar” badge. Bonus points for using both on the same project.
For the last two years, I attended more conferences than ever before, but I noticed significantly less software craft-related topics. A lot of new programmes have joined the industry. They read blogs, they attend conferences, the listen to podcasts. They want to learn, but they are exposed only to hype and buzzwords. They must dig really deep to find the nuggets of knowledge which will not be outdated in a few months.
Almost everything we learn will be useless in the near future. In the past, I have made a few mistakes while buying books and I still have books about Android 2.0, C# 5.0, Spring Framework 3. They were useful… once.
On the other hand, books about design, good practices or case studies will be relevant for years to come. I won’t say always… I almost wrote that word, but then I looked at my desk. There is “The mythical man-month” waiting to be finished. In my opinion, it is still interesting but no longer useful. Just an excellent pre-Agile book.
As a consequence, we not only spend a tremendous amount of time learning about things we don’t need right now, but we also try to use them in our projects. Which leads to over-engineered code, wasted time and money.
I remember that a few months ago I was extremely frustrated after a conference. It was two days of buzzwords. Two days of wasted time. Wasted, because I knew I would not remember anything useful after this conference. After that conference, I wrote a blog post “Buzzwords, buzzwords everywhere.”
In this blog post, I compared our industry to a twenty-year-old aggressive man with a drinking problem. If you have ever met such a person, you know what I mean.
When we focus on hype, we may learn something useless. Something that we never need. The problem is that some very, very popular technologies may be utterly useless for you.
I have made some failed investments of time. I learned C#, I have never written a production application in that language. I learned Android development, I wrote one useful app. It was many, many years ago and I no longer remember anything about Android. I learned Silverlight, the technology had died before I could use it at work.
On the one hand, learning things you don’t need yet is risky. On the other hand, how are you supposed to stay relevant, develop new skills, and get some experience?
We must find the balance between those things. I wish I knew how to do it, but I have no idea.