10 Years of Programming

In the beginning

This marks my ten years of programming. I went from zero knowledge to where I am today, and I am excited about how much more there is to learn. I started out doing data visualizations in Tableau using their scripting language. When Tableau became limiting, I was guided to d3.js and I began making visualizations with it, not knowing anything about HTML, CSS, or JavaScript. It was really hard to understand anything about what I was doing, but I was able to make visualizations after a lot of trial and error.

When I was thinking about what career path I wanted to go into I settled on web design. I did not know HTML or CSS but I knew that web design was a career and it might be something that fit my lifestyle, so I took a leap and bought HTML & CSS: Design and Build Websites. Working along this book solidified my fundamentals for how to create semantic websites and style them with CSS. I landed some design jobs for small websites doing pure HTML; no database, nothing. I began learning more about the web and was introduced to PHP. The more I read about PHP the more I realized there was a lot that went into making a real deal website. At my previous position doing visualizations WordPress was mentioned to me and sat in the back of my mind. I signed up for it, but honestly had no idea how to use it at first.

PHP and WordPress

I created a PHP driven website and was beginning to familiarize myself with WAMP to spin up MySQL, Apache and PHP on Windows. It was grueling but at the same time fascinating. PHP was my first foray into what a computer could do if you knew how to program it. After building in raw PHP, no Composer, I found that it just took forever to get something up and running, which is when I turned to WordPress. With the knowledge of how to set up a server in Apache I was able to set up WordPress in WAMP and quickly moved to VirtualBox and Vagrant using VVV to manage my WordPress sites locally.

I quickly began to realize that I would not be a web designer, but a web developer. I was much more into coding than creating beautiful designs. I parlayed my WordPress skills into freelance gigs for various clientele mostly in the eLearning space. I began to contribute to WordPress to further advance my skills. I started by contributing to the WordPress REST API as it was the most important project at the time. Contributing to WordPress is one of my goals for the coming years as I am aligning my work to overlap with WordPress again.

Learn JavaScript Deeply

I had really only dabbled with JavaScript creating visualizations in d3.js and doing small UI interactions for my sites. When Matt Mullenweg proclaimed “Learn JavaScript Deeply” I listened and did exactly that. Today, JavaScript/TypeScript is my most proficient language. There is more depth to traverse but I have gone pretty deep with it creating a CAD tool entirely in TypeScript. Not too long after this proclamation came the advent of Gutenberg, and once again I felt the need to contribute to deepen my skills. Now at the agency I work at all of our site builds on WordPress are Gutenberg based and we hope to leverage Gutenberg in Drupal as well where it makes sense to.

JavaScript/TypeScript React became a great addition to my toolbelt and it helped further my knowledge. Around this time I found out about Leetcode and started doing code puzzles on Hackerrank then later Leetcode. This helped me understand Big O notation and what it meant for systems that scale and how to optimize and problem solve your code to get answers. I also got interested in Project Euler as well around this time. It was around this time that I stumbled across David Nolen and ClojureScript. Prior to this I only programmed in PHP and JavaScript but the story of why Clojure was great was very compelling to me.

Exploring other languages

By the midpoint of my 10 year arc, I was learning at a much higher rate than when I first started out. As you become more familiar with concepts they generalize and compound across whatever your domain is.

“The first rule of compounding: Never interrupt it unnecessarily.”

– Charlie Munger

I could not agree with this more and learning has been the key to my success so far paying quite a lot in dividends, I finally feel like I am at the point now where I can start to make an impact in my industry. I have learned and programmed in Rust, Go, C, JS/TS, PHP, Clojure, Erlang, Elixir, Julia, Python, C#, and ARM Assembly. I would have never guessed that I would have learned to program with proficiency back from where I was 10 years ago, but here I am and I am still obsessed with it.

Understanding the Machine

I am thankful to have started when I did as the on ramp was a lot gentler than it would have been in previous decades, the web was full of instructional material on how to program and AI had not hit the scene yet. I am not sure if AI would have accelerated my learning or hinder it by confusing me with hallucinations. I heavily use AI today and all of the skills I have learned lead me to better prompts and agent use because I actually understand what I am trying to accomplish, back in the starter days I did not really know how to build or what I was building because I understood far far less about computers.

Today I can say that I have a solid understanding of how the various programs get turned into Assembly code to become the actual executable machine code, which in turn works with the operating system to do all of the magical things a computer can do. I understand the basics of memory, disk, protocols, logic gates and how they are combined together to perform the blazingly fast calculations that we somewhat take for granted. I have a rudimentary understanding of the all layers in the OSI model. I also can operate as a full stack engineer from administrating Linux to configuring/creating a web server, to the backend application code all the way to very interactive front end experiences. I have worked with a number of databases and other services and learned how to architect systems. I have trained various special purpose AI models.

Even though I have learned quite a bit about the world of computers, there is still an even greater amount out there to learn. The next decade is going to be where I really hit my stride as I finally feel like I have the fundamentals down to actually start building useful projects that I hope will bring joy and value to those who use them.

What’s Next

For the new year I now have my 10 year plan. I am going to be focusing on a few areas, using WordPress in novel ways, digging deep into AI agents, starting to blog, and continuing my learning and advancing my skills. I plan to write a 20 year recap and we will see if any of my goals were met. Hopefully this post can serve as a lesson to show that compounding learning leads to success in life.