I have been spending some time during the last weeks ramping up on NodeJS, just out of personal curiosity. In the process, I've built mock up web API's, which I have hosted in the cloud. Going through this technical ramp up period, I have tried to lay my eyes on every piece of information about NodeJS, and eventually I found this article. The article is well written and technically accurate. It is not my intention to trash the article or its author, and I merely selected it for illustrative purposes because it embodies highly-specialized knowledge that is obsolete in a cloud-first world.
In a cloud-first world, all the complexities of infrastructure design, setup and maintenance are abstracted away from you and placed within the responsibility of your cloud service provider. I have to confess that, during my experiments with NodeJS, I barely noticed the value of this abstraction. It was not until I read the article referenced above, that it became clear to me how much complexity has been removed from my hands and how valuable that is. Consider the following examples:
- Installing and maintaining the operating system? Done for me.
- Patching? Someone else does it for me.
- Scripts to recover the app when it crashes? It's detected and done for me automatically.
- Load-balancing? Done.
- Bandwidth? Unlimited (your wallet is the limit).
- Scaling under heavy traffic? 2 configuration fields away and it is done.
- Deploying your code to the server(s)? Done for me in seconds.
- Continuous integration? Out of the box.
- A/B testing? Out of the box.
The list is much larger. All the steps I enumerate above are technically complex and important the provide scalability and reliability to your application. It is also much better if someone takes care of them for you. By not having to do any of the above myself, I have saved substantial amounts of time, and so can you and your organization.
In a cloud-first world, people whose core skillset is the mastering of commodity infrastructure tasks are becoming obsolete. As cloud adoption continues, these skills will cease to be necessary to organizations or all kinds. In the cut-throat, ultra-competitive world we are currently living in, business managers are aggressively pursuing opportunities to reduce costs. In fact, in many mature industries and markets (such as insurance or consumer goods), I argue that the majority of executive plans are focused on cost reduction instead of value creation. As I described in a previous post, the value proposition of cloud services is too compelling for business managers to ignore, even if that means short-circuiting their own IT and procuring services themselves (in what is known as "shadow IT").
Under these conditions, you will need to upgrade yourself to remain valuable to your organization. I strongly believe that, in the next 3-5 years, these skills will lose relevancy, particularly as adoption of Platform-as-a-Service and Software-as-a-Service increases:
- Network and infrastructure design and maintenance.
- Hardware capacity sizing.
- Storage management and sizing.
- Operating system management.
- Source control management (the infrastructure side of it).
In contrast, these skills will be in high demand:
- Solution design and architecture.
- Analytics (both the back-end and visualization sides of it).
- Development of highly-scalable, mobile-first software.
- Software integration (specially between different cloud vendors).
- Cloud Service Brokerage services.
- Security and identity management.
- Rapid, agile development.
- Project and Program management.
To all of you infra guys out there: it's time to move up the food chain into better and greater things, things that offer more value to your organizations. Things that will allow you to unleash your creativity into products and services you yourself can build and realize quicker than ever before. Agree or disagree? Please comment below.