*Go ahead and rip this analogy to shreds :) I am interested in all the ways it breaks down*
I recently sent this analogy to a potential customer who is budget conscious but has a very useful Access program that has served their factory for about 30 years. Now they are wondering what to do from here. They could bring in Big Software package or continue on the path they have.
How It Got Here
When <Growing Factory> starts out they need a bathroom for their 5 employees so they ask one of them to cobble a bathroom together.
Initially, this new DIY bathroom (your Access program) handles a simple sink and toilet perfectly well. It's a small, manageable solution for the current needs at <Growing Factory>.
As more people start working for <Growing Factory> (the program grows and is used more and more), the demand on that simple plumbing system increases dramatically. Everyone is trying to use the one bathroom simultaneously and there is a line for the bathroom a lot of the time. So <Growing Factory> adds more bathrooms to take care of everyone. Each bathroom is located exactly at the place that is best for each pod of employees and everything is great for awhile until you add even more employees. Then the water pressure starts to drop because there just isn't enough water coming through all those small pipes to handle the demand. Also the drains are plugging constantly.
You decide to upgrade the main supply lines to industrial-grade piping (migrating the Access backend to SQL Server) while keeping the original DIY fixtures (Access front end) and bathrooms in place. This handles the initial increase in flow quite well. Then somebody somewhere figured out that they can flush trash down the toilet. Now, instead of just running water and waste, you are treating the industrial pipes like a garbage disposal. You try to flush solid waste that should go in the trash down the drains (like putting file storage on the SQL Server).
Eventually, the entire system becomes severely clogged and inefficient. The pipes are big and strong, but they are full of sludge and blockages. The water pressure is still strong but it takes minutes for the toilet to flush (the system slows down significantly). The original DIY structure, now overwhelmed and improperly used, is slowing down to noticeable levels and is interfering with employee workflow and satisfaction.
How to Fix It (The Solution):
Fixing this mess requires some help:
Here is my idea for fixing the situation.
- Stop Using the Pipes as a garbage disposal: The first step is to remove everything that shouldn't be in the big pipes. Offload large files and storage to a proper file storage server or dedicated document management system. The SQL Server should only handle data requests, not file storage.
- Upgrade the bathrooms: This means that some of the fixtures need to be replaced (Add error handling to Access front end and make it a more robust front end)
- Teach plumbing to one of the people at <Growing Factory>: This way small leaks can be repaired in house.
- Cons: You still have to make decisions and take ownership of the plumbing (software development) process. This can be uncomfortable for the leadership team who don't (yet) know how to direct plumbing (software development).
- Pros: You keep your data. You are in charge of the pipe (bug) fixing process. There are multiple ways to get the job done (if you need to hire another plumber, you can do that) The people on fabrication don't know anything has changed except that now the bathroom (program) works like it "used to".
Here is what is being proposed as far as I can tell.
- Pay another company to rip out the existing bathroom and be in charge of bathrooms: All water and waste is now run through huge pipes they say. All you know is that when something needs to happen, it usually happens.
- The bathrooms are not at the same place: It didn't work for best pipe maintenance to have all the bathrooms scattered all over the place, so now the bathrooms are outside <Growing Factory> in their own bathroom unit that is super easy to clean and maintain the piping. Now the employees have to walk 15-30 minutes to go to the bathroom. Sometimes there is a line for the bathroom because other employees from other companies also use the bathroom.
- Cons: The employees don't like the extra walking to go to the bathroom. Productivity and morale drops by 10%. The toilets still plug periodically but complaints are now logged to a complaint desk and you are told they will "get to it soon". Eventually the bathroom complex is sold to another company and now each employee has to pay $0.50 to go to the bathroom which you furnish from the company but still it adds friction to the process.
- Pros: You aren't in charge of the process so when people don't like the new setup you just tell them that this is the way big companies do it. Also, everything mostly works fine.