Software Inventory and the “Finished Goods Warehouse” Dysfunction

As a strapping young lad, I worked for my Dad’s management consulting firm “on location”. I happened to work at a firm that made a very, very exciting product – metal drawer slides (booyah!). In its simplest form, this product has exactly 3 parts: 2 pieces of metal (bent, punched and painted) and 1 nylon wheel that gets pressed onto one end. This firm did not suffer from lack of customers or an oversaturated competitive landscape, but this firm was clearly struggling. So why were we there?

For starters, they did not really understand their entire business from end to end. They hadn’t given thought to an integrated supplier network. Partnership with the people that actually shipped their products, raw material suppliers, etc? – Uh, no.

I will write at length about the menagerie of issues they encountered in another post, but for now, let me describe ONE of the symptoms those issues caused – a massive finished goods warehouse. The warehouse housed actual finished products, buffer stocks of every product sku, and much more. It also housed huge quantities of production product runs that weren’t to spec, or were sent back from drawer manufacturers in large quantities because they “didn’t fit”. It also contained blems, discontinued product lines, and more buffers.

At first blush, I’d guess this seemed like a pretty good idea. How else would they ensure they had enough product on hand to ship to customers at a moment’s notice? Not only that, it took 2 full days to retool the machinery and powder coating bays to get ready for new product runs. So, while they had their most popular models running, they decided to build extra units to ensure they were being efficient, and didn’t have to retool the machines (and waste all that time). So, they did what many manufacturing firms did. They built a massive finished goods warehouse. When they ran out of space, they built it bigger. In my estimation, they’d run out of space 3 or 4 times before we got there.

Imagine their surprise (and mine) when the first thing I was asked to do was to take 5 friends from the shop floor and start “recycling” mass quantities of finished goods, old parts, blems, etc. It was a horrible job. It felt like I was on an episode of “Hoarders – Enterprise-style”. We gutted that warehouse over the next weeks and months, leaving one “relatively” tiny section in the back corner near shipping and receiving for storage.

Why would we do that?

Let’s start with how firms look at excess inventory and why they manage it the way they do. How firms view excess inventory often determines the practices they employ to manage it. Excess inventory, in many manufacturing firms, is viewed as:

• An Asset (because it is listed on the left side of the balance sheet)
• A Stock buffer – “insurance” for demand fluctuations
• Insurance for production problems (scrap, incorrect bills of material, shortages, on the floor engineering changes)
• Some also view it as efficient use of resources. After all, BIG BATCHES are more efficient, right?

So what’s the real impact of excess inventory? Many companies view costs as simply the cost of borrowing money to finance and build the excess inventory. The true costs are significantly higher and include the following:

• Holding costs (cost of capital, warehousing, lost items, theft, damage, insurance, physical inventory counting)
• Product Obsolescence – finished goods are at heightened risk of becoming obsolete or unneeded
• Opportunity costs (missed sales)
• Delayed shipments due to order fulfillment issues and growing complexity – sometimes requiring expeditors

When all costs are considered, most companies find that inventory costs are in the 25 percent to 35 percent per year range. Yikes. This warehouse became a dumping ground for an out-of-control process. It was simply waste, but no one understood it. They didn’t have an idea of its true cost, how to rectify it, or how to eliminate it.

So how does this relate to Software Development?

If you look closely, there are obvious parallels in the software development space. The most obvious is related to the “large batch efficiencies” firms think they get in specifying software in advance. This one is fairly obvious to most, as requirements and “intended solutions” age and become obsolete. This causes an entire raft of dysfunctions from the waste of refactoring old and outdated specs, to the worse problem of massive and onerous change control processes that tend to drag projects out for months or years (and sadly products are built that no one wants or needs). What a waste!

If we dig a little deeper, many organizations (like mine) have adopted Lean principles and are attempting to build “flow” and “pull” into our processes and teams. We construct Kanbans to visualize that flow. By in large, this simple visual approach allows us to “see” bottlenecks at every steps in our process. This is HUGE because we can now take action to remove the bottleneck and get prodcuts to flow.

Interestingly, it ALSO allows us to see where we build “buffer stocks” and “finished goods warehouses” in the value stream. These buffers are often NOT acted on as we rationalize away the dysfunctions as “necessary” to our big batch mentality. This is why it’s important to challenge the need and inspect why you have them.

My opinion: Sometimes software-centric “finished goods warehouses” ARE necessary, but mostly they are built to cover up an out of control process that no one understands, all under the guise of “big batch” efficiency.

What we are trying to teach now, and what teams need to start to challenge themselves to understand, is that a “buffer stock” or “finished goods warehouse” can create the very same dysfunctions in your development processes as bottlenecks. It hinders flow, hides issues, and can create massive waste.

So….you are seeing the bottlenecks. Can you find where you build “buffers” or “warehouses” and explain why you need them? Do your kanban boards display excess inventory anywhere – even if you made an active decision to put it there? Is it more important to have them in the process than building flow? Are you building those things into the process to avoid another issue?

Merging Work and Life to Create Balance

So What’s The “Big Idea”

Many of us, including me, work like the dickens to create systems that filter and classify work in our professional lives. Filters that allow us to get things done (execute), and think strategically. It’s critical in business to sharpen our ability to be planful and take advantage of strategic opportunities, and equally important to execute. If we don’t, everyone who counts on us will suffer, including our organizations broadly. The good news is that we have decent feedback loops in a business setting, and we get that feedback fairly quickly.

