Blog articles

I’m a Software Developer: Do I need to know about cloud computing?

October 18, 2022

Are you working in software development, and wondering if you should know about cloud computing? Mattias Andersson explains why all developers should be cloud capable, and why cloud certifications are useful.

You’ve come here asking “I’m a dev, should I really know about cloud technology?” The answer is yes — easy solved. Okay, you can go now!

… Wait, you want a more detailed explanation?

Well, if you insist. Imagine software as a hammer and infrastructure as a saw, and you’re using both to build a house (your project). If you know nothing about hammering nails to attach things together, you’re going to have a hard time with it. You might resort to all sorts of silly things, like:

  • Trying to glue it together
  • Tying it together with ropes
  • Piling more lumber on as support

Needless to say, this is not good, and some bystanders are probably giving you funny looks. Now, imagine you do know about hammering things, but you don’t know about sawing things to the right length, and you start with a bunch of boards that are too long (or too short) to fit your plan.

In response to this, you might try changing your house plan to compensate, and wind up with an oddly-shaped house. Or you might try to break the boards through force — leaving sharp edges and many now-too-short boards — and then nail them together until they fit.

Would you live in this house? I sure wouldn’t — It doesn’t sound very structurally sound at all.

Now while this scenario might sound wholly unrealistic, the painful truth is we get the same level of ridiculousness when technology professionals focus on either the software or the infrastructure without understanding the other. Software is always deployed to run on some infrastructure, and infrastructure is purposeless without some software.

For your career, you need to have a wider skill set

To stretch my analogy even further, it is certainly possible to get a job in construction where your every task revolves around sawing boards to length for others to nail, or vice versa. But these super-specialist jobs are few and far between. No one making a career in construction would be so hopeless that they do not even understand the other jobs around them, and how to do them at a basic level.

For a person to succeed in a career — any career — they need to interact and coordinate with the other roles and functions around them. In short, people need T-shaped skills.  

The same goes for technology. To use some other analogies (I’m full of them), someone who writes software without understanding how to take advantage of cloud infrastructure is like:

  • A marketer who doesn’t understand the internet

  • A virologist who doesn’t understand microscopes

  • A global logistics manager who doesn’t understand the concept of airplanes

  • A farmer who doesn’t understand irrigation or machinery

Sure, that farmer might manage to grow a bit of food and survive, but I’m definitely not going to hire them for that job on my hypothetical farm. 

For the same reason, these days I would never choose to hire a non-cloud-capable software engineer. Or if I did, then ramping up on cloud skills would be their very first task.

In the same vein, people in infrastructure/ops are not going to get very far if they don’t take advantage of both scripting (i.e. writing basic software to automate tasks) and cloud. Both of these improve efficiency and reduce risk, and people in ops also need to collaborate successfully with developers (i.e. DevOps).

There are currently some jobs in IT where a person could still get away with only understanding either software development or cloud/infrastructure, but there is no longer any such career.

So if you want to succeed at your career — and not just be passable at some job for a while — you need to know about both software and cloud.

Cloud computing as the next level of abstraction

Now, I’ve talked a lot about why knowledge of cloud computing is good for your career, but it also just makes sense in terms of solving problems.

Developers don't write code just for the sake of looking at its beauty (though sleek code can be beautiful), but rather because it solves some real world problem.  To that end, system architecture and software development are merging, and there's now no better way for software developers to solve real world problems than to take advantage of serverless services in cloud computing.

This is the next level of abstraction in our industry. 

Back in the day, assembly language replaced machine language in a software developer's primary day-to-day toolkit. Then compilers with higher-level languages replaced writing low-level assembly language. We then got standard libraries and package systems to free us up from constantly reinventing the wheel.

Today, we take advantage of serverless cloud services to imbue our software solutions with world-scale capability at very low operations cost. 

Writing a message with rock and chisel may still be interesting, but it's not a very effective way to communicate at scale. So we moved on to paper, and now typing.

These days, building a software system without serverless cloud services is like writing your emails down on paper and then digitizing them on a flatbed scanner.  You'll probably get your message across — and some (few) people might even think it's cute — but it's very inefficient.

Key skills both developers and infrastructure/ops should know

Here is a high-level list of things that I would suggest learning to make sure you’re not stuck trying to glue two bits of wood together.

Software:

  • Scripting / Programming

  • Source control (Git and best practices)

  • Software Development LifeCycle (SDLC)

  • Agile (Read the manifesto, yourself; it takes just 30 seconds)

  • DevOps

  • Architectural patterns

  • Software best practices

Cloud computing:

  • How to effectively use Serverless (Critical!)

  • Infrastructure as Code (IaC)

  • Platform as a Service (PaaS; understand why Serverless is better)

  • Infrastructure as a Service (IaaS; understand why Serverless is better)

  • Cloud best practices (including security)

What cloud certifications should I take as a developer?

Cloud certifications are a great way to fix some of your blind spots. Each cloud provider has a non-technical, entry-level certification that is all about understanding the broad aspects of the cloud paradigm in general and also how to take advantage of that cloud’s key services to solve business problems. Even as a software developer, your best target is the cloud provider’s foundational certification (optionally) and then their architect certification.

I would highly recommend reading this article—and not just because I wrote it: “Cloud certification FAQs: AWS vs Azure vs Google Cloud certs compared.”