"I felt a great disturbance in the Force, as if millions of voices suddenly cried out in terror and were suddenly silenced." - Obi-Wan Kenobi, sensing the destruction of Alderaan
All the non-Star Wars fan please condone the cheesy quote, yet given that the majority of the target audience community are geeks and nerds it kind of feels appropriate to use it as a metaphor for what happened yesterday. It all started with a simple tweet:
Coding is becoming childsplay. Makes you wonder if there is still a future as a developer...
It turned into a lively discussion on Twitter (incl. jan.penninkhof2, dj.adams, frank.koehntopp and Ian Daniel) and during the course of the conversation it turned out that Tom was actually ranting about something slightly different: the fact that the business does not value code quality and as such hires the cheap hacker, rather than the experienced software engineer. Yet it may be best if you directly hear it from him: Is there still a future in development? by tom.vandoorslaer
As said, I take the opposite view on that controversial matter. I believe that the golden era of software engineering is yet to come. Here's 3 reasons why:
1. Software is eating the world
In the meanwhile this article by Andreessen made its round and while it may got a bit dull from overuse, his rationale remains valid: going forward everything will be driven by software. Everything... and while the numbers differ from one prediction to the other all analysts predict that the number of devices joining the internet of things will greatly outnumber us humans. Consequently, developers will remain a scarce resource. Sure, the absolute number of developers will grow tremendously, yet the demand will exceed the number of available human resources in the coming years! (Who came up with that term anyway?!?)
2. The Platform Wars
It already started - what happened in the mobile space will repeat itself in the enterprise software space: that platform wars already rage! Cloud computing is taking over (see The Cloud Platform Play) and we see a shift from heavily customised on-premise systems towards standardised SaaS (Software-as-a-Service) solutions. With that trend there'll be a shift in the type of software in demand. I do see two extremes here: on one side there'll be a huge demand for simple, business-savvy applications running on these platforms (very similar to your typical ABAP program these days) and on the other side there'll be a small number of extremely complex technical projects to address the infrastructure challenges accompanying the digital era.
At the moment topics like Big Data (see lambda architectures) and elastic cloud architectures dominate the technical spectrum, and developers with these skills do earn a premium salary. Can't predict the next big thing (firmware for embeddable nanobots in the age of Singularity?), but if there's one thing I learned working in IT it's that there is always a next big thing just around the corner (and the speed of innovation is accelerating!) So, there will always be a space for knowledgable pioneers...
However, let's get back to the shift in application types. As stated, I see two extremes... complex custom coding vs simpler standard solutions. The big platform provider will address the later. They'll probably use a fabric approach to address the common requirements for enterprises. Their cloud platforms will make it easy and quick to develop business-logic applications based on a comprehensive set of technical capabilities provided by the underlying platform. That's the promise of Platform-as-a-Service: to free developers from having to solve all the complex challenges of enterprise-grade software and allowing them to focus on developing the required business logic. This is what made R/3 and ABAP so successful. These people will not need to know much about proper software architecture, fail-over mechanisms, disaster recovery, elasticity, etc. And yes, I'm sorry to say ... that's not gong to be a very comfortable position (see A Call to Arms for ABAP Developers by graham.robinson.)
At the other side of the spectrum will be custom coding. Here, experienced developers will be required! A huge portion of this space will be about integration. Complex system landscapes and custom requirements will be the norm. To be successful in this space you'll need to be sort of a polymath and capable of holding your ground on an aspects of software development. You need to be able to derive solutions based on customer requirements and that will require both technical and soft skills. Both things you only learn through experience.
However, there'll also be demand for developers developing both the next gen of SaaS solutions and technical software (e.g. firmware, adapters, etc,.) I believe that there'll be plenty of smaller companies that will claim a white space and use their expertise to position themselves. In the platform area the early bird has a great advantage and a good chance to establish themselves as the goto solution in a specific vertical market. I'd expect that to be a very lucrative business and a very comfortable job for developers as well.
3. Survival of the fittest
Now, that argument counts double: once for companies, once for individuals. Let's talk about companies first. As I outlined above, the sweet spot will be in custom coding. With a standardised core, the main area to differentiate yourself from the competition will be through unique processes that separates you from the crowd. Here time-to-market will be crucial! Furthermore, companies will treat this very area very carefully as this is their biggest advantage. Do you truly believe that companies will put the future of their companies at risk by handing it over to the hands of script kiddies? See! As one of my mentorettes (marilyn.pratt) once put it so eloquently:
"People do business with people they trust!"
The only way for companies to get/stay ahead of the competition is to constantly evolve and stream-line their business. It requires a very skilled team of developers to create and maintain an extensible application that is both flexible and robust. Companies will bring their A-team to the job!
Which brings me to the individual level. Every smart developer will know his market value and charge the respective price. Hence, companies will get what they pay for. In my career I witnessed it multiple times that we lost a bid to a cheaper competitor and a year later the customer came back desperately. On that matter, I just attended the Mastering SAP Technologies conference in Melbourne and this topic was omni-present. From what I can tell, those (and I won't put them on the spot here, you know who you are!) that have been able to build a reputation for delivering quality work are in high demand.
All of the above makes me confident that the golden era for software engineers is yet to come! Furthermore, I have no doubt that people like Tom will be the ones leading the charge - he's just that type of guy companies will be looking for! And while I haven been ranting about the current position of developers within a company's pecking order for the longest time myself, I came to the conclusion that things will change for the better.
At the end of the day I have to agree with Tom's closing words:
"So I'm not saying development has no future whatsoever, but it'll be very different from what we know today. A freelance developer will have a hard time making a living, no matter how talented he is. Successful developers will have to be more, than just developers. They'll have to be architects or entrepreneurs. And that is no easy task."
Right! Yet, it was always like that: technical skills won't be enough. Never was, never will. So, you better skill up - NOW!
Or what do you think? Do you share Tom's view or mine - would love to hear what you think!
PS: One more thing... there's one argument that Tom brings up that I have to comment on, which is software being a virtual business. Absolutely! Yet, I believe that's one of the things that make the job as a software engineer so attractive - the fact that we can work from anywhere as long as we have a reliable internet connection. Many seasoned developers do get to work from home, some even travel the world and work from wherever. Yet, of course that requires trust between the developer and the employer. How do you establish trust? By proofing your value... over and over again! There you go...