In our personal lives, this attitude of “plan and execute” tends to change. Somehow we feel that we go home to “get away from all that”. We don’t want to take our work home with us, so we divorce ourselves from the lessons and techniques we use at work when we arrive at home. People think (mistakenly in my opinion) that nothing should cross the work/home boundaries, lest our lives get thrown irreparably out of balance.

It’s no wonder that most people put little to no effort into building a reasonable sense of agency – the ability to think strategically and act on those strategies – when it comes to their own personal lives. My wife and I have come to realize that this is a huge mistake, because the things that we want to accomplish in the pursuit of fulfillment in our own lives tend to come from a category of stuff that we call “life goals”.

So to begin, I want to illustrate how “life goals” differ from other activities.

Define Your “Stuff”

As we take on the challenges of our days, work (or “stuff”) comes to us from everywhere. This “stuff” falls into the Stephen Covey Urgency/Importance Matrix, and can be defined this way:

Distractions – (Low Urgency, Low Importance)
These are items that are not important, nor are they urgent. They tend to be things that pop up all the time, because we let them. For me, these are things like web surfing, short stints in front of the television, arranging papers on my desk, browsing a magazine or two. It’s simple trivia and busywork.

Interruptions – (High Urgency, Low Importance)
These are urgent, but hold little/no relative value. I have three kids, and my life seems to be filled with these. “Dad. Dad! DAD!!!!” my son will scream from his room. When I arrive in a panic, thinking he just broke his leg, he asks me to get him some batteries for his flashlight (or a “peanut granola bar”).

Life Goals – (Low Urgency, High Importance)
This is stuff that’s important, but there is no urgency to get it done. This is where our “life goals” come from. This includes stuff like proactively building strong family friendships, reading and reflecting on parenting techniques to help our children build their independence and life skills, and creating a vision for what our marriage could be as we get to know one another more deeply, and deliberately creating the life we want.

Critical Activities – (High Urgency, High Importance)
These are things that are really important, and have clear urgency. These situations can take the form of emergencies, urgent family matters, disasters, etc. The typical response is to summon any and all resources you can to handle the activity, dropping everything else in your life. You essentially enter autopilot mode and go.

To build a life of fulfillment and meaning, my opinion is that you have to spend as much time as you can in quadrant #3 – Life Goals. Of course we need to spend time in all four of these quadrants, but spending time in the other three is not hard. In fact, those quadrants tend to “just happen”. Busy work, interruptions, and emergencies come and go all the time. And if you let yourself, you will stay in those three areas (and grow very little). Only by building your agentive “muscles” can you think about those areas that will actually create the life you want.

OK. By now you’re saying that talk is cheap. So, to put my money where my mouth is, I decided to take a few key lessons from my professional life and use them in pursuit of happier, more fulfilling days with my wife, my family, and myself. Interesting things ensued! I am learning a great deal about the power of taking my own advice. I’d like to describe the process along with some of the lessons learned (more details in a subsequent post).

The Concepts Used

Specifically, we used a planning retreat, a concept for perpetual planning that works extremely well in work settings. The concept is simple enough. Take yourself and your significant other “offsite”. Go somewhere familiar or go somewhere novel, but find a place that you can get some privacy, some focus, and get to work. Organize your time and prepare for the day with homework. Schedule a follow-up session quarterly. If you’re really aggressive, schedule a weekly check-in.

There are more than a few powerful concepts that emerge from time like this. Some examples include concepts taken from Lean and Kanban. One example: the ability to talk about emotionally charged areas of our lives with partners with a little less emotion. After all, if we have thoughtful life goals (about things like budgeting, marital communication, our kids, etc) and they are part of our quarterly offsite discussions, then we have a non-emotional way to bring these issues up in relative safety, and we can do it on a cadence (versus when we bounce a check) **I feel compelled to tell you we don’t bounce checks. :)

Other concepts examples: treating the “act of planning” as much more important than “the plan”.

“Plans are useless, but planning is invaluable” – Dwight Eisenhower

Via Personal Kanban, we are attempting to get everything out of our heads and visualized to manage the “existential overhead” of keeping tasks and projects in our brains. We combined GTD concepts to put the outcome of our planning in a trusted system so we could “manage the system, versus manage the work”. We determine things that need to get handled NOW, versus things we can PLAN, or those that we can DEFER (or things we can THROW AWAY). We use dates and deadlines sparingly for goals. We have plenty that has to have a date associated with it, but the bulk of our goals have no date because we view those dates as needless constraints and a source of guilt and angst if we find ourselves “living life” and missing occasional deadlines. Plus, we don’t want to be “shackled” to dates if we feel we can deliver faster (ok, I threw that last one in as a challenge to myself)

Lastly, we are using agile principles as well and have created a regular cadence to reflect on our approach (and ourselves) and tune accordingly. One way is through a weekly chat that allows us to review our system. The second is a “re-planning” session that will happen quarterly. If we start to come off the rails, or we feel like we are moving in a direction we don’t like, or we find ourselves with a new challenge we didn’t expect, the mechanism is in place to help us take deliberate action.

Well, that’s it for now. You’ve caught the experiment “in progress”. I would like to describe the actual planning process in more detail and I will do that in the next post. Maybe we will have a result by then!