I have about 1.5 years of experience as a DevOps engineer. My first role was more development-focused and expected strong Python and Kafka knowledge, which I didn't have, so it wasn't a great fit. I'm now in a more operations-heavy position where I work with deployments, CI/CD, Ansible, Bash, some Python, Kubernetes, and web servers, and things are going well.
However, when I look at other DevOps and platform engineering roles, many expect more software development: building internal platforms, writing tools, and creating automation in Python, Go, Java, or C#. I'd like to keep my skills relevant and become a better programmer rather than only writing small scripts.
For those who moved into DevOps from operations, how did you learn to code effectively? Which resources, study methods, or practical projects helped you improve?
4 Answers
There’s a wide range of DevOps roles, and not all of them require you to develop production software. A lot of the work involves infrastructure, networking, cloud services, Git, CI/CD, YAML, JSON, testing, and automation. Understanding how applications work and how they run in production is often more important than becoming a full-time application developer.
That said, basic programming is still extremely useful. Learn enough Python or Go to write maintainable automation, work with APIs, handle errors, test your code, and structure a small project properly. You don’t need to become an expert in every language.
A practical learning path is to choose Python and work through the basics, then move quickly into automation. Learn functions, classes, modules, exceptions, file handling, HTTP requests, JSON, command-line arguments, virtual environments, and testing. After that, use cloud or Kubernetes APIs to build something useful.
Be careful with copy-and-paste solutions or generated code. The valuable skill is recognizing unsafe advice and understanding why the code works. Don’t blindly disable security controls, add broad sudo access, or accept a workaround without understanding its consequences.
Focus on understanding software architecture even if application development isn’t your main responsibility. You should be able to follow a service’s code and understand its dependencies, configuration, logs, data flow, and failure modes. That makes troubleshooting and infrastructure decisions much easier.
DevOps engineers often identify improvements that application teams don’t have time to prioritize, such as replacing an old file-transfer workflow with object storage or automating a repetitive operational task. You may not own the product code, but being able to build small internal tools means you don’t have to depend on another team for every improvement.
Don’t avoid coding just because it isn’t in your job title. Start with one language, probably Python, and build tools that solve problems you actually encounter at work. Good projects could include a command-line tool that inventories cloud resources, validates configuration, checks deployment status, or generates reports from an API.
Treat these as real software projects: use Git, add tests, split the code into sensible modules, document it, handle failures, and run it in CI. A small tool that other people use will teach you much more than repeatedly following tutorials.
This is also a good way to learn architecture. You’ll eventually run into authentication, logging, packaging, API limits, permissions, and deployment instead of only practicing isolated language features.

The expectations vary a lot by company. Some DevOps roles are mostly configuration and operations, while platform engineering roles may involve building and maintaining real software.