I help companies find and fix site-speed issues. Performance audits, training, consultancy, and more.
Written by Harry Roberts on CSS Wizardry.
I must admit, when I saw an email from the NHS asking me if I’d like to help them on a project, my first thought was one of much uncertainty. Usually, in British media, most reports about IT in the public sector are horror stories, with multi-million pound contracts awarded to huge ‘Enterprise’ contractors who do a terrible job, take their cheque, and leave somebody else to clean up the mess.
Another one of my reservations was about technology and approach. The NHS, being public sector, has to serve a lot of people, which means a lot of older browsers, etc. I was worried we’d have to support IE6, and not get to use any new or emerging tech; I imagined that responsive wouldn’t be a requirement, and that the site would have to look exactly the same in every browser.
This project couldn’t have been more different: responsive, mobile first, built on Rails, HTML5, and Sass, and all run very agile (using GitHub and Trello) by a lean team of just four people.
A few of my key responsibilities on this project included:
I left the NHS with:
I got an email from Jason, the NHS Leadership Academy’s Programme Lead, asking if I’d be interested in working my design rationalisation magic on an ambitious new project of theirs, as well as joining to build the front-end of the entire product: an eLearning platform which aimed to bring all the NHS’ many fragmented learning resources under one roof, accessible to all members of NHS staff.
I help companies find and fix site-speed issues. Performance audits, training, consultancy, and more.
It was clear from Jason’s opening email that this project was not going to be fraught with the same kind of problems you read about in the press. Jason was clued up and open to healthy dialogue: rereading our initial emails reminds me how, right from the beginning, we were clearly walking a two-way street here—Jason had clear vision for the product, but wasn’t afraid to hand a lot of responsibility over to others.
We were also joined by Ruby developer and Hey!Stac micro-conference organiser Josh Nesbitt, who had just wrapped up a contract with a large client in the next city over.
Aside: Josh has also written up a case study covering his side of the NHSx project.
Next, the three of us set up an informal meeting at the NHS offices to meet each other, and decide how we would go about tackling the project.
It was very clear that we’d all have to work very quickly and very coordinated: there was a deadline on the project which, although definitely attainable, did put some pressure on us all.
The team of four (Jason, Product Owner and Designer; Me, UI Developer; and Josh and Dave, Software Engineers) had to work in a very agile manner. We all started our respective work streams at the same time, so I wasn’t waiting for designs to build, and Josh and Dave weren’t waiting for a UI Toolkit to implement: whilst Jason spent the first few days roughing together some UI comps in Sketch, I was setting up the UI’s architecture, whilst Josh and Dave we’re working on a fairly complex architecture for the application itself.
This meant a lot of collaboration, realising designs in the browser, prototyping stuff, experimenting, and even a teardown. I was building and tweaking/rationalising the designs as they landed, meaning that—although the site was designed statically in Sketch—it found its final form in code.
This allowed us to work very fast, but also for the design phase to happen much more quickly; because we weren’t waiting on high-fidelity comps it meant that Jason could work much more rapidly and, for want of a better word, much more messily. The Sketch files only really needed to give an idea of what the product will look like—its Design Atmosphere—and Jason and I collaborated to finalise things in CSS. This meant that he could completely steer the design direction, but wasn’t bogged down with having to create a complete Sketch comp for every last little detail. Agile design that worked very, very effectively.
It’s also worth noting that throughout all of this, I was still travelling around a lot to work with other consultancy clients, run workshops, and speak at conferences. Jason fully understood and allowed that I work in a fairly remote, satellite manner. It was understood that we had a brief and a deadline and, as long as both were met, it didn’t matter how it got done. This was really great from my point of view; I felt very trusted and unrestricted, and it all worked out perfectly.
One of the first things I was sure to do during our initial meetings was to define and underline browser support: which browsers are going to get serviced at all, and which features will all of those browsers receive? In the interests of longevity (do we really want to have a codebase full of OldIE polyfills that we’ll have hanging round for years to come), pragmatism (the clock was ticking), and the sake of quality (let’s not pollute the product’s codebase with hacks to force legacy browsers to work), I made a few fundamental decisions:
The NHSx site is built on inuitcss—a Sass-based, OOCSS framework with a strong focus on scalability and performance—and ITCSS—a proprietary CSS architecture which lends itself well to managed UIs, smaller footprints, and a more sane, manageable codebase. Because inuitcss and ITCSS focus so heavily on performance and a small footprint, the entire products gzipped CSS weighs in at under 9KB. And, by using inuitcss, I managed to have the entire CSS architecture in place within half a day.
Setting up your architecture separately to your actual UI code is hugely important when working in a changing and/or product environment. A few days into building the initial UI, Jason soon realised that his initial designs weren’t quite on the right tracks, so completely redid them. The result, the entire team agreed, was a much, much better UI, far more suited to the type of product that NHSx was to become. Having set up the architecture separately to the UI work I’d started doing meant that there was very little waste or overhead in starting again, and a good 75% of the code I’d written so far was completely recyclable, despite the designs now being totally, entirely different.
Our time together was drawn to a close with a day-long workshop which I ran for staff at the Leadership Academy involved in the NHSx project. This workshop served as something of a handover, but also included:
A great way to end a fantastic project.
In total, I spent 21 dev days working in a remote, very agile manner, to build the NHS a highly performant architecture and framework, building a UI Toolkit, and then implementing it alongside Josh and Dave right onto the product.
This project helped show that, with (a focus on) the right people, even companies as large as the NHS can work quickly and adaptively, in a modern, agile way, that doesn’t cost millions of pounds. It was a fantastic product to be a part of, and I hope Jason manages to fan out this way of working further across the NHS’ departments.
Next: An intense week of workshop and hack days in Copenahgen.
Hi there, I’m Harry Roberts. I am an award-winning Consultant Web Performance Engineer, designer, developer, writer, and speaker from the UK. I write, Tweet, speak, and share code about measuring and improving site-speed. You should hire me.
You can now find me on Mastodon.
I help teams achieve class-leading web performance, providing consultancy, guidance, and hands-on expertise.
I specialise in tackling complex, large-scale projects where speed, scalability, and reliability are critical to success.