I started out as a sysadmin for a tiny software company and I was barely doing any automation. I started to realize through forums, etc that I needed to get into this scripting thing if I didn't want to be drowning in work so I was fiddling with batch/powershell stuff for the Windows servers. However, I was stuck on the few Linux boxes so I started poking around for what language I should learn for that and landed on Python. Spent a bunch of time going through the CA course and got fairly comfortable with the language but still hadn't really done anything with it.

I always wanted to work for a big company so I managed to land a role at a large network provider and when they found out I was interested in scripting they dubbed me the automation guy so I started writing a huge python/expect script that could do automated troubleshooting on these vendor systems that previously could only be navigated with SSH commands. Basically I truly learned Python doing this along with reading "Fluent Python" cover to cover. I recall days of frustration chasing bugs when I finally tracked it down to copying variables from lists without doing deepcopy() and having them modified later. My coworkers complained about speed to load data so I had to learn about multithreading and GIL so I could lazy load data. Then an old coworker reached out about a snazzy new startup so I went there to do this newfangled DevOps thing.

The DevOps role is where I was forced to round out my overall language awareness (not exactly learning the languages) so I could help manage the CI/CD pipelines and supporting infrastructure. For example, I had to learn that C# was compiled and developer machines were special snowflakes that compiled things differently. Days of frustration digging into to "compiles on my machine, your TeamCity is broke" type stuff. I had to use a lot of my sysadmin knowledge to prep machine images and do VMWare bootstrapping stuff which requires some healthy scripting. I was one of a few Linux guys so I was dubbed Hadoop dude (bought an O'Reily Hadoop book and read cover to cover) and my python scripting came in handy here plus had to buff up on bash. Started getting frustrated with the dynamic nature of Python and not being able to hand a script off to someone and expect it to work on their machine so I did some googling and learned that I needed to learn a compiled language. Golang sounded cool so I started teaching myself this. Startup life was getting to be a drag so I took an opportunity and another massive corporation doing Cloud stuff (new hotness, right?).

Massive Corporation was trying to govern triple digit AWS accounts with a newly hired team of 4 people--what could go wrong? The only way to be successful at this is to code automation. At this point I had to live and breath Golang/Python/AWS-SDK to survive. At this point I was being nudged into taking a people manager role and I'd been around the block enough to know in my bones that bad leadership was the source of a lot of engineer frustration so I felt obligated to at least try it. Now I'm pretty much full time leader and haven't coded anything in about a year but my job now is to spot talent, call BS, and nip bad ideas/programs in the bud.

I can't tell you how many stupid, pointless technologies I dug into and then fixed that provided no immediate benefit whatsoever but I learned to spot patterns which is invaluable. For example, I screwed around with Artifactory as a result of left-pad-gate [1] at DevOps job and got a working system together so now at massive corporation I'm helping some teams learn basics of artifact management even though it's not really part of my job. All of these experiences add up to value for a technology company.

I learned most of my skills from making the "mistake" of curiously trying to help someone fix something and then ending up three days later at 2AM writing some script and thinking to myself "What the hell was I thinking?" but it's always provided more value for me than them in the end.

None of this would be possible if I didn't live in the trenches and absorb systems into my bones via programming. Best advice I can give is to be curious, then be helpful, and then be stubborn. Throw in a few dashes of RDD [2] for self-preservation.

[1] - https://medium.com/quid-pro-quo/what-should-we-learn-from-th...
[2] - http://radar.oreilly.com/2014/10/resume-driven-development.h...