Blog Post

Learning to Learn Again

Taking comfort in the familiar can be especially alluring in the fast-paced programming landscape. It took me a long while to recognise how important (crucial, even) a discipline it is to practice continued learning and further technical understanding and practical experience consistently.

I didn’t fully appreciate this until I was 3-4 years into my career as a developer. My comfort in repeatedly delivering WordPress and LAMP solutions to satisfied clients allowed my hunger for learning to stagnate.

Only once I began freelancing in earnest I recognised how rapidly commercial development demands evolve. WordPress, Drupal and Joomla were in decline as the rise in demand for JavaScript frameworks steadily inclined.

I was surprised to see how quickly my chosen niche of frontend development had evolved to embrace React (and later Vue) libraries, while maturing frameworks like Meteor and Angular encouraged new ways to build and scale. It was obvious producing responsive HTML and CSS templates wasn’t going to cut it any more and that it was time to roll up my sleeves again.

In early 2017 I adopted React as my framework of choice, as residual community frustration at the Angular 2 rewrite remained, while Vue hadn’t yet achieved the same maturity. Little did I know just what frontend development had evolved into.

“Learning is not attained by chance. It must be sought for with ardor and attended with diligence.”

Abigail Adams

First, I had to get up to speed with the Node.js ecosystem, and how to use npm for dependency management. Then I had to come to terms that I really didn’t know JavaScript as well as I should, and that I had a whole new standard to catch up with (ECMAScript 2015), overwriting years of jQuery muscle memory.

While I appreciated I was not building atop of the strongest foundations, I had a clear ambition and persisted through the initial growing pains.

At the time of learning, Create React App was considered bloated and excessive. Accepting this, I spent many a frustrated hour struggling to interpret, author and extend webpack config files. Seemingly simple requirements like getting SVG images to load or leveraging Sass syntax cost me hours upon hours.

Basic projects bloated with tens of thousands of dependency files. Every package revealed a new API that required substantial studying (or mindless trial-and-error). React Router v4 stripped legacy StackOverflow questions of any relevance. State management was an alien concept.

At a granular level, simple singular tasks could generate incomprehensible blockages, garbles of new vocabulary and rabbit holes of GitHub issues. Top level foundation assumptions such as separation of concerns were challenged as HTML is written in JS with CSS applied inline.

It even took me an embarrassingly long time to understand that comments needed to be wrapped in curly braces to take effect…

Education is not the filling of a pail, but the lighting of a fire.

W.B. Yeats

Looking back, the challenges were considerable, given my lack of core understanding and naive, unstructured approach to the prospect. Disciplines once familiar became estranged, forcing much unlearning and relearning.

Although under-appreciated at the time, I gained lasting value from that period. I strengthening many core development soft-skills, including interpreting official documentation, tracking community issues, rapidly prototyping prospective solutions and properly managing version control.

Reflecting on this portion of my journey affords me a new appreciate the sum of all those individual challenges, struggles and minor victories.

πάντα χωρεῖ καὶ οὐδὲν μένει


Today I find myself embracing the new and unfamiliar with much proactive enthusiasm. The JS ecosystem continues to evolve rapidly and I try to engage with interesting new tools, paradigms and best practices. A core reason of starting this blog is to document my ongoing learning and capture lessons that would otherwise go unrecorded (or stagnate in an almost-finished state).


Jamstack Conf 2020

Today saw the Jamstack Conf 2020, scheduled to be hosted in London, successfully pivot to an exclusively livestream delivery.

Like All Day Hey!, this event was hosted by Phil Hawksworth of Netlify, who continued to compère with aplomb, despite the constricted setting and digital audience.

Jamstack Conf 2020

While a digital-only setting can’t possibly replace the atmosphere and engagement of a hosted event, I do hope the success of such events convinces hosts and sponsors to consider more dual-delivery events in the future. Living kinda outta-the-way of major cities, I would totally pay for more online-only access to major conferences. It’s empowering to be learning from the frontline of industry discussion while hanging out with tech peers and leaders, even if it’s just in a digital capacity for now.

The Jamstack Conf Virtrual Keynote speech was delivered by Matt Biilmann, CEO and Co-Founder of Netlify. He summarised the opportunity for modern JAMstack platforms and tooling to unburden developers from intricate infrastructures and multi-discipline demands. Instead he offered how abstracted, opinionated and optimised hosting and deployment platforms can promote “best practices becoming common practices”. The introduction to Build Plugins look to extend this paradigm further still.

Laurie Voss, a Data Analyst at Netlify, followed with State of the Jamstack Survey Results, presenting summaries gathered following an industry survey of 3,000 developers. The slidedeck is available online, capturing the latest opinions and trends on development and delivery within the JavaScript ecosystem.

I was also interested to hear Renaud Bressand from Prismic announce Slice Machine functionality to introduce an open-sourced library to easier design bespoke components and associated functionality. With CLI tooling to bootstrap component development, it is available for Vue / Nuxt today, and work continues on the upcoming React implementation.

As a footnote, the Hopin platform was the best I’ve seen yet for online conferencing and networking.