Hand-thrown frontends.

I've been thinking about my approach to frontend a lot recently and an analogy that comes up pretty consistently when talking about building user interfaces is that the frontend development process should be like efficiently assembling a model from Lego bricks.

With the web industry's shift towards agile, feature-focused methodologies and componentisation, this analogy certainly makes sense. To be honest though, I've personally never really seen frontend as an assembly job. Lego is admittedly awesome, but for me the mental model of assembling Lego bricks in the required order until a Jira ticket can be marked as "done" feels too linear and too rigid for how I like to work. And that's not to mention the pain that comes when you have to partially dismantle your bricks to correct some earlier misstep.

I know that it's almost certainly because I came to frontend from a creative background rather than a compsci one, but I've personally always seen frontend as more about iteration or refinement. Not to be too artisan-code-wanker about it, but it helps me to reason about my process if I think about it more like working with clay:

When you're working with clay, you always start out with the same, rough raw material. It definitely isn't perfect, but it has possibilities. If you manipulate, shape & tweak it the right ways, those possibilities will start to take form. You're no longer just working with clay, you have a thing. Over time, and with enough coaxing, perhaps that thing starts to look like it might be a bowl. Sure, it might be a bit crude – it's lopsided and the structure is just all over the place – but it's definitely concave enough to hold water.

You're not shooting for core functionality though, so you go back again and hone that shape so that everyone knows without a shadow of a doubt that it's a bowl. Maybe you raise it up a bit to give it space to breathe and straighten out the edges so the shape reads better. You might give it more structure in the areas that were fragile and you might also thin out the parts where the clay was laid on too thick. Now, this might not happen in one pass, but with enough time and care you'll eventually arrive at something that could only ever be described as a bowl. You may still want to add some extra nuance and fine detailing at this point, but your bowl is ready to go into the kiln and be fired.

Firing the bowl doesn't have to be the end of the process though. Your bowl is well-structured, the weight is balanced and it holds just the right amount, but you might want to give the aesthetics some love. Maybe you could look at painting it, or giving it a lush teal-amber glaze. Given enough time you could do pretty much anything you want but, though the tools might be different, the same rules apply. You'll still need to take care not to overdo it – if the bowl cracks it might leak, which would both undo all your hard work and make for a pretty crappy bowl.

So, for me, the frontend bowl-making process is a cyclical, non-linear one. On a surface-level it probably doesn't seem like it's as efficient as assembling Lego bricks to order, but over time you'll make more bowls and each phase of iteration will gradually shorten as your skill increases towards mastery. Where you once might have gotten hands-on and worked on-the-fly, you'll prepare all of your tools and materials in advance and you'll have the experience to foresee where things might go wrong. The steps of your process aren't always going to be the same – sometimes you'll be making a plate or a mug – but you have built up a feel for how the clay works, you respect its limits and you can shape it into most anything.

I mean seriously, what even is a plate if not a slightly-flattened bowl?!

Hi, my name is Robb.

I'm a freelance creative developer helping awesome people to build ambitious yet accessible web projects.

Hire me
© MMXXIV. Gwneud yn Ne Cymru.