As I am doing a lookback on 2010-2020, here are the major changes I've observed on software engineering. If this decade proves anything, it is that technology keeps changing and evolving. But, there is still some stability: Java and JIRA. Let's see if they will survive the next decade as well, and where the trends of 2020 will end up that time.
What changed the most between 2010-2019
- Dev expanding into ops and QA. In 2010, SDETs were a thing at most companies, and developers rarely deployed to prod. By 2020, engineers deploying straight to prod - devops - is growing, and with it, automated testing. QA still exists but is increasingly specialized. Microsoft no longer has an SDET track, that they have had the previous two decades.
- Cloud usage. Especially with the cloud being quite expensive, the amount of usage is staggering. Many smaller companies start off on the cloud and don't consider running their own servers even when cost savings would be significant. I also would have bet Google being the market leader, not a distant third. And Amazon being the #1 cloud provider...?
What did not change the past decade
- Java. A mature, solid, and sensible choice for backend development in both 2010 and 2020.
- JIRA. Complain as much as you want; I've yet to see a company above 500 people who don't change to JIRA for project management sooner or later. There is only competition on what to use for project management for smaller orgs and teams.
- Companies re-discovering engineering best practices through trial-and-error. Unit testing, code reviews, having a spec before writing software. All make perfect sense, have been proven to work, whitepapers and research published on them. Yet, new companies with proven business models often don't use them, until they accumulate so much tech debt that they discover their value through trial-and-error. Developers with the "senior" title in some companies often see little value in these practices. I hope this changes by the next decade - not the least why I'm writing a book that will hopefully raise awareness on these topics.
- Windows Phone. Born and dead in the same decade. If Windows Phone had a gravestone, it would have a live tile that reads "2010-2019. RIP." It's a bittersweet part of history for me, as I was a prolific developer at the peak of the platform, clocking a few million downloads on my free apps and tens of thousands of paid app purchases. These apps also opened up a lot of doors in my professional career.
- iOS/Android split. iOS is where the money increasingly is, but Android has users - who are more and more reluctant to purchase apps or in-app. While both iOS and Android devs are in demand, I predict iOS getting more investment from companies, due to higher overall revenues and much higher revenue per user.
- Smartwatches: Apple won. Apple Watch took the market, where both Pebble and Google Wear had the head start, but failed to capitalize.
- Developer experience: one step forward, one step back. For someone who has built Windows Phone apps 2010-2013 using Visual Studio 2013, Xcode and Android Studio is still years behind that 2013 Visual Studio developer experience. But time proved that Apple was right: focus on the customers, and developers will put up with Xcode. They won't have much choice.
- Cross-platform mobile development on the rise. React Native took off from 2015 and Flutter in 2018. Cross-platform mobile development still is not a silver bullet and does not save as much cost as many teams hope, but adoption is growing.
- The death of Rich Web Applications. Remember Silverlight, Flash or Java applets? They all had high hopes in 2010 and were retired a few years later. This was due to...
- The rise of Single Page Applications. Angular, Knockout, Ember, Meteor were the hot kids on the block and the way to build complex web apps 2012-2015. Many companies/teams who were building RWAs before moved over to this more web-based stack.
- React and Vue. Starting 2015, React, Vue and other frameworks have gained popularity over the first generation on SPA apps.
- Browser consolidation: goodbye multi-browser worries. In 2010, web developers had to cater for IE6+, Firefox, Chrome, Safari, perhaps Opera. By 2020, most developers will ensure it works on Chrome, and the rest will follow. The more thorough ones will test on Firefox and Edge - but Edge is also on Chromium. Food for thought: if JQuery did not exist already, would there be a need for something similar to be built in 2020? My take is that there wouldn't be.
- Developer tools: thank you, Google. As disappointing the developer experience is on mobile for iOS and Android, on web, Google has built quite spectacular tools. The debugging, performance and memory profiling capabilities of the Chrome dev tools are second to none.
- Devops. I did not know what oncall was in 2010, even when I was technically oncall on a key launch. In 2019, all fast-moving tech companies empower engineers to deploy. In return, they are oncall, responsible for automated tests, monitoring, alerting and operating backend systems.
- Microservices. Together with devops and empowering smaller teams came smaller services. Initially thought as a silver bullet for faster development, teams quickly realized that hundreds or thousands of small services bring plenty of headaches. Been there, done that: and while thousands of microservices is something that sounds cool to brag about, most companies who have been here are now scaling back, having "good sized services", to a more manageable number.
- Distributed systems - the real-world use cases and the hype. In 2010, apart from Google and Facebook, who really needed truly distributed services? By 2020 the number has gone up, significantly, and the tooling to do so became more commoditized. The means to build highly reliable services is more common knowledge. There's a catch: it's expensive in many ways. And many startups and engineering teams are jumping on the bandwagon more due to the hype, than a real need.
- New languages, old languages. Pleasant new languages: Go, Rust. Not-so-pleasant new ones: NodeJS. Existing ones here to stay: Java, C#, C++, Erlang. Ones fading, though still plenty of usage: PHP, Perl. Languages struggling to break out of their niches: Haskell, F#. One that fades, then comes back: Python - Python 2 reached end of life, but Python 3 probably will see more adoption. If you don't agree: it's probably me, not you.
For a more in-depth review of changes in distributed computing, including containers, NoSQL, streaming and CI/CD, see the in-depth review of the last decade by Cindy Sridharan.
- Diversity and inclusion. In 2010, tech had a large diversity problem and no one was talking about it. By 2020, everyone is talking about it. Some are talking about inclusion as well, and more individuals and companies are doing something about it. The problem is still here though.
- Bootcamps as a means to enter the industry. In 2010, a tech bachelors was a de-facto requirement for most jobs, with a few being fine with self-taught applicants. Bootcamps, starting around 2015 are re-shaping this, offering career change opportunities to many. They are overselling how much they teach though, and underselling how tough breaking into and staying in the software industry really is.
- Engineering management evolving. 1:1s, servant leadership and coaching/mentoring directs might have been a thing in 2010, but I did not know anyone who experienced these - myself included. Managers were either non-technical or tech leads with no training and few ideas what to do. This is changing drastically. Starting 2017, high-quality engineering management books have been published starting with the Manager's Path. EM communities and good conferences are gaining awareness and popularity.
- Brilliant jerk developers fading away. In 2010, the industry was filled with "brilliant jerks" and 10x engineers - guys who were supposedly great coders, but had zero social skills. If you could not work with one of these people, the blame was on you. With more mature engineering management, managers (and teams) now realize how toxic these people are. Better companies don't hire people with toxic attitude. See also the No Asshole Rule book.
- Startup options are not always tickets to millions. Up to 2010, purchasing startup options seemed to be sure way to millions. 2010-2020, this was less and less the case, as downrounds and unicorns folding became more common than unicorn IPOs. The note from Startup L Jackson still stands, with its takeaway: "don’t join a startup for just the money".
Featured Pragmatic Engineer Jobs
- Senior backend engineer & Senior frontend engineer at Rise Calendar (EU, €80-120K + equity) I'm an investor.
- Software engineer at Interact (Remote, $120-200K + equity)
- Full stack software engineer at Pallet (New York, Remote, US)
- Engineering manager & Software engineer at Orbit (Remote, global)
- Senior platfrom engineer at Qualified.com (Remote, US)
- Product engineer at incident.io (London, £70-130K + equity) I'm an investor.
- Tech lead/Senior fellowship at Commit (Canada): test startups for 3 months at a time!
- Founding full-stack engineer & Founding web3 engineer at Launch House (Remote, US)