In the fall of 1999, I dropped my plans to attend grad school to embark on a career in IT. The industry has changed considerably since then mostly for the better. In fact I’ve never been more excited to be a software developer.
As part of a personal retrospective on my career, below are my thoughts on the top six shifts in IT. By a “shift” I mean a change that has profoundly affected the way developers go about their daily work.
6 - Automated Testing
When I began my career, I’d never heard of automated testing. TDD, BDD, ATDD - these acronyms didn’t exist. Instead, QA teams manually chugged through test plans and clicked around on a UI all day. The power of automation seems so obvious now that writing tests is a given. I don’t know of any development shop that still relies on solely manual testing. And that’s a huge win for the industry.
5 - .NET
The .NET software framework was created by Microsoft for developing applications across multiple languages. It was released in 2002 in conjunction with a new language C#. It exploded in popularity because it made creating Windows apps as easy as VB6, but its base class library was as powerful as MFC. Since then, .NET and C# has become a mainstay in the Microsoft development community.
I’ve been working with .NET since the beta. I liked C# because it had more language features than VB6 (my first language) but was easier to learn than C++. Microsoft has evolved the language well adding generics, extension methods, dynamics, async support, and more.
In recent years though, .NET’s popularity has been stagnating. The iPhone and iPad pulled many developers into Apple’s ecosystem while Node.js is taking hold on the web side. .NET remains a solid platform, but it’s starting to feel left behind as the relentless pace of technological change marches on.
4 - OSX
When Apple’s OSX was released in spring of 2001, Microsoft Windows was the dominant operating system. OSX was Apple’s attempt to reboot the Macintosh brand with a modern OS. It threw away backward compatibility with Mac OS 9 in favor of a fresh start. The first two versions were rough but improvements came with each release.
There were previous attempts to break the Windows monopoly. OSX succeeded where various Linux distributions failed. It gained enough market share to revive Apple and laid the groundwork for iOS which runs the iPhone, iPad, and Apple TV.
Today, its market share isn’t dominant, around 6.0%, but it has a significant following in the software development community. OSX forms the development base for all of Apple’s products and ensures it will be the launching point for apps and third-party offerings for years to come.
3 - The Browser Wars
In the 2004 Microsoft’s Internet Explorer browser had a stranglehold on web browsing. Netscape had been vanquished and open-sourced, but out of its ashes, Firefox emerged. I’ve used it from version 0.4 when it was called Phoenix. Firefox’s distinguishing feature was tabbed browsing which IE didn’t offer. As Firefox gained market share, websites were forced to drop their IE-only approach to development.
Google’s Chrome browser accelerated the changes that Firefox started. Chrome’s innovations included the V8 virtual machine to speed up JavaScript and process-isolated tabs for a more stable browsing experience. Other browsers responded with their own virtual machines and better security. Chrome’s rapid release schedule pushed its competitors to release new versions more frequently.
Perhaps the biggest innovation was spurred by the V8 JavaScript engine. Node.js uses V8 to run JavaScript and has expanded the language’s reach into the server. The Node community is vibrant and pulling in new developers each month.
Today the web landscape has totally changed. IE is just one of several high-quality browsers. Microsoft was forced to embrace the openness of the web and no longer try to subvert it. The intense competition has forced browsers to support the latest standards and innovate quickly.
2 - The Fall of Giants
During the spring of 2009 I was watching an episode of the news program 20/20. One of the topics was the dominance of RIM and its Blackberry smartphone. My wife had just bought us two Blackberry handsets, our first smartphones, so we paid close attention. An interview with one of RIM’s CEOs (oddly there were two) left us reassured that we chose the right phone. He was confident in the Blackberry platform and dismissed the upstart iPhone and Android OS.
We had those phones for three years, and in just three years, the Blackberry went from market leader to bottom feeder. It was an amazing transformation. A dominant corporation was decimated in such a short time. Nokia and Motorola went through a similar decline when first the iPhone and then Android quickly gained market share. Even Microsoft wasn’t spared as consumers transitioned from the PC to tablets. Microsoft still dominates in businesses, but it is struggling in the consumer space.
1 - Open Source
Open source software (OSS) once meant GNU, BSD, and other projects that sprung out of academia. Linux was still in its infancy and struggling on the desktop. Commercial software ruled the landscape. Shrink-wrapped boxes and retail distribution was how we got our operating systems, word processors, and games.
Today it’s a different story for OSS. It is everywhere. Linux taught us groups of people working remotely can still manage a massive software project. Tools like Github and Slack have made it even easier. At the same time, the internet enabled a model that favored selling services over retail software. Companies like Google and Facebook can afford to create software to enable their businesses and then give it away. In return they get contributions from third parties.
OSS is huge and shows no sign of slowing down. Its impact has been tremendous which is why it tops my list.
What’s Next?
There were several items I didn’t mention including continuous delivery and virtual reality. These areas are hot right now, but I don’t think they are mature enough to be labeled as an industry shift. It’s going to happen though.
So what did I get right? What did I get wrong? Let me know in the comments.