Just starting out? Here's some thoughts
Table of Contents
What, no cloud tutorials?
This is not my usual type of topic - but having spoken at several user groups over the last year, I’ve had a number of conversations with people at the start of their career about the best way to stand out when starting a tech career. Now I’m not claiming that these are going to magically help you win a position, but I do think that they’ll help improve your chances.
I’ve worked in IT for more than a few years (OK, decades - Ed), starting out in data centers and working in the Cloud for the last ten years. I can really only speak to the area that I work in; building, managing and running Cloud infrastructure rather than application development, but I think that many of these points are relevant to other areas of the industry as well. Whilst it’s obviously important to have the appropriate Cloud skills, I really think there are some foundational skills that will help a new starter stand out and I’ll list my suggestions below:
Technical skills
-
Linux - anyone wanting to work in the Cloud really needs to be comfortable with Linux. Whilst there’s no definitive numbers, in terms of servers, its estimated that more than 70%+ of the web and enterprise applications run on Linux, so familiarity is going to be a big help. I don’t mean that you need to be a Linux kernel developer, but you should be able to use the command line to manage users and groups, install and manage software, run updates etc. There are plenty of free versions of Linux available such as Ubuntu, CentOS and Debian that you can install on a spare machine or even run in a virtual machine on your laptop.
-
Speaking of virtual machines, you should also be comfortable with the basics of virtualisation and containerisation. If you’re using Compute services in the Cloud, there’s almost definitely some kind of virtual machines involved, so understanding how they work is essential. You should know how to create, manage and troubleshoot virtual machines, as well as how to use containers like Docker.
-
Networking - understanding the basics of networking is going to make such a difference. The Cloud is still built on standard networking technology, so if you’re using VPCs, Security Groups etc. you’re going to be relying on underlying traditional networks. You should know how IP addresses and CIDR ranges work, be able to build subnets, route traffic and have a basic understanding of firewalls. Being able to analyze network traffic and troubleshoot is also going to be really useful. For most people, 99% of the time you’re going to be using TCP/IP, but it’s good to have a basic understanding of UDP as well.
-
Protocols - ok, this is really part of networking, but I think it’s worth calling out separately. You should be comfortable with the basics of HTTP and HTTPS, understand how DNS & DHCP works and be able to use tools like curl or Postman to test APIs. You should also have a basic understanding of other protocols like SSH and SMTP, as these are often used in Cloud environments.
-
Scripting - being able to write scripts to automate tasks is a really useful skill. You don’t need to be a master programmer, but being able to write simple scripts in Python, Bash or similar languages will be something you need whether it’s installing software, writing ci/cd pipeline scripts or just helping you configure systems.
-
Git - I was going to say “version control” here, but let’s be honest, it’ll be Git for most people. Again, you don’t need to be a master, but being able to use Git to manage your code and collaborate with others is essential. You should be comfortable with basic commands like clone, commit, push, pull and merge, and understand approaches like trunk-based development versus GitFlow and similar approaches. You should definitely be able to understand why merge conflicts happen and how to resolve them.
-
Automation - other than the odd quick test, you should really be aiming to automate as much of what you build. This means understand Infrastructure as Code (IaC) tools like Terraform, CloudFormation or similar. It’s also really useful to understand how to use configuration management tools like Ansible, Puppet or Chef to manage your systems. This will help you build repeatable and reliable infrastructure.
-
Popular open source tools - there are a number of open source projects that are widely used in the Cloud space, so having a basic understanding of these will be really useful. For example, being familiar with databases like MySQL or PostgreSQL, web software like Apache and Nginx, or caching systems like Redis or Memcached will help you understand how to build scalable and reliable systems.
Soft skills
Technical skills are definitely important, but they’re possibly easier to learn than the soft skills that will help you stand out. Here are some suggestions:
-
Communication - being able to communicate effectively is essential in any job, but especially in tech. I often say that a big chunk of my job is explaining technical things to non-technical people. You can try saying ‘Latency is an issue in our SQL database’ but if you’re not talking to other tech people, ‘Getting our data seems to be slow’ might be more useful. Don’t forget that communication is a two-way process though; it’s just as important to be able to listen and understand what others are saying.
-
Ask questions - this is kind of related to communications, but I think it’s worth emphasising this separately. If you’re not sure of something, or don’t understand some technical terms, ask! No-one expects you to know everything when you’re starting, and even though you might be afraid of looking like you don’t know something, you’ll become more respected if you ask and show that you’re willing to learn.
-
Problem-solving - it’s often tempting to just jump into trying to solve something that’s not working as expected, but it’s often worthwhile taking a pause and thinking about how you can validate what’s happening. Are there logs you can look at? Can you reproduce the problem in a test environment? Can you understand the pattern behind when a problem occurs?
-
Business understanding - when someone talks to you about a task, or system they’re building, it can be tempting to just think about the technical solution. But try to think about, what is the business problem they’re trying to solve, and why are they looking at a particular approach. Is it about cost management, ensuring security or meeting regulatory concerns.
-
Finally, be public about what you’ve learned - developers will often share the code on GitHub or similar repositories, but it’s more rare to see people sharing their infrastructure, admin or operations code. If you’re building something, share it! This will help you build a portfolio of work that you can show to potential employers, and it will also help you learn from others. You can also write blog posts or create videos about what you’ve learned, which will help you build your personal brand and make you more visible in the industry.
For other experienced people, what would you add to this list?