Building Software is like Building a House Except…
When you build a house, you start by drawing up detailed blueprints and getting approval for the build. Then, and only then, do you pour the foundation. Next steps involve framing walls, putting up a roof, running the utilities, and after months of work and lots of stress—you have built a house. You design it in its entirety, build a shell that looks like the finished product, and then fill in rest of the details.
This process may be familiar because it’s one that is used across many industries, software development notwithstanding. But, what if the homeowner is unhappy with the location of the kitchen island? They may have reviewed and approved the blueprints and floor plan, but they didn’t know it wouldn’t work for them until they walked through and personally experienced it. If you’ve already installed flooring, countertops, and fixtures, it would be an expensive and time-consuming fix to give the homeowner what they need. With the tight budgets and timelines we all work with, they may opt to just be unhappy with the island, and maybe even the entire kitchen.
For software developers at LeanLogistics, this is a scenario we want to avoid at all cost. We invest our time and maximum effort into every project. If our customer was unhappy with the results, or found something they couldn’t use, we would not be able to complete the final and most gratifying step of the building process: handing over the keys to their new house.
One Slice, One Room at a Time
To prevent this from happening we develop software one vertical slice of functionality at a time, not unlike building a house one room at a time. Instead of pouring the foundation for the entire home at once, we start by pouring enough foundation and framing enough walls for one room on the main floor. We know we’ll eventually build an entire home, so we architect so that we can add other rooms, but we will always stay focused on completing one slice at a time. Then, we get feedback.
Perhaps it is too big or too small?
Maybe the room needs to have a different footprint?
More importantly, we get a lot of information from our customers in exchange for asking some questions and providing an opportunity to walk through it. Then, we perform all the steps necessary to finish a room in a house – hanging drywall, installing doors, flooring, windows and trim – and we pause to get feedback in between each step. All of this helps to be sure that we’re on track and building something that will ultimately meet our customer’s needs.
Start Living in a Room Before the House is Done
We won’t stop working on a slice until we know it works, so a customer could start using it as soon as we say it’s done. This means they could experience some cost savings or process efficiencies, even if it wasn’t the last slice in the feature or module. Because our process is designed to constantly hone in on what our customer needs and apply everything we learn to each subsequent slice, we can do all this without waiting until it becomes cost-inhibitive to make adjustments.
Real World Problem Solving
This agility, combined with a focus on building working software that solves real problems, is what makes our development team special.
Now, where did we put those keys…
Tagged agile, coding, developers, functionality, LeanLogistics, LeanTMS, Logistics, module, scrum, Software, supply chain software, Technology, transportation management system, transportation management systems