The tsunami of technology disruption is far from over. As Uber and Airbnb have disrupted the taxi and hotel industries, the public cloud is disrupting the global IT industry. The disruption is so considerable, many of the long-standing job functions in IT will either be dramatically reduced or eliminated completely. The epicenter is in your backyard — enterprise IT — and unless you manage your career wisely, you will be on the outside looking in, wondering what the hell happened to your predictable, six-figure job.
For the last four years, CTP has facilitated two- and three-day Cloud Adoption Workshops – a mashup of technology, organizational change and psychology – that focus on moving workloads to the public cloud. The workshops are challenging and emotional, with lots of fear and confusion. Attendees want to know what’s going to happen to them. Rightfully so, their long-standing careers in IT are under serious attack from hyperscale cloud providers.
Consider the following classic enterprise IT functions that are in jeopardy, or are undergoing serious redefinition, with the adoption of the cloud.
The Data Center is Code
For the first time in history, application developers can provision, manage and decommission all the required services to deploy their applications. No longer is the development community dependent upon a single source for compute, storage, networking, security, logging and monitoring. Today, all the services required to build, deploy and manage an application securely are available from the three major public cloud providers.
All data center services can now be deployed using software, and with that transformation, ALL of central IT is undergoing serious redefinition. And when we say redefinition, we’re referring to the obsessive, relentless drive to improve the organization’s bottom line. Right or wrong, your job is on the chopping block, and unless you identify and acquire the right skills, you will become a statistic of technology disruption.
The Skill of Learning New Skills
The first and most important skill you must have is the skill of learning new skills. Your ability to learn new technologies — on your own — must be in your DNA. Blaming, finger pointing and holding resentments may feel good for a short time, but they do not pay your mortgage or put your children through school. You must move beyond the fear and anxiety of the unknown, and look to how you are going to acquire the skills necessary to make The Big Leap.
The key skill you must have is the ability to learn, which means you must first admit that you do not know a skill. Your openness to new technologies, processes and, yes, people skills, are your key to advancement in this new era of computing. Whether you are in the data center or the management suite, your ability to pivot is more critical than ever.
Fitting into the Full Stack Team and finding your seat on the Full Stack bus is the primary goal. Don’t try to be everything to everybody. The Full Stack Developer or Engineer is typically a unicorn. Specialize in a domain, and go deep into the topic. Moreover, learn what the team needs, and align that need with your background and interests. Raise your hand for the S3 bucket and EBS management if you’re a storage expert. These are aligned, and you should make the leap pretty easily.
The real challenge ahead is deciding where to apply your efforts. Cloud technologies are complex, and an ever-changing matrix of services that are moving at an astonishing rate from all three big cloud providers. For example, figure 2 outlines some of the 1,000+ new services or new service features introduced by AWS just in 2017.
Decide which services you are going to learn that will bring the highest benefit to the company, while not losing track of the real world around you.
Learn to Code Services
The first thing you must embrace is code. If you are not familiar with languages like Python, JSON, Terraform, Ansible and PowerShell (just to name a few), then it is time you made The Big Leap and learned the basics of these languages and why they matter to your career success. At the very heart of the cloud movement is code and the ability to program services in the cloud to deploy and manage your applications safely.
Coding infrastructure isn’t anything new. Software-defined cloud platforms have been around for a number of years. AWS, Azure, Google and OpenStack platforms expose their APIs to users like yourself who can create, deploy and manage applications from programs you write and manage. And because you are a “Systems Engineer,” you have the distinct advantage of understanding how an application should run in the data center. Your knowledge of networking, server builds, storage arrays, patching, backups, redundancy, identity and security give you a leg up over your Development counterparts.
But here’s the problem — THERE ARE ALWAYS CODERS! If a developer learns what you know about systems engineering, YOU’RE OUT OF A JOB! Therefore, you must run — no, race — to gain the knowledge of the public cloud platforms, and become the trusted advisor for your developer communities. Your opportunity to gain this knowledge, and leverage it to your advantage is shorter than you think. Developers are smart, and they will learn what it takes to deploy services safely and effectively.
So, you need to be a coder.
Jack of All Trades, King of One
Yes, you need to know a lot about a lot of subjects. You need to understand the full stack of technologies that involve the deployment of an application. However, give yourself a break and focus on one, maybe two specific technologies and get good at them. If you’re a Network Administrator, learn and master Virtual Private Clouds (VPCs), Security Groups and Elastic Load Balancing (ELB), so you become the default member of the team who knows how to route and secure traffic on AWS. Learn how to write CloudFormation scripts to deploy and manage security groups, ACLs and NACLs, and plug yourself into the release process of the product.
If you are a database administrator, learn how to port Oracle to a cloud platform, or, even better, learn how to migrate off Oracle and into Aurora (an AWS hyperscale database service). There are a lot of companies looking to get out of their Oracle handcuffs and if you are a specialist in migration off Oracle, you are literally worth your weight in gold.
The goal is to find a specific technology in the cloud that aligns with your experience and your interests. You’ll be worth a whole lot more with a niche specialty than with a broad array of technologies and no depth in any.
The Full Stack
The Full Stack is a term that seemed to find its way into the IT nomenclature several years ago and has died and been resurrected several times over the past decade. Today, the most common terms we encounter are Full Stack Engineer, Full Stack Developer and Full Stack Teams. DevOps Engineer also makes its way into the daily cloud program discussion. What everyone wants is a single person who can do it all. While they are out there, much like the unicorn, they are rare.
The Full Stack Team is a group of engineers who have a common goal of building, testing, releasing and supporting an application. You want to be on that team — in whatever capacity that best suits you — providing a function that is valuable to the whole.
So will there ever be a complete, Full Stack Engineer and Full Stack Developer? Like any need in the market, as demand continues to increase with the adoption of public cloud, the Full Stack Engineer or Developer will ultimately morph from being a unicorn to becoming the norm. In the meantime, learn a specific cloud technology and get good at it.
Where Do I Start?
Step One: Cloud Training and Certification
While your company may be proactively offering training to assist you, there is no substitute for directing your own learning. The good news is that it’s never been easier to access high quality information and training. If you don’t already instinctively reach for Google search when you need to understand a new term or technology, you’re already behind. All three major cloud providers provide a wealth of online information and documentation that’s just a click away.
Beyond simple ad hoc searching, there are a whole range of more formal training courses that are indispensable for advancing your cloud capabilities and understanding. Videos, labs and documentation are typically provided, correlating to the areas where cloud certification is offered: architecture, engineering, DevOps, etc. Some good examples of this type of training can be found at lynda.com, coursera.org, acloud.guru and linuxacademy.com. If your company is already deploying on public cloud, focus first on training and certifications for that provider.
Step Two – Scripting and Coding
If you are still working in a traditional IT environment, it may be difficult to believe how much “infrastructure as code” is changing IT. Believe it. If you’re used to manually logging into your favorite pet servers, networking devices and databases to perform operations and maintenance, those days are ending sooner than you think. Regardless of your area of specialty, the majority of interactions with IT resources are rapidly becoming scripted and coded.
What should you know or learn? AWS, Azure and GCP all have services to deploy infrastructure as code functionality; they form the basis of the next generation of IT deployment. Here they are with their respective underlying languages, which are essential for their use:
- AWS CloudFormation (JSON and YAML)
- Azure Resource Manager (JSON)
- Google Cloud Deployment Manager (YAML)
(By the way, traditional tools and scripting — Bash/perl/cron, etc. — are certainly still useful.)
If you lean toward programming and development, then Java, Node JS and, especially, Python are of great value, and used regularly in various cloud services. This is relevant for Big Data tools on Hadoop/Spark, and for function as a service (FaaS) offerings, such as AWS Lambda, Azure Functions and Google Cloud Functions. These allow the creation and operation of application logic without the need to provision servers.
Step Three – Learn and Understand DevOps Tools
While the underlying languages that are used to deploy and maintain infrastructure are JSON and YAML, higher level tools are often used to enhance deployment. Examples of these are technologies such as Ansible, Chef, Puppet (configuration management for servers), Terraform and Jenkins (orchestration of infrastructure as code subcomponents).
Step Four – Consider Containers
Many organizations are using containers to create a layer of portability and abstraction between servers and applications. Docker and Kubernetes are the leading platforms, and the cloud providers are all supporting containers as a service (CaaS) offerings. Not every organization is moving in this direction, but this area represents a significant opportunity for many.
Regardless of the guided training you get, nothing substitutes for hands-on experience. AWS, Azure and Google offer free accounts for your practice — get one, two or all three. Deploy a LAMP stack from the AWS Marketplace and practice deployment using code. Learn to use the AWS Command Line Interface (CLI) and Google Cloud Platform’s Cloud Shell. Grab an AWS Quick Start, deploy a sample reference architecture with a few clicks and dig into how it works.
Here is the rule of automated cloud infrastructure. Exploring with a web console is fine, but if you have to go to the console to configure, launch or change anything in your deployment, you’re doing it wrong. Everything should be done in code.
Once you have built your platform and have it working, check it into GitHub and use it as a resume of your work. Go to your employers, tell them what you have done and demo it for them. Tell them why this is so important to the health and welfare of the company. If they ignore you, present it to another company who does understand what cloud will do for their business.
The choice is yours.