What can a developer learn from a carpenter?

September 30, 2025

I stumbled across a video while helping my son, who is apprenticing as a carpenter. It had a lot of great advice for him and as I watched, I realized the same “craftsmanship” lessons apply beautifully to software development. Here are five takeaways that stuck with me:

1. Systems, systems, systems

"Whatever you bring to the table in terms of strength, balance, speed, athleticism can be compensated for, can be magnified or made less relevant, if you can learn to think in terms of systems."

Some of the best developers I know have some deceptively simple systems that boost their productivity and quality of code. Anytime I'm working with a team I keep my eyes open for little tricks that I can incorporate into my workflows. You don't need to be the smartest or the fastest, you don't need to know all the algorithms and tech stacks. Hone your systems and hone your craft. 

One "system" I recently incorporated was DDEV for local development. Previously I used some custom shell scripts and Docker to provision and host local web servers for development. While working on a large project with an establish team they introduced me to DDEV and a simpler, faster, more robust way to rapidly configure and rollout local servers. I instantly saw the benefit of that approach and incorporated it into my standard project setup. 

2. Look at problems from different angles

"Think about how can I start suspending a problem in my brain and rotating it. So I'm looking at it from every possible angle instead of just rotating it enough to see one way that will work and then only looking at it in that way"

Sticking to familiar patterns is easy and safe, but in tech, it’s a recipe for stagnation. Experiment with new tools, approaches, or architectures. Don't be afraid to "soften the grip of confirmation bias" as he so eloquently put it. 

I maintain a tips and tricks list  of clever fixes or patterns I’ve come across. Even if I don’t need them right now, I capture them so when a similar problem pops up, I have more perspectives to explore.

3. Learn how to optimize your workflow

"Usually the competition is too thick to adopt a better system"

He mentions two specific carpentry tricks, crowning lumber and aligning nails before hammering. They’re small, but over the course of a project they save huge time and effort. What's a comparable developer trick? Keystrokes and auto completes. Know your IDE, learn the keystrokes that allow you to write quickly and bounce between windows and coding tasks without needing to remove your hands from your keyboard. 

One practice I use is code reuse. At design time I think, “Could this be useful in another project?” If yes, I spend extra time refining it so it’s modular and easy to reuse. Over many projects, those little snippets add up to major efficiency gains.

4. Less can be more

"Every time you double your crew size you lose 20% in efficiency"

He dropped a gem of a quote and an example about when working alone with good systems you can be more productive than working as a team without good systems. As a solo developer this really resonated with me. With AI tooling available, a focused individual can outpace a disorganized team. It’s not about avoiding collaboration, it’s about keeping the friction low so that the output remains high.

5. Repeatable tasks

"If there's a task that needs to be repeated, then try to repeat it. Get as many repetitions in at one shot as you can." 

I can think of multiple boring tasks that I hate to do and feel like massive time sinks so I get distracted, do a few and then switch context to something more exciting and stimulating. The issue is that context switching kills productivity and wastes time. It's better to get into a groove and bang out a bunch of whatever and then move onto the next task. Things that come to mind are boring data entry and repetitive image formatting. Become a master of the rapid keystrokes and movement reductions. When I'm doing a large batch of something like cropping and formatting images for a website I first try to figure out what is the easiest and quickest set of key strokes and hand motions I can do to complete a single round of the task. Once you do a few, you can mindlessly sift through them while muscle memory kicks in and you get the whole stack of images (or whatever) taken care of. 

Bonus: A perfect understanding of allowable tolerances

"Understand when it needs to be perfect, when it needs to be good, and when it doesn't matter."

There are so many pearls of wisdom in the video I couldn't stop at five. As a carpenter he says you need to know when it needs to be perfect, when it needs to be good and when it doesn’t matter. The same is so true in programming. Often that shows up in the form of optimization ... or as I like to say "premature optimization". Not every loop needs to run at maximum speed, not all aspects of a webpage need to be perfectly aligned, not every database table needs to be perfectly indexed. You could waste hours or days trying to make something perfect but often times perfect isn't needed ... or budgeted for. The skill is in knowing when it needs to be perfect and when it doesn't. 


Wrap up

I hope you watched the entire video and spent some time checking out more of Scott's Essential Craftsman Youtube channel. If you want to learn how to handle a chainsaw or pick up some gems that can be related to your life and profession it will be time well spent.