As a software developer, it’s key to keep your software development skills sharp. Like any other profession, unless you continue to strive to learn new things, your skills will atrophy.
Like a lot of other software developers, I like to attend tech meetups to help me keep abreast of new technology developments and trends.
I’m fortunate I live in Portland Oregon, dubbed “Silicon Forest” due to a wealth of high technology companies like Intel, that are headquartered in Portland.
My city is practically neck deep in tech meetups. It’s a rare day that doesn’t have at least one or two significant tech events you can enjoy attending.
I recently attended a NodeJS meetup hosted at Urban Airship. The particular meetup has three presenters, all discussing various aspects of the NodeJS framework, or software development in general.
During the question and answer period after one of the presentations, someone from the audience asked a very interesting question.
I don’t recall the exact wording of the question, but it revolved around how a software developer can be sure they’re investing in the right sort of training, technology stacks and knowledge in general, in support of their career.
In order to understand the context of the question, it helps to understand WHY it’s a question that resonates with many software developers.
In a nutshell, it takes significant TIME and RESOURCES to gain proficiency as a software developer.
To REALLY get proficient at a particular tech stack/programming language, won’t happen overnight. For myself, as a Microsoft centric developer, I’d say it took near TEN YEARS to really feel comfortable and productive as a Microsoft .NET software developer.
I feel very fortunate I picked a popular and successful tech stack, courtesy of Microsoft. It pretty much launched my career as a professional software developer, writing business software for various enterprises.
The tech stack and programming languages I work with continue to be valuable for my career. My city in particular, highly values Microsoft .NET developers and as long as Microsoft sticks around (very likely), software developers who decide to invest in Microsoft technology will likely enjoy highly successful careers.
But I feel fortunate in picking the right combination of programming languages and tech stacks that helped built my professional software development career.
But if it takes significant amount of time and resources to reach proficiency in a particular programming language and/or tech stack, how on earth do you know which one to choose from?
That was the question the gentleman in the audience asked, and I could tell from the reaction of pretty much everyone in the audience, that his question had lots of resonance and meaning to with many, if not all the software developers in attendance.
I may have been fortunate in picking the GENERAL tech stack (Microsoft stack), which I have built my professional software development career on, but that doesn’t mean I haven’t occasionally picked the wrong “horse”, so to speak.
Not too many years ago, Microsoft released some new whiz bang user interface framework technology called “Silverlight”, which was a web browser plug-in.
Microsoft created this new web browser plug-in because of what they saw as shortcoming in the current HTML technology at the time. Silverlight was a UI framework that allowed Microsoft developers to create rich, client desktop like experiences in a browser.
Imagine running something as rich and fully functional as Microsoft Word or Excel inside a regular web browser with the Silverlight plug-in installed, and it gives you an idea of what kind of user experience Microsoft wanted to create in a web browser environment.
When I first heard about it, I was very jazzed about it. I read Microsoft’s official documentation on their website and even purchases some technical books on the topic from the bookstore.
I went about immersing myself in the technology and after some extensive testing and tinkering, I concluded it was a solid technology that I could add to my professional arsenal of technical skills.
It truly did offer a very rich user experience on the web, when at the time, HTML technology was a bit lacking.
The reason for Microsoft introducing this was clear … they wanted to compete with Adobe’s competing Flash plug-in technology.
I thought the future for Silverlight and XAML (the underlying technology behind Silverlight) was going to be very bright.
That is, until Microsoft dropped a bomb of an announcement that they would no longer release any new versions of Silverlight. They would continue supporting it for a set number of years, but as anyone who works in technology knows, supporting something but not releasing new version of a particular technology is pretty much a death knell.
When I first read the announcement, I honestly felt a little betrayed and more than a little angry. After all the time and effort I put into Silverlight, I felt Microsoft made a major mistake dropping support.
But like that old saying goes, time heals ALL wounds, and the “wound” I suffered was pretty minor in the grand scheme of things.
With the benefit of hindsight, it taught me a few valuable lessons as well. Microsoft pretty much developed and designed Silverlight by themselves without any collaboration from other organizations or companies. They did not open source the technology.
Proprietary technology usually has a tough time gaining widespread acceptance. Over time, history has proven that these kinds of technologies wither on the vine. Take Adobe’s proprietary Flash plug-in technology which Silverlight was supposed to compete with.
Flash technology has been plagued with security holes which Adobe has been unable or unwilling to address. It posed a great security risk to computers and opened them up to the risk of malware and other nasty viruses.
Opening up proprietary technology and open sourcing it, means a lot of extra eyes and people carefully combing through the technology, finding and documenting flaws, and more importantly, IMPROVING upon it and raising the overall quality of the software.
And not everything was completely wasted. The databinding engine behind Silverlight came in handy when I started to look into AngularJS, an alternative UI framework which is currently a very popular user interface framework for web development.
The databinding concepts which I learned in Silverlight helped me quickly learn how databinding worked in AngularJS. In fact, overall, AngularJS felt like a distant “cousin” to Silverlight.
So not all was lost.
And yet the question remains … if there’s no way to predict which technology stack/framework/programming language survives and thrives, should we, as developers, be very picky about which technologies to invest in?
I’ve concluded it’s not worth the time to worry about it. Technology will ALWAYS change. Nothing lasts forever and everything is in constantly evolution.
We software developers need to learn to EMBRACE change.
Showing companies and organization that we can be flexible and adaptive to change is a very valuable and marketable job skill, indeed.
Knowledge is knowledge and the knowledge we gain, even from technology that eventually dies, will always have a good chance of being valuable in learning something else.