We recently had a new bathroom fitted and when I first used it, I noticed that the sink tap was not completely straight... I'd been dealing with several software bugs at work during the day and automatically thought of the tap as being a software bug!
One thought led to another and eventually, I was in the process of comparing the installation of the new bathroom to a software lifecycle...!
Let's take the following simple diagram of a Software Development Lift cycle for reference:
Now lets look at the similarities of a new software solution vs. a new bathroom:
Before the decision of installing anything is made, firstly budgets need to be allocated for specific departments
- A company decides a software system requires implementing/upgrading and allocates a budget for the affected department(s)
- A home owner decides a new bathroom requires fitting and allocates a budget for it
- A company decides what Software vendor will be used to purchase the software from (if any), and what technologies will be utilised e.g. Oracle - Middleware Stack, IBM - Rational Suite, JAVA etc.
- A home owner decides from what bathroom vendor the bathroom will be purchased from e.g. IKEA, B&Q etc.
- A company decides who will implement the software system into the Company systems e.g. Third party software solutions company, internal I.T department, contractors etc.
- A home owner decides who will fit the bathroom e.g. Bathroom fitters, builders, homeowner themselves etc.
- A company requires functional/non-functional requirements for the software system to be based on and will use Business analysts, solution architects, business users etc. to design them
- A home owner will make use of bathroom specialists, peers, contacts etc. to review the options available when looking to fit the new bathroom
- A company leaves the chosen implementor to design how the software will be implemented or will internally generate design documents for the the implementor to follow
- A homeowner will make use of the chosen implementor to help design the layout and required components for the design of the bathroom e.g. size estimates of bathroom components, area for tiles/carpet/paper etc.
- The implementor will go ahead with the software design and implement the software system
- The implementor will go ahead with the bathroom design and install the components to build the bathroom
- Internal tests such as unit tests will be carried out by the implementor to ensure the software is in a bug-free state once delivered
- Implementor will carry out tests to ensure the components are fitted and functioning as expected
- Once found bugs are resolved and tests are complete, the implementor will deploy the software solution into the companies systems
- Further testing may take place by the business users e.g. User and Business acceptance tests etc.
- Once the implementor is happy with the fitted bathroom, they will perform tasks such as switching water pipes back on, apply finishing touches etc. and declare the bathroom use-able
- Further testing will most likely take place by the user to validate installation e.g. Check if sink taps are straight...
So there we have it. Implementing a software solution is exactly like fitting a new bathroom! (With a few changes here and there.. ;) )
I would like to place emphasis on the fact that I have not gone insane! The moral of this post is for readers to take a step back and understand how a software building cycle is actually driven by a powerful framework that is used by many to perform activities within our life where a desired outcome is expected from investment.
This framework is often used subconsciously by many, but the reason it is so important within the I.T industry is because budgets, resources and time are of huge importance. Software life cycles helps keep planned/performed activities documented in a structured manner so that projects are kept on track and everyone, especially management, is kept up-to-date on current activities.
So the next time you expect an outcome from some form of your investment, take a step back and assess the activity cycle that will be exercised for you to obtain your desired, hopefully successful, outcome! :)