How I learnt coding from failing it at school. Several times.
TL;DR: Didn't know coding. Got bullied. Learnt coding.
Some might argue that as a Platform/DevOps engineer, you don't need coding skills.
Hell, I have even been told to F off from a direct report of mine if I ever made him code.
But that's another story. This is a story of how I failed multiple times to learn programming to contribute to the open-source community.
Context
When I began my studies in the field of computing, all the exercises had little to do with real-life scenarios.
I failed programming at school and I spent another year retaking it. And that's okay.
During my first few jobs as a SysAdmin, I picked up more Bash and some Python. I felt like a real hacker running a script.
The more verbose logging, the better! I thought that was it, I unlocked a new power and nothing would stop me. Until programming got real when creating CLI's and RESTful API clients.
The bitter reality
Later in my career, my tasks were getting more complex, managers had higher expectations of my work and, my teammates were looking down on me.
I still didn't know how to code. I enrolled in a couple of Coursera Python courses, but I still didn't understand what I was doing and how to use 3rd party libraries.
I was lost.
Until I got to work with a great team of engineers who showed me exactly what I was missing, what was the value in it, and how to learn it.
For those who had to learn a foreign language like me, I am sure you can relate to that Eureka moment. That click from not knowing the language to understanding it.
The Aha! Moment
That was it, I finally got it. But I needed something to fiddle with. I needed a project. A goal.
Since I always liked practising sports, I wanted to download all my past Runkeeper activities, so I could upload them in bulk to Strava.
My old me would have spent hours downloading them one by one, but not this time. I created my first Python library.
I succeeded. I was hooked.
Final thoughts
Looking back now, I have come a long way with programming and distributed systems. I am no longer a SysAdmin and I rather do software work.
When I had to teach programming to my direct reports, I taught them the same way I was taught: with patience and empathy.
Nowadays, the enormous catalogue of tools out there to automate work as DevOps has become a YAML standard. And sure, you can find work out there in your company's backlog that won't require programming.
And most of the time you might not use it. But when you do, that will differentiate you from an average engineer to a good one.