Craft and tools and jigs
I wish I would have gotten into woodworking when I was younger and had the time to pursue. It’s a practice that I now enjoy vicariously. I watch skilled people make all sorts of interesting things. And through that process, I’ve seen how the craft of woodworking relates to the craft of making software.
The software design practice remains in a self-imposed existential crisis related to craft. So seeing how actual craftspeople do their work seems pretty damned worthwhile.
Craftspeople are toolmakers
I learned early on as a crappy DIYer that good craft requires good tools. There are simple limitations to what a human being can do. This does not mean that skill doesn’t matter. The skill comes from how it’s directed through the right tools–“right” being both in function and quality.
There are the off-the-shelf tools, like chisels and planers and all sorts of other things. For software designers, that’ll typically equate to Figma or Sketch. Woodworkers tend to have many single-purpose tools–not to much for software designers. I think that’s a problem, but that’s another topic for another day.
Getting back to the topic–craftspeople are toolmakers. For all the off-the-shelf tools there are, there’s always that specific thing they can’t do. Which brings me to jigs.
Jigs are the custom tools that craftspeople create to enable them to do great work. In woodworking it’s often used to help make cuts with optimal precision. But, really, it can be used for anything. Jigs are what allow craftspeople to deliver quality predictably and faster.
Jigs are “fine, I’ll make it myself” made manifest. The tool they need doesn’t exist or is too expensive or is too much of a pain in the ass. So a jig is born. The craftsperson has a job to do and they’re not going to let a tool not existing stop them.
Designers who are not toolmakers are not (effective) craftspeople
I’m not sure I agree with the above statement, but I agree with it enough to keep it in. Crafting with high quality takes time–no matter the medium. Time is not generously handed out in the software industry. Hand-crafted, from-scratch quality in software is incredibly rare.
And it’s not like other craftspeople enjoy burning time. A master woodworker can almost assuredly create high quality without the use of jigs. But it would take considerably more time and be prone to mistakes (which takes time).
It doesn’t take a genius to connect less collective design time to the steady decline of software experiences. Designers simply have less and less time to focus on craft. So craft suffers.
Do jigs fix this? No. But they help. A designer that can speed up their work through design jigs has a distinct advantage. And every jig that cuts out a step or improves the precision of the output gives time back to focus on craft.
No, Figma plugins are not jigs
More specifically third-party plugins. And don’t get me wrong, plugins are great. They’re the closest thing we have to single-purpose tools. But jigs they are not.
While more focused than Figma (I mean, what isn’t nowadays) most are far too broad. Jigs are usually made for one person to do one job. Many plugins–especially popular ones–are made for many people and do many things.
Secondly, and this is just me, but I like things the way I like them. Why would I use a plugin that doesn’t work exactly how I want it to when I can make my own that does? That’s what’s great about jigs. They’re made especially for you because they’re made by you.
Lastly, I don’t trust 99% of them. It’s not immediately obvious what they’re doing or tracking behind the scenes. I have no control over updates or what the tool is going to be tomorrow. Today’s free plugin is tomorrow’s SaaS asking for my email and credit card. Call me cynical, but I’ve been burned too many times to rely on a random plugin.
Jigs in software design
So, if community plugins aren’t jigs, then what are? Well, it’s not complicated–it’s the things a designer makes for themselves to make something else. This can take many different forms.
Local components
The easiest jig a designer can make is a local Figma component. No, not a library component from their friendly-neighborhood design system. I am talking about a local, custom component for a project-specific need. I am shocked at how infrequently designers use local components. I am also shocked when those designers rail at long it takes to make global changes in their design. Local components are the epitome of design jigs.
Figma scripts
The next level up are Figma scripts. I typically use Scripter or, in cases where it works, the developer console. My custom Figma scripts usually follow the pattern of iterating through elements to:
- Replace all fills in a file from one color with another (no, Figma’s built-in functionality doesn’t work for this)
- Layer counting
- Remove all hidden layers in a file
- Remove layers outside of its parent’s frame bounds
- Remove floating point values layer attributes
- etc.
Notice the pattern here. Many of the examples are focused on cleanup and file hygiene. It’s not directly enhancing the design, but it’s making it cleaner and more precise.
And yes, Figma plugins exist for all these things, but without fail, I’ll need to do something that the plugin doesn’t do. And I’m at the point where I can make these “jigs” faster than I can navigate the Figma community plugin labyrinth.
Your own Figma plugins
Every once in a while a jig becomes a repeatedly used resource. At some point it makes sense to commit to making it a tool–or in our case, a plugin. These cases are more rare than we like to believe, so don’t hoard. But in cases where something is useful over, and over, it can be worth making it more permanent as a plugin.
But again, be careful how much time you spend on this. Figma isn’t going to be around forever and so the minute the next “it” design tool comes out, all this work is for naught.
Single-purpose CLIs
For any tooling that isn’t Figma-specific, I like to write Node-based scripts that I run in the terminal. If the tool is graphics-based, I output the result as a PNG or SVG. I can then import said output into Figma or whatever tool comes next.
What I like about this is Node and Javascript are not going to depart this world anytime soon. I can rely on these tools working far after Figma goes offline.
And, by all means, don’t limit yourself to only automating design tasks. How much of our day is absorbed by not design? Build jigs for note taking, or improving focus or whatever helps you do your job better.
Toolmaking is a craft–for the sake of craft
I’m not a believer in “work hard or work smart”. I think good work takes hard work and smart work. I also think it requires a different line of thinking for designers who want to focus on craft. The outcome alone cannot be the focus. There needs to be as much thought and planning put into how the hell that outcome can actually be produced.
Designers love to create. I encourage them to do just that. Create things that help you create better things. Time is precious. White-knuckling through repetitive, error-prone tasks lead to lower quality. Use all the skills you’ve built up to help enhance the way you work. And if you don’t know how to code yet, here’s a nudge to learn. Unless you enjoy white-knuckling through repetitive, error-prone tasks.
If the design practice wants to elevate craft, it’s going to need a healthy dose of toolmaking.