The single greatest theme I can think of that I had in 2020 was technical transformation. I suffer from an anxiety disorder, which was worse than usual this year, because… you know. However, I was surprisingly able to successfully channel that into some solid work.
I, along with a few others at my company, presented the idea to start shipping front end systems as versioned, portable software packages. We started to get more and more requests about creating component libraries to be used on multiple platforms and were previously unable to fulfill them. Because we’ve separated the frontend out from whatever backend tech we’re using, frontend developers can work much more quickly to develop UI components for whatever system wants to use it. We were previously being hindered by developing inside of a CMS, which was daunting to those of us who just wanted to work fast and provide reusable things.
We also chose to pursue this endeavor using Web Components, specifically using LitElement and Stencil.js as the frameworks to hold our hands. (We are not quite ready to venture into raw Web Components land yet because we need the security, testing, linting, bundling, polyfilling parts that come with Stencil.js and our implementation of LitElement.) We have specialists in React, but React components are not readily available in the DOM in raw HTML unless you tell React what to look for. Because we want editors to be able to control every element that goes onto a page, Web Components being custom but native HTML elements made more sense. (I will write a post on how this works very soon.) The biggest win for us was that Web Components provide style encapsulation, meaning that the styles you set for one component don’t leak into another one and nothing leaks out to or from the main document. This also justifies our ability to work in a separate environment. If it looks good and works in one place, it will do so anywhere you use it. As a result, we’re doing primary active frontend development in Storybook and providing documentation through there for users of the component library. This was easily my biggest win this year. For the first time in my life, I’m shipping software, which feels pretty damn good.
Through learning about how to package up LitElement, I also learned how different bundling and CI systems work (GitLab and GitHub), and I realized I actually love working with them. (I also really love our DevOps folks for being so patient with me.)
About halfway through this year, my primary goal at work switched from “Attain the Software Architect title in the Frontend Practice” to “Redefine the Frontend Software Architect role at my company”. I firmly believe that we’ve been very successful here and will continue this redefinition in 2021. I’m becoming much more confident in my ability to help make changes like this, which directly feeds into my theme post for 2021, coming in another day or so.