I started web development just over 6 years ago and I find it entertaining (and slightly embarassing) to look back at my progress over the years.
The Early Days
My first creation was a website written in PHP for a clan I joined which played NS2 (Natural Selection 2). The clan was quite successful and organised a lot of matches on custom maps, which resulted in me adding a map database into the website, with user uploads. As you might suspect given my weeks of experience with PHP, this resulted in significant exploitation of the website with redirects to external sites, adverts and tracking being injected. When I looked inside PHP files after a few months they were riddled with competing injected code, it was an eye opening experience.
Finding A Home
The realization that I was ill-equipped to secure my projects pushed me towards frameworks and CMSs (Content Management Systems). While the Yii Framework helped me to create a community site for NS2 it was WP (WordPress) which really caught my attention and fuelled my passion to create more. The combination of accessibility, power and userbase made working with WP great fun. The values behind WordPress really struck a cord with me and I believe my first plugin (a simple Twitter feed) embodied them- I improved upon the existing solutions by replacing the need to create and copy Twitter API credentials with a few clicks (oAuth) and performing the requests to Twitter through an API (solving various hosting and character encoding issues).
My First Success
This all led to my next big shocks, my WP plugin was relatively successful peaking at 120,000+ active installs. Not only did this lead to significant support demand which took me by surprise, it also put incredible pressure on the external API which supported it. The result was an API handling, on average, 27 requests per second (or 16.3 million per week). I am not ashamed to admit that I was wholly unprepared for this, two events clearly illustrate this:
The Master Log File – While debugging issues with the API I started writing a log file, I also forgot to stop the writing of said log file. Fast forward a few months and the virtual server crashed and would not boot, it had filled the whole 70GB of spare disk space with a single log file. At the time I could not even conceive of so many requests that writing to a log file would cause problems, it was an eye opening experience.
Cloud Billing – I attempted a move to AWS (Amazon Web Services) early on when I struggled to cope with scaling the API. I still did not properly understand the scale of the API requests and underestimated the pricing for the domain control alone (Route53). The pricing seemed reasonable at $0.6 per million requests, who could possibly need more than that? At 16 million requests per week it ended up costing me around £28/month just for the domain, which was a blunt reminder that I needed to start looking at things differently.
A New Beginning
These experiences triggered a new stage in my development. I took a step back and looked at what I wanted to achieve (large scale services supporting WordPress websites) and made a plan to achieve exactly that. First I decided to start learning a new language (Go). I wanted something lower level but still easy to use, Go was the perfect introduction into statically typed programming. The next major step was to take a far more academic stance with my personal development. This combined maths courses on Khan Academy with an online Computer Science degree. While I am still learning more every week it has already paid off, raising my awareness to the point that I often know what the problem that I am facing is. Even knowing useful terminology makes research online much easier and helps me to overcome problems much faster.
It Gets Fun
Learning Go opened doors to things I had not even considered before when PHP was all I knew. Suddenly what I could easily accomplish expanded to areas I had not expected, from Desktop Software to Game Development and a Raspberry Pi based Drone. Software development has made me feel free in ways that I would never have imagined and led to some truly fun projects with local clubs (even if the Drone mostly crashed into walls).
I have had a great time learning software development over the past 6 years. I have made, and met, friends across the world and worked on projects which I would not have dreamed of years ago. I would not trade it for anything.