This is the 2nd article in a series on how Code Character came about. You can see the first article here. Honestly, I’m not compelled by a “look at me” intent. I share my journey for a few reasons: to formally document where I’ve been, as a public accountability point to where I’m at, and as a personal challenge to where I want to go. In some small way, I hope it encourages others in their own pursuits. Because, hey, if I can do it, then anyone can.
It’s My Dad’s Fault
The buck-passing starts here. A career IBM guy, my Dad had the foresight to introduce his kids to technology early. Does anyone remember OS/2 Warp? He always had a computer in the home available for us to use. I’m grateful for that effort on his part, so, thank you, Dad.
It all started for me with a forward-thinking father creating opportunities to learn. That, and the day he brought home a Commodore 64, along with some Commodore magazines. It was in those magazines I found printed code for programs. This is where the seed was planted and would take root for years to come. Now to the traditionalist’s dismay, I’m fairly certain my first program was not “Hello, world!”, rather something more infinitely juvenile for my brothers:
10 print "Hahahahahahahahahaha"
20 goto 10
Programming Passion for Baseball
As I recall, one of those programs was for an address book. And as a true baseball fanatic and autograph hound, I was on a mission. Enter all of the Major League Baseball team’s stadium addresses into this program. And then enter all of the addresses from this “Baseball Address List” book my parents had gotten for me. Literally, it had the home addresses of 1000’s current and former players. The kind gentleman Brooks Robinson was the first to reply to my request.
Alas, I did not ever get a complete and functioning version of that project. In hindsight, not sure what I would have actually done with it. But, I did catch the bug in writing code. The less obvious lesson at the time was the ability of code to create solutions. And that bug hasn’t gone away since.
Pitstops On the Journey
It’s been a long and winding road around programming with many pitstops along the way. Initially, I naively thought it would be a more linear path. Life and experience have taught me otherwise.
But, at each step in the journey, I’ve learned valuable lessons that have caused growth – personally, professionally, and technically. And in turn, each set of lessons has proven beneficial for the following step. As a matter of record, here are the key pitstops as they relate to my coding journey:
My Halls of Academia
Pascal, C, Assembly, C++, VB6, Web (HTML, CSS, JS)
The start of my formal education came when my high school offered an Intro Programming class in … Pascal. Why yes, it has been a few years since high school. And then I headed off to UVM for the engineering program and took the Intro to Computer Science course, also in … Pascal. Later transferred to UMaine and took the equivalent course in C. Hey, the ’90s was a great decade, we had moved on from this in the ’80s!
Unsure of direction, I took a break from school, and after an enlistment in the USMC, returned to UMaine’s computer science program. The Intro course was now taught in C++. Along the way bought a book, “Web Programming”, became fascinated with view-source to learn, and even had my design for the Athletic Department home page used briefly. But, life was happening. I was married and with our first child on the way, transferred to another local Maine school (Husson) with an associate’s program. Taking courses in VB6 and Web Programming (HTML, CSS, JS).
All Turbo Booster, No Rudder
Java, Web Design (Dreamweaver), DotNetNuke, WordPress
This stretch could aptly be summed up by ignorance. I was very interested in development but truly did not know what I didn’t know yet. In the terms of the Dunning-Kruger Effect, I was at the Peak of “Mount Stupid”. Hey, I’d aced my C++ class, I was the “Crusher of Classes” … in the classroom and lab. I even picked up an O’Reilly Java book. And 9/11 happened. We had a second child on the way, and coding got tabled.
Then I got a job contracting as a Windows SysAdmin at a software design company. And quickly realized, with some patient counsel from experienced devs, how far away I really was. So, I poured a lot of time and effort into web stuff again. I had the drive to go somewhere … anywhere … with something. The web had little to no barriers to entry. And popular CMS’ had readily available skins and themes to shortcut some design aspects. So I was off, in a hurry … squirrel!
LEARNING TO LEARN
Code Character, Learning Systems, C#, Dev Interviews
Life kept moving, the family grew, my Ops path continued, and I started to learn some things. First, I had my bookstore moment with Code Complete and realized the value of the personal character to growth. This of course led to the Pursuit of Code Character concept.
I also began learning how to learn. To me, it’s like reading, once we know how to do it, we may not realize we can learn to do it better. I came upon a book that presented an organized system to learn – “How to Become a C# Programmer.” Got a copy of “Head First C#”, dug in, and eventually completed a couple of (very) small projects at work.
So, that means I’m a pro now right? I applied for and was able to get a couple of Dev interviews. An HTML/CSS/CMS Web Dev role, and a MS Dynamics .NET Dev role. Both interviews appeared to go well. The Web Dev interviewers said I was the only candidate to answer all technical questions correctly. The .NET Dev interview was four people over four hours and all provided good feedback. Both times it went to some higher-ups, not in person in the process, for a final decision. Both times I was passed over. The .NET program manager seemed disappointed. I was disappointed. I thought that was it .. no coding for you!
So What, Next Role!
ENTERPRISE + DEVOPS INTRO
Enterprise, PowerShell, Linux, Shell Scripting, DevOps, Chef/Ruby
To be honest, at this point, the light had largely gone out in my mind on coding. Life kept moving, responsibilities grew, and the idea of trying to make a lateral move to a Jr Developer role wouldn’t even work for our family. So, I did what I’ve always taught my kids to do – control the controllable. You can’t control the past, just say … “So what,” because you can only focus on what’s right in front of you, just say … “Next <thing>!” And I set out to fill a gap in my Ops career – enterprise experience.
I got hired by Nordstrom for a Windows role on the 24×7 data center operations team. Then, I started a self-study course on PowerShell. And five weeks in, it was announced they were reorganizing and would cull our team from 40 down to 20 within 6 months. I was the most recent hire, I was number 40. The future did not look bright, I did not need to wear shades. I put my head down and worked as hard as I could. People left, people were hired to other roles, and we got down to about 23. I was then asked to join the Linux team, the future looked brighter.
I now knew better how to learn. I found Linux Academy and consumed as much as I could. I went from zero to Linux competent. I learned some Bash scripting on LA. I supported some old Korn shell scripts. We started hearing things about DevOps. I had no idea what that really meant. The Linux engineers deployed Chef across the enterprise. I got internal training on Chef and Ruby basics. Maybe there was another way to still code?
DEV, OPS & DEVOPS/SRE
Linux, Bash, Python, Cloud, Phoenix Project, DevOps/SRE, Git, Ansible, Terraform
Again life kept going, we moved to Arizona, and I got a role as a Linux SysAdmin with a company migrating to the cloud. I wrote some Bash scripts for monitoring the application. I wrote a Python script for pulling Google Analytics Realtime API metrics. I studied and passed the AWS Certified Solutions Architect – Associate exam. I was settling into a Cloud Ops role. I started working with Git and Ansible.
Then it happened, I had my “Aha!” DevOps moment. One Friday night I started reading The Phoenix Project and didn’t stop until I had finished. I had lived out aspects of the Parts Unlimited experience. I saw there was a better way. I could become an agent of change for good. I didn’t know a lot, but I consumed as much as I could. I became aware of Google SRE. I leaned heavily on a contractor we worked with. He literally wrote the book on Git. I started a series of DevOps discussions with the other teams. A few of us collaborated and built a new environment with Terraform.
I now saw there was a gap in my skill set to do the things I wanted to do. And it was something I’d been wanting to do all along … code.
To Web, or Not to Web?
HTML5, CSS3, Bootstrap, WordPress
So, naturally, I went back to the well of web development. That makes perfect sense right?! Actually, I found a wealth of great resources and roadmaps for the self-taught developer. And it just so happened that many of them were for web development, something I had a history of interest in. As a reboot, I completed the freeCodeCamp’s Responsive Web Design certification course.
And I was inspired, motivated, and challenged to make this commitment by the following: freeCodeCamp, Zero to Mastery, Shawn Wang, Randall Kanna, Alex Kallaway #100DaysOfCode, Laurence Bradford, Cory Althoff, and many others played and continue to play a part. I am very grateful for their willingness to share their journeys.
Present Pursuit with Python
The Decision: I’ll be taking my talents to Python. It’s always sat top of mind for me. It makes sense within my current skill set. There are many opportunities to learn and contribute right where I’m at – cli tools, automation, cloud projects. And then there are paths with web development (Hello, old friend!), data science (baseball analytics anyone?), and more.
Of course, it’s also nice to know the Stack Overflow survey says Python is (wicked) popular. But simply, I have a hunger to learn Python and couldn’t be more excited to join the Pythonista community.
I’m two weeks into my first round of the #100DaysOfCode and really enjoying things so far. There’s a way to go, but the learning train is out of the station. For accountability, I post updates @CodeCharacter.
The Journey Continues …
So, now what? I’ve opened my work-life yearbook and taken a stroll down memory lane. It’s time to close it, have more adventures, and create new memories. It’s time to finally add that elusive skill. I believe no matter where you’re at in your journey, it’s not too late to set and reach new goals. However big, hairy, and audacious they may be. For me, it’s not too late … at 48!
I understand fully that I’ll never “arrive” one day. I won’t wake up and magically have mastered all the things. In this, I’ve come to appreciate the journey more and more. The learning, the challenges, the successes, and yes, the failures too.
What started years ago on that Commodore 64 as an infinite loop prank with my brothers. Is now present in my pursuit of Code Character. A pursuit that can have an infinite number of learning pitstops. Here’s to the journey, or, as a wise toy once said, here’s to … infinity and beyond!