Knowing just the basics of Software Engineering isn’t enough to thrive in today’s market. Many Software Engineers need to have drastically more knowledge of cloud platforms than they currently do.
Why? That’s today’s question. We’re going to be discussing what a Cloud Native Software Engineer is, why they exist, what their skills are and ultimately what that means for you as a Software Engineer.
By the end of this article you should know exactly what a Cloud Native Software Engineer is and why that matters for your career in Software Engineering.
What is a Cloud Native Software Engineer?
Let’s start with a definition.
But I’m not simply going to throw a definition at you and leave you hanging, because together we’re going to explore and break down the details.
A Cloud Native Software Engineer has typical Software Engineering skills such as writing code, testing, design, architecture, etc. But they differ in that they (critically) have specific skills and knowledge to build applications to leverage cloud platform services for maximal impact.
And when we talk about Cloud here, we mean companies that take another companies code, and run it on their own servers on-demand.
Sounds interesting, but what do we mean about Cloud Native exactly? What makes an engineer a Cloud Native engineer as opposed to just a cloud engineer?
Where does the Cloud Native concept originate?
To start to understand the importance of Cloud Native as a whole we need to understand where the term comes from.
Cloud Native as a term relates to a companies aggressiveness when it comes to adopting cloud platform technologies. The more aggressive they are, the more Cloud Native they are. Cloud Native companies will adopt new cloud technologies at a substantial pace and they do so despite the costs.
But what costs am I talking about?
Costs such as vendor lock-in, where a company becomes quite heavily reliant on a cloud provider.
Since some companies are so afraid of the costs and risks associated with vendor lock-in we also have a different school of thought: Cloud agnostic companies. Cloud agnostic companies still run workloads the cloud, but they differ as they do everything they can to loosen the ties with a cloud provider. Using software like Containers or abstraction platforms like Kubernetes can help with achieving agnosticism.
But, as with a Cloud Native stance, there are costs. Costs like opportunity costs of forgoing some capabilities that cloud native companies are able to harness. Or the additional cost in developing and maintaining an abstraction layer between your services and the underlying cloud platform.
Now that we know both of these strategies, the natural next question is:
Which is best?
Cloud Native or Cloud Agnostic: Which is best?
To answer the question, we need to scrutineer the cost/benefits of each stance. By being Cloud Native, a company can use cutting edge tools, such as Serverless and their companion services like Step Functions, Integrated logging, easier backups… the list is endless, really.
Ultimately the cloud providers give Cloud Engineers the most seamless experience they can. It’s their job to make Software Engineering as easy as possible. AWS is famous for their adage that they remove the “undiffentiated heavy lifting” in software engineering.
But, when a company buys in to the idea of operating in the Cloud it of course comes with a cost…
If you heavily use a companies cloud services you are immediately susceptible to the tight coupling you have made. This creates questions like:
- Will the cloud provider support their services well enough?
- Will their SLA’s (basically: uptime) meet our SLAs?
- How much time will we get if they choose to deprecate a service?
- Will changes to their cost structure affect our business adversely?
- What if we want to move cloud providers in future?
- What if they go out of business!?
These are only some of the questions companies ask themselves when deciding on their stance about whether to be Cloud Native or not. And really it comes down to a companies appetite for risk. If a company can be more risky in their approach, they can gain many of the benefits of a Cloud Native approach.
So the answer to which strategy is better is: It depends.
A company should address the risks of going Cloud Native, but also the costs they might incur jumping through hoops to keep their solutions Cloud Agnostic.
You will also find that many detractors who say that Cloud Agnosticism is a fallacy. Because the cost you lose in making services cloud neutral far outweighs the cost of migrating out of a single cloud provider. But the jury is still out on the question and ultimately it comes down to a companies unique position.
How are Cloud Native Companies different?
Okay, so we’ve talked through the stance of Cloud Native and what it is. But that was really only groundwork so that we can discuss what it all means for you.
Because, as a software engineer we want to tailor our skillset to that of our future employers. If the future is Cloud Native then as a software engineer we need to cultivate the skillset to compliment what is required. But, in order to do that we need to know what things look like in Cloud Native company. What are the key differences in the way cloud native companies operate? Let’s get to this question now.
And let’s start with a big area that is impacted in a Cloud Native organisation and that’s: Architecture.
In a typical on-premise enterprise architecture is centrally governed. That means architects make decisions that are then given to engineers, and engineers follow these instructions to the letter. However in most Cloud Native companies decision making is decentralised and shared amongst teams who are more free to architect their own solutions. The devolution of central architecture requires individual teams to take on a greater burden of architecture, which is both liberating, but also an additional workload. It means software engineers need to write code, but also architect it, given the huge list of cloud resources to choose from. Ultimately there are lots of skills Cloud Native Engineers must master.
Another big area that is impacted is: Operations.
In a Cloud Native company it’s more likely that teams are operating the philosophy of “you build it you run it“. Which essential means that the engineering team that writes the code is also responsible and on-call for their application. Being on-call is an additional time burden, but it also means you need to know monitoring tools, have solid communication and a broad skillset to resolve production issues.
As you can see, there are not only some cultural differences but critically the skills are different. Cloud Native Software Engineers need to know more. They have to contend with their chosen programming language, their problem domain AND all the latest cloud technology.
Skills of a Cloud Native Software Engineer
There are many skills, resources and tools to master when becoming a Cloud Native Software Engineer.
Learning Cloud Native
- 2023 Summary: Data Driven Stories About The Cloud
- 2022 Summary: The Open Up The Cloud System
- Open Up The Cloud Newsletter #30 (January Recap 2022)
- Open Up The Cloud Newsletter #29 (November Recap 2021)
- Open Up The Cloud Newsletter #28 (October Recap 2021)
- 2021 Summary: A Rebrand To “Open Up The Cloud” & The Start Of Video Content
- Income Report – Dec 2021
- Open Up The Cloud Newsletter #27 (August and September Recap 2021)
- What Are The Different Roles In The Cloud? A Beginners Guide.
- Open Up The Cloud Newsletter #26 (July Recap 2021)
Cloud Native Engineering Culture
- 2023 Summary: Data Driven Stories About The Cloud
- 2022 Summary: The Open Up The Cloud System
- Open Up The Cloud Newsletter #30 (January Recap 2022)
- Open Up The Cloud Newsletter #29 (November Recap 2021)
- Open Up The Cloud Newsletter #28 (October Recap 2021)
- 2021 Summary: A Rebrand To “Open Up The Cloud” & The Start Of Video Content
- Income Report – Dec 2021
- Open Up The Cloud Newsletter #27 (August and September Recap 2021)
- What Are The Different Roles In The Cloud? A Beginners Guide.
- Open Up The Cloud Newsletter #26 (July Recap 2021)
Infrastructure-As-Code
- What Is Terraform Used For? The 3 Main Use Cases.
- How Long Does It Take To Learn Terraform? And How To Speed Up Your Learning.
- Should You Use Typescript To Write Terraform? (The Terraform CDK)
- Terraform: How To Rename (Instead Of Deleting) A Resource
- The Simplest Possible EC2 Web Server Setup Using Terraform (On AWS)
- What is Terraform? A Simple Definition.
- 10 Terraform Best Practices: For Secure & Fast Infrastructure.
- Should You Commit the Terraform .tfstate File to Git?
- The Ultimate Terraform Workflow: Setup Terraform (And Remote State) With Github Actions
- What Is the Best Way to Learn Terraform?
Serverless
- In Serverless, Who Sets Up The Environment? What You Do & Don’t Have Access To
- How To Test AWS Lambda: Everything You Need To Get Started.
- How To Debug AWS Lambda: A Detailed Overview
- Are Containers Serverless?
- Lambda Extensions: What Are They, And Should You Care?
- Can You Stop An AWS Lambda Execution?
- Can AWS Lambda Access A Database? And The Considerations You Should Be Taking.
- You’re Alerting Wrong: The Why & How Of Setting An AWS Lambda Alarm Using Error Rate Percentages.
- How Do You Look at Console.Log Output of an Amazon Lambda Function?
- Serverless on AWS Lambda: A Comprehensive Comparison Of Approaches (Serverless Framework vs SAM vs Terraform vs CloudFormation)
Containers
Observability & Monitoring
- You’re Alerting Wrong: The Why & How Of Setting An AWS Lambda Alarm Using Error Rate Percentages.
- How To Setup Monitoring / Observability On Existing Software (e.g. A Web API): A Practical 5 Step Guide.
- You’re Logging Wrong: What One-Per-Service (“Phat Event”) Logs Are and Why You Need Them.
- How To Get AWS Lambda Logs Into CloudWatch
NodeJS
- A Philosophy For Effective Error Handling (Using JavaScript Examples)
- Yarn and the dark future of third party NPM clients
Software Engineering Careers
- 2023 Summary: Data Driven Stories About The Cloud
- 2022 Summary: The Open Up The Cloud System
- Open Up The Cloud Newsletter #30 (January Recap 2022)
- Open Up The Cloud Newsletter #29 (November Recap 2021)
- Open Up The Cloud Newsletter #28 (October Recap 2021)
- 2021 Summary: A Rebrand To “Open Up The Cloud” & The Start Of Video Content
- Income Report – Dec 2021
- Open Up The Cloud Newsletter #27 (August and September Recap 2021)
- What Are The Different Roles In The Cloud? A Beginners Guide.
- Open Up The Cloud Newsletter #26 (July Recap 2021)
Do you want to become a Cloud Native Software Engineer?
And that’s it for today. I’m hoping that gave you an insight into what it means to be a Cloud Native software engineer and the differences that Cloud Native companies have with their agnostic, or on premises counterparts. Whether you do or don’t want to embrace Cloud technologies it’s important to be aware of the changing times so you can make a decision that’s write for you.
If you’re looking for a next step to get started, why not get setup with your very own AWS account so you can start experimenting with cloud technology straight away?
And one last thing before you leave… I created this website to help Software Engineers understand and navigate the landscape of Cloud Native Software Engineering. If that’s something that is useful for you, make sure you sign up to the email list. Being on the list means you’ll get new articles in your inbox every week. And the list is designed to keep you up-to-date with the latest trends and movements in Cloud Native Software Engineering.
Question: Are you thinking of becoming a Cloud Native Software Engineer? If so, I’d love to hear your thoughts and questions in the comments below!
- 2023 Summary: Data Driven Stories About The Cloud - December 31, 2023
- 2022 Summary: The Open Up The Cloud System - January 1, 2023
- Open Up The Cloud Newsletter #30 (January Recap 2022) - March 1, 2022