Week Notes: Feb 11th, 2022

New strategy this week: do a retrospective written log of the week on the Friday, and continue that idea for as long as it seems worthwhile.

Coming into this week, did not do planning the week beforehand, but did manage to plan some time in the diary for planning the week ahead of time. As a strategy, it worked well, but I will try planning better next week.

Weekly operational review first on the agenda — not much to report from the previous week, save that a bunch of in-flight performance enhancement tests were only proving to have no impact. The theme for the first couple of days of the week was to only unravel the details and confirm that yes, things were not working as desired. Looks like that will be something to report back on in next weeks’ Architects Forum, but I suppose all is not lost — there’s some benefits to the tests, even if it is only to prove a lack of impact.

Third party tagging is next, coming out of a midweek discussion with actions for myself to standardise and trial a documented approval and review process for teams to use in the future, and in the back of my mind some plans are forming around ways of automating the reporting and analysis side of things. Time set aside for next week or the week after to dive into that idea in a little more detail.

I get a first draft of the aforementioned approval process out of my head and into our Confluence Space, outline a report format and learn how to make a new page template and create template variables to go with it. Mildly interesting to learn new things about what the platform can do, but also frustrating to learn how restrictive the permissions are and ultimately how useless the effort was, given that the template is likely never going to be used and templates in general serve no purpose other than generating initial content. For the effort they save you, you might as well just copy an existing page and ignore templates altogether.

Midweek we have our quarterly platform roadmap planning session. Fortunately I don’t have to present much — most of my input has happened before this session, but it was interesting to see what’s coming up for other teams I interact less frequently with. Vast majority of the people are in the London office for that meeting, I was remote. Still in the lockdown mentality, I didn’t check the meeting location until the last moment and didn’t give myself a chance to travel there in time, even if I had wanted to.

The desire to continue digging into the performance issues from the start of the week is still with me, and I even dust off my Discord accounts to chat to other people using the same tech, but eventually concede that I have more pressing things to focus on — understanding the remaining half of the failed tests can wait. Instead, questions about coding standards and codebase architecture awaits for our serverless tech.

The topic of authentication for private packages in Github Actions pops up in our channel, and I add it to my list of things ‘to do’ only to quickly discover that I wrote a whole bunch of how-to documentation for it two weeks ago. Yay me! So I share those links again, make a mental note to figure out other strategies to upskill and disseminate the information (next week, I promise myself) and dive onto the next highest priority.

Another team showcases their Micro Frontends technical approach. It’s new tech to me, and is obviously picked for its positioning as a bridge between React SPAs and vanilla Web Components. Looks overly complicated and doesn’t have the prestige of a big name brand behind it, so I have my doubts, but not enough to drop what I’m doing and dive into the details.

For the rest of the week, I’m all about our serverless Cloudflare Worker tech. The rest of the engineers are tied up on other priorities and I want to both familiarise myself with the codebase and test out a couple of theories, so I dive into the code. Lots of easy wins, it seems.

There’s some tech that’s out of date, no fault of the original authors, just lack of time for maintenance.

Then there’s the duplicate chunks of code, done for the sake of ‘Speed to Market’ but a ticking timebomb of functional drift.

The code itself reminds me of the stuff I used to write before assimilating the ideals of ‘Clean Code’ and ‘Functional Programming’ — full of conditional paths and interdependencies, little in the way of readable abstractions.

The automated testing situation is a bit galling — lots of mocking and very implementation-specific ‘white box’ tests that prove to be quite fragile and unhelpful when attempting refactoring.

For the test framework itself, Miniflare is now available, along with a Jest Environment for more representative unit testing, and that allows me to replace a load of old mocks and polyfill libraries that were in use.

And finally — for now — the CI/CD pipelines. They work okay, but they could be better, so I brush up on the latest Github Actions features and introduce caching for the build steps to make them faster, drop in some interaction with the Github Deployments API to make the link between deployments, their statuses and Pull Requests and individual commits easier to track, and set up a new pipeline that auto-generates a changelog file.

5 or 6 Pull Requests raised and I’m riding high on the thrill of writing code again. I know I should be mindful of not taking all the cool work, but I tell myself it’s for the greater good, and it likely wouldn’t be done if I didn’t do these few bits, because priorities. However, my priority is to make this codebase more accessible for others, who I want to be introducing this to within the next few months.

As the week draws to a close, it’s mental note time.

Unusually we’ve had no Architecture Forums this week. I have my own agenda items for next week: Firstly, I need to report back the results of our (mostly unsuccessful) Performance tests and appeal for assistance to dive deeper into the details. Then I want to reopen discussions about governance and code organisation for our serverless Cloudflare Workers, and as an AOB item I have some rough architecture diagrams for our existing Marketing website that raise pose questions about how it is structured and blindspots that reveals to me.

And then there’s the stuff I didn’t finish — training and upskilling on Github Actions, investigating reporting options for parallel performance tests.

At least next week has some social events and a day off. This week I’m not sure I left the house for the first four days. That’s a bad habit.