Holiday Agility In The Workshop
Happy new year folks! Welcome back to the blog for another year. I hope you all had a great holiday break. I certainly did. I spent a large part of my break productively engaged in my workshop building things. I have mentioned this before but for those who have missed my previous workshop updates, I build things out of timber. Furniture, using traditional joinery so no nails, no screws, no fancy fasteners, just mechanical fit and glue to hold it all together. No cheap timber either. No pine. No MDF. No chipboard. Australian hardwoods all the way. To describe the process of working with expensive timber, let me put it into terms that more of my audience will understand (given that I suspect there are more software people than timber-workers who read this) - imagine working on a software project where every action you make is non-reversible. There is no source control, no revert, no undo, no control-z. Everything you do is straight to production. If you make a mistake you have to throw the whole part (and anything it is permanently glued to) away and start again with new materials, which involves a 3 hour round trip to the specialist timber yard, a lot of expense as you have buy a whole length not the little piece you need, and a long delay if they don't have what you want in stock.
So while I was building, I was thinking about just how anti-agile the whole process is. You need detailed up front plans. Once you start you really can't make changes, you are basically locked in. Materials are in limited supply, have long lead times and are expensive. There are limited options for any sort of teamwork. You can't have a team standing around a table saw. That's unsafe. In fact any more than two (one feeding, one catching and even then only if it's a big piece) and it's just not possible. You can't even have multiple people working on different pieces simultaneously (not in my workshop anyway) - there isn't the space and more than one machine at a time would start to blow fuses. So it really is a solo activity (until it gets to glue time where 7 or 8 extra pairs of hands are really handy for manipulating clamps). In a lot of ways it's a lot like infrastructure projects - expensive materials with long lead times. Detailed up front planning. Limited ability to roll back changes without massive rework. Lots of solo work doing configuration then brief bursts of activity at deploy time when it's all hands on deck. No wonder people say that infrastructure can't be done agile. But then I really looked at what I was doing and realised that most of those things describe the way I used to do woodworking a few years ago when I was starting out. What I was actually doing now, while it looked similar on the surface, was actually quite different. And quite agile.
Let's start with the design. You do need a design. You need that to work out basic dimensions and how much material to buy. My designs used to be very detailed. I would work out in advance how everything would join together and draw that on the plans. I would work out joint allowances and figure that into my cutting plan so I could work out exactly (to the cm) how much material to buy. When I looked at the plan for the piece I was making over the holidays (a TV cabinet - which is the most complex piece I have attempted so far) I was struck by how much wasn't on the plan. There were overall dimensions, and all the major parts were there but there were no joint details.
All the details of how things fitted together were missing from the detailed plan. Where those details were was in rough sketches. I had a rough idea of how everything would work but the exact details I would work out later once I had the pieces in my hand. The more complex the joint, the less detail I had, and the more options I had. I sketched 4 separate options for one of the more complex joints. There was enough detail to get me started. The details would follow. So I guess that's rule one for infrastructure agility - "Have just enough information to get started...the details will follow".
Next step is to buy the materials. You want to minimise cost and effort. Each trip to the supplier costs time and money, and if it's a big batch, adds delivery costs as well because it won't fit in the car. So ideally you want one trip, one order, one delivery with minimal materials. To achieve that I used to prepare a really detailed cut sheet with every piece laid out with centimetre precision, all arranged exactly according to the listed material sizes to minimise the length of timber I needed to buy. Of course what happened when I arrived at the timber yard is that I would find that they were out of 2.4m lengths and only had 2m in stock or the nominal 200mm boards were 195mm this time or that the pieces I needed had grains that didn't match so I needed to chose different lengths. The end result was that I needed to completely rework my plans at the timber yard, while the guy with the forklift was waiting around to put the stack of timber back together, which meant a rush job and mistakes.
This time I had assembled a rough cutting plan, added 10% to all the lengths and made sure I had enough leeway to cope with boards that were slightly shorter or narrower than their nominal sizes. Yes, this did add to my costs because I was overbuying materials slightly. It added maybe $20 to my $300 order. And I had enough material. And some leeway to accommodate minor design changes. Want those legs 650 instead of 600? No problem. No emergency trips to the timber yard for additional materials. A little up front cost leads to a lot of downstream flexibility. And the leftover materials I can use later. In this case I have enough to make a matching footstool. So I guess that's rule two - "When buying materials, give yourself a little slack". Need 100 servers? Maybe buy an extra couple just in case. Need 500 network cables, maybe order an extra dozen in case you find some faulty ones. Sizing the system for 1000 users? Maybe size for 1500 to allow for expansion or unintended extra functionality that gets added in later (like a footstool). A little up front cost leads to a lot of downstream flexibility. BTW, for reference, I am helping out on a $1.4m infrastructure project at the moment that suffered a 2 week delay because someone left 2 fibre patch cables off the materials list and they had to be ordered separately. Had they just added an extra few of each type of cable to the order, just in case (total cost around $200), that delay would not have happened.
So, now we have our materials, and two valuable rules for infrastructure agility. We will look at the rest of the process (and discover some more rules) next time.