Not too long ago, the senior IT director of my software development team dropped a little mini-bomb of an announcement on us.
He announced that our team, along with other software development teams under his org structure, were going to move off the Microsoft technical stack and embrace the Java technical stack for all future software project development.
When I first read his e-mail announcement, my first gut reaction was a mixture of fear and uncertainty. The reflex action part of my brain even entertained notions of polishing up my resume and putting feelers out there on the job market.
I felt like the rug got pulled right underneath me.
I imagine that my reaction might sound a little strange to anyone not in the field of software engineering and information technology.
After all, what’s the big deal? Microsoft and Java are practically the same thing, aren’t there? Don’t computer programmers know how to do everything?
As much as I wish that were true, computer programmers like myself don’t know everything there is to know about software development. In fact, being a software programmer is a constant struggle to keep our heads above the water and choose what technical areas to focus on.
Why? The problem is twofold
- Existing technology stacks continually evolve
- There are always new technology stacks
My professional software development career has been primarily in the world of Microsoft.
Microsoft’s primarily appeal to me, was the high quality of their software development tools and ease of use. Of course, it was the beginning of my programming career, and needless to say, it took a lot of mental sweat equity and work to learn and get proficient with Microsoft’s Visual Basic language and developer toolsets (one of their flagship technical stacks back in the mid 1990s).
Microsoft offered great technical support and produced excellent documentation for their development language and products. This was back at a time when Microsoft created paper printed manuals and documentation, the size of overweight telephone books!
And so my programming career was born.
Visual Basic was a great programming language to work with. It was easy to understand, very straightforward, and as the name suggests, used a flavor of the BASIC programming language introduced way back in 1964.
My very first computer I had as a kid, the 8 bit Commodore 64, allowed you to write BASIC programs. I started to write little BASIC programs.
That seed knowledge, even way back then, was a great stepping stone for learning Visual Basic. Basic control statements like if-then, while loops, and most of the BASIC keywords in the original BASIC language pretty much stayed in the same in Microsoft’s implementation of Visual Basic.
Looking back, with the benefit of 20/20 hindsight, I believe I chose a wise and fruitful career path choosing the Microsoft tech stack. Great dev tools, first rate corporate backing and support, and a vibrant and thriving developer community.
I couldn’t rest on my laurels, however. As I’ve alluded to in many of my previous blog posts and articles, the only constant in software development is CHANGE.
By the year 2000, Microsoft released a brand new technical stack called .NET. It was a new set of programming languages and APIs that allowed developers to write Microsoft Windows and web applications with a new language called C#. Visual Basic was also upgraded and enhanced to work with the new .NET platform.
I knew that in order to stay marketable with my technical skills, I needed to embrace the new changes Microsoft was introducing to their developer ranks.
Still, I wasn’t exactly elated when I first learned of Microsoft’s changes. In fact, I was a bit nervous. I was feeling like I was getting pretty proficient with Visual Basic, and now Microsoft pulled the rug from underneath me!
I was being forced out of my comfort zone.
But I went ahead and decided to embrace the changes. And now looking back with fifteen years of hindsight, it was a wise career decision … the .NET Framework has only grown stronger and more popular over time. There is a HUGE demand for .NET developers and major enterprises and their IT departments have embraced .NET as their core backbone technology for their enterprise development needs.
I learned the first major lesson about software development .. change is inevitable. Instead of FEARING it, one needs to EMBRACE change.
The second problem I mentioned is actually a bigger ongoing concern for software developers than the first problem.
We developers have to continue to embrace the changes and evolution of our core technical skills.
But we also need to be aware of changes happening OUTSIDE of our core skills and expertise, and I’ll explain why, in a moment.
Not very long ago, my software development team received an announcement we were going to switch from programming on the Microsoft .NET stack to the Java stack.
I had little to no previous experience using Java. I fiddled around with Java when it was first introduced in 1995, but it was only at the level of tinkering around with it.
My career, up to this point, has been pretty much grounded on the Microsoft technical stack.
After 15+ years on the Microsoft stack, I felt like a big fish in a small pond. Now suddenly, I was a small fish in a big pond.
My team is beginning to work on a new Java microservice project. We’re all pretty much in the same boat, so to speak. We’ve all been uplifted from our expertise in the Microsoft world and have been forced to work on a completely new tech stack.
Now, to be fair, Java and C#, the flagship programming language on the .NET Framework, are, from a syntax standpoint, practically the same. C#, slightly younger than the Java language by half a decade, was probably designed to be similar to Java, as a strategic company decision to lure existing Java programmers away to the Microsoft stack.
Yet, it’s still going to take quite some time to get proficient with this new Java stack. Getting used to new Java developer tools, all the new APIs that part of the core Java framework, and a myriad of other related technologies and knowledge that are needed for enterprise software development.
To be honest, the Java stack doesn’t really excite me. It’s different enough that it’ll round out and add to my professional experience on my resume. But similar enough that my development experience on the Microsoft stack will help me get more quickly up to speed
Yes, Java is forcing me to get out of my Microsoft “comfort zone”.
But to really get me out of my comfort zone, I’m taking on tech stacks that have a high probability of becoming the “new wave” of technology for future generations of software developers.
One is NodeJS and the MEAN stack. I’ve blogged about this before, but Javascript and Javascript related libraries are eating up the software world.
Frankly, I’m surprised Javascript has survived to this day. It was originally designed as a “helper” language to make static websites a little bit more dynamic.
But then some pivotal technical events happened that propelled javascript into a a serious contender. The introduction of AJAX (Asynchronous Javascript and XML) allowed websites to act much more like client desktop software. Google’s Gmail and Google Maps web applications, with the help of Javascript and Ajax, proved that Javascript could be used for professional level applications.
NodeJS came like wildfire on the development scene. Before the introduction of NodeJS, Javascript existed solely on the client-side, in a client’s web browser.
But with NodeJS, you could suddenly use Javascript on the client, the server and the database!
As a developer, this is a HUGE advantage. Now you can work in a SINGLE language across all major application tiers, client, server and database.
The other new technical trend that seems to be getting a lot of attention these days is functional programming. It puts the emphasis and importance on using functions and away from using objects in object oriented programming.
Many languages, including Javascript, are embracing this new functional programming style, including Scala, F#, Haskell, and many others.
Conclusion
I’m not trying to urge developers to abandon their core technical skills and experience.
A developer’s comfort zone is nothing to sneeze at … expertise is VALUABLE.
But that old adage that nothing lasts forever, is especially true in software development.
The march of progress and change virtually DEMANDS we software engineer prepare ourselves to get out of our comfort zones every now and then.
The temporary feeling of uncomfortableness and uneasiness we experience moving out of our comfort zones, is worth the long term benefit of staying relevant and marketable, long after a particular technical stack or framework is gone with the wind.
It’s the difference between the one hit wonder artist and the artist that stays relevant year after year and decade after decade.
Ice ice baby, anyone?