As professionals we should, for the most part, find ourselves in a perpetual state of learning. It is when this trend of a ferocity for consuming knowledge subsides that we find ourselves bordering on mediocrity and threatening to fade away into the abyss of the typical. As a junior, mid and senior level developer I was constantly reading. Looking back I now wish that I had, at times, chosen different content, however I still give myself kudos for reading something.
As part of the shift from a mid level engineer to a senior one I began taking part in interviews, a process that has left me confounded at the masses of software engineers that consider themselves to be senior level but are anything but. My wife has mastered the lingo and many of the buzz words of the industry simply from being around me for my years of service to the software industry. However, the difference between my wife and many buzzword slinging prospects is that my wife will openly admit where her knowledge is lacking. Job candidates, however, often do not. I am continually astounded when I ask a “senior” level engineer for a couple books they have read only to find that Sam’s Learn [LANGUAGE] in [TIMEFRAME] is the front runner in their literary portfolio. I must admit I have read some of these books and I actually think they have their niche in which they provide benefit, however you will never hear me mention them in line with Design Patterns: Elements of Reusable Object-Oriented Software, Refactoring: Improving the Design of Existing Code, or Effective Java.
I like to consider myself a very good software engineer – I study hard, I try and stay abreast of the industry, I practice hard and learn from my mistakes, and I pay attention to those who I have recently seen dubbed as software “rock stars”, people like Joshua Bloch and Martin Fowler. It pains me to see such a high number of software engineers that expect the longevity of their career to dictate both their status in the field and the quality of their output, as this expectation is a fallacy in its purest form. I have worked with many individuals who possessed unbounded potential but refused to apply themselves. Likewise I have worked with many whom have had unbounded potential and have applied themselves, many of which I expect to some day see in that ever expanding “rock star” clique.
The point here is simple. Those who read and apply themselves will, talent willing, find themselves moving into the upper echelon of the software world. Those who don’t are destined to remain followers of the software elite. Don’t believe me? Check out The Mythical Man Month and pay close attention to the emphasis that Brooks continually places on the programming elite.
Of course the true irony of this post is that the intended audience is unlikely to ever read it.
If you look at the trend the world (at least the one I know…) is taking, everything is driving towards instant gratification. You can purchase college degrees online, lunch is guaranteed in 10 minutes or its free, and even doctor’s offices focus on getting as many people in and out as quickly as possible. With this trend comes a sense of laziness and the (incorrect) assumption that anything that requires a lot of effort is something that can just wait until it is simplified.
Fortunately this is not the case in all scenarios and there are a number of hard working people out there that are willing to work hard to create value for themselves and their society. For those who aren’t: we need fast food workers too.
Fantastic post. The irony you mention in your last sentence is the most interesting to me.
An appetite for learning is crucial for a software developer; for any professional, really. It seems obvious, but it’s clearly not a universal belief.
Why do you think this is?