Comparing software development to building a house or car is a common metaphor used when software developers try to explain the software development process to non-techies; It usually works because we all have a basic understanding of house construction or have been actively involved in it at some point.
As for me, I have been directly involved in both, I am in the third generation of a series of “ Fundis “ in our family; My granddad was a mason who (if you believe an old man’s tales😃) built the first brick house back in our village; my dad is a welder, my uncles are carpenters, electricians, and masons.
So you see, while I did carve out my own path to becoming a software engineer, the apple didn’t really fall too far from the ‘fundi’ tree and the passion and talent for building and making things just runs through my veins. 😃
Okay, let's get down to business.
The practice of writing software has evolved dramatically, and what was once considered best practice 15 years ago is no longer applicable today.
As much as I like comparing building a house to developing software, there are many more differences now than similarities.
However, in this article, I'll focus on the similarities to help non-tech innovators, thinkers, and business leaders learn the fundamentals of software development and best practices for developing a great digital solution as inspired by building a house.
Custom Made Software Or Off The Shelf Digital Solution
Building a house from the ground up is difficult, and even if you hire a fully equipped team of builders, you will still need to understand the basics of architecture and construction and go through the process of building one brick to another, following the project closely to make sure everything goes as planned; the expensive and "easy" way out is to buy a ready-made house, customize it per your needs, and just get done with it.
The same applies to software development, there are off-the-shelf solutions that you can acquire or choose to have one tailor-made for your specific requirements and wishes.
In both cases ( house or software), picking an off-the-shelf solution has some limitations on how far you can customize or scale the solution.
Our focus at iPF Softwares is on designing, creating, and inventing custom digital solutions for impact-oriented businesses and initiatives in Africa; For the past 7 years (since 2015), we have designed and developed over 50 custom software solutions, and the following are some of the reasons why we prefer custom software solutions; most of the reasons are why people prefer to build a house from the ground up.
- A Unique and Innovative Product: Every business has its own unique business model, vision, and mission. Therefore, a bespoke software solution for a company ensures that the software has all of the features and functions that the company needs to simplify business operations.
- Easy to scale: If you built your house from the ground up, you'll know how strong the foundation is, how thick your walls are, where the weak wall is, and so much more - so when you need to make a change or add more space, it'll be a no-brainer to figure out where to start. The same is true for a custom software application; adding more value-added features to your product will be much easier on a tailor-made digital solution than the alternative.
- Easy repair and maintenance: The process and experience of building a custom house or software solution are exciting and by itself is a learning process. By the time you're done, you will not only understand the basics of software or house construction, but you will understand who is the best “ Fundi”, what are the best frameworks to use, what are the possible risks, and how to handle them.
The survey, Architecture, UX, and Interior Design
Ideation and user experience design are important activities to get right before investing heavily in construction.
The process of ideation and user experience design allows an innovator to get a mentor picture of the software or house to be built, how much investment will be required, and an estimation of time on how long it will take for the project to be done.
Building architecture and interior design are rarely skipped procedures while one is planning to build their houses, but most of the time they are ignored in software development or at least not well done.
When constructing a digital solution or a house, one of the most significant factors is design (UX/Interior/Architecture).
If you do not invest time, effort, and money into this, you may end up with a failed solution.
The user experience Interior design will set you apart from the competition and assist you in triggering the appropriate emotion or feelings from customers and users.
Building in phases; Agile software development
If it’s not the car making metaphor while explaining the agile software development methodology, it will be the house contraction and most can relate to this better;
A true story:) I witnessed my parents build their first house, I don’t remember much about the processes they took, but I recall we moved in when most things were not finished yet, only the essentials were done, and it was functional.
The improvements and fancy things came in years later.
And this is the agile mindset I wrote about last week ( Agile Software Development: The iPF Softwares Way ).
You must first launch an MVP (Minimal Viable Product) and then iterate based on customer input, much like building a house in phases.
Unrealistic time estimation leads to excuses
When you think software developers are masters of excuses, you haven't seen builders yet; sometimes I think they're the ones who inspired the invention of a Swahili proverb, “ Fundi mkweli ni Kinyozi tu “ meaning “ Only barbers are true to their service delivery promise “ 😅
Well, it all boils down to unrealistic time estimation, poor requirements definition, and sudden changes in the specification; all stakeholders play a great role in having the project be delivered on time with expected quality.
As for us at iPF Softwares it has been one of the major issues our leadership team has been working on for several years now, putting together processes, systems, and tools to minimize project delivery delays, and it is getting better and better every day.
Maintenance & Technical Support
It goes without saying that a house requires maintenance. You will need to repaint your walls, change your roof, and do plumbing.
Software maintenance is just as vital as house maintenance, It keeps solutions adaptable to deal with changing technology and business conditions.
Bottom line, if you realize that your house requires an unusual lot of maintenance, something more fundamental is wrong.
There is almost certainly a significant structural flaw; chances are it will be almost impossible to fix all the issues and errors fixing and a complete rebuild of the solution is the more optimal solution. This is to say, you need to get the early steps in order and make sure the foundation is properly built.
A good house is built according to a good plan. Understand our methodology and the secrets to designing and developing great digital solutions by “ How to successfully develop software applications: 5 lessons from the Lean Startup “