No matter how you decide to develop software, the less you develop the cheaper it is. So, before you start a new project or decide to invest in software development I would suggest you think long and hard about how you can solve the same problem without even writing a single line of source code. Or buying an off the shelf product. Before investing any money.
Waste and dirty input
OK, let’s look at a process I have seen on a few occasions. Computerized time reports, which everybody loves to hate. Lets not get too philosophical about why they exist and if they should. Just think about the last time you were reporting time. How did you feel? Happy, exited, indifferent, frustrated? If you’re anything like me it was probably the latter.
What really gets me going though, is when the tool you are supposed to use requires you to fill in details that you have to look up elsewhere. Or have boxes that can’t be left empty. With the pretension to get the most detailed information possible about the entries. I say it has the opposite effect.
People tend to use the same information over and over again. Or some ‘default’ value. Just to be able to finish time reporting and do some real work.
Waste in the helpdesk
I started my career as a hardware and software installation guy. Worked my way up or down, depending on how you look at it, to a software developer. During my years as a service agent I got to see and work with various help desk tools. The experience is very similar too time reporting in a lot of ways. You get low quality information, bad data, about customer problems because the forms are usually too detailed. And because of the fact that you can’t get to the next screen before finishing the first one with obligatory fields. Fields such as ‘Problem type’, ‘Room number’, ‘Operating system’, ‘BIOS version’ or something equally clever is scattered throughout the ‘support’ applications.
When you’re under a lot of stress because you just want to help this poor customer who are struggling with something, you really don’t need that to be in you way. This only results in very frustrated employees trying to work around the forms while talking to even more frustrated customers. Not a good combo.
Not only is this wasteful, it is institutionalized waste.
Refine, then computerize
This is why I am suggesting you refine your processes first and then computerize them. Otherwise you would be hiding and making it even more difficult in finding and identifying waste in your organization. Let me give you an example.
I was working with a web content management system. A web based application for publishing information on a web platform. We had a potential customer who explained their interest in the product we were developing. I got to talk to an end user and she described the flow.
First you edit the text, then review it. After that the information owner reviews and then a publisher publishes the information if all is in order. Easy enough, right? Well, this was a few years back and I can’t clearly remember it but it might have been another step or two. It doesn’t matter. The problem I didn’t immediately see with all these steps involved with publishing information jumped at my face when I tried to put them into our product. I prototyped and I tried to fit functionality into the user interface. She had envisioned different roles for all these editing, reviewing and publishing activities and that really cluttered the product. I came back to her trying to understand why they had to have all these roles. Why they had to be defined in a product. Didn’t people talk to each other. Why couldn’t the person who edited the text, review and publish it? She had no answers. I guess they hadn’t looked at their own process. The product we had didn’t quite fit with their information handling strategy so in retrospect I’m proud of the fact that we didn’t sell our product to them since it wasn’t what they were looking for.
When you have convinced yourself and your organization of the fact that it is in fact a good idea to spend time, money and energy on software development. And you have looked at your process and removed all the waste that is there already. The dirty input is now gone and it is time to start developing.
Different types of demand
If the dirty input is removed as a factor of waste creation. What is the biggest waste in software development? Where does the money get spent. If you look at software development as a system. Or look at an organization creating software as a system you will have two types of demand on that system. Value and failure demand.
Value demand – The demand that the system exists to serve
Value demand is the kind of demand we want. Customers getting functions and features that deliver value to them. This can be a new view in a GUI, a new file export format or something else that is actually used in a software product. If you are looking to improve a systems performance, you design the work to meet the demand in the most efficient way.
Failure demand – The failure to do something, that causes the customer to further demand on the system.
That further demand is the failure demand. It could be Bugs, phone calls to a helpdesk, rework in terms of misunderstood requirements and so on. This pure waste, stands for a significant costs in software development and should be removed. Mistake proofing techniques will reduce this kind of waste. Problems are discovered and remedied earlier which leads to less demand on the system. Less failure demand.
This distintion, between those types of demands is important. Because you treat them differently.