Plan - Develop - Release - Repeat
When starting a software project you may think you know how long it will take or how much it will cost, but you cannot be more wrong. Depending on the type of product you want to build, the amount of features you want it to have and the number of users that will be using it in the long run the time it takes to build sits on a great spectrum, averaging from a couple of months to a couple of years, if not decades. That's too much - you're gonna say, and you can't be more right! Also if you spend too much time building it others might beat you to it or you end up realising it's not even what the market needs at all. So is there a better way to do it and not lose time/money? Yes there is!
The industry calls it Software Development Life Cycle, or SDLC for short and it's not that complicated as it sounds. Of course there are several approaches to this, influenced by the product you are building, the resources you have at your disposal and sometimes even the field of business you are building for, but you don't end up with that big of a list.
You got: waterfall, agile, big bang, v-shaped, iterative and spiral.
A large number of you might find resemblances between some of the items in the list like isn't waterfall a big bang? isn't agile iterative? isn't agile a spiralling iterative way of working? they are similar but each and every one of them emphasise on specific thing. The point of this post is not to go into much detail about each and everyone of them and list out a set of perks, you can read those here.
The purpose of this post is to discuss our favourite, the spiral.
It's also the one we use the most. It's the most flexible and the most effective of them for a couple of reasons. One of them is that the emphasise is on the analysis after each iteration and is not really planned ahead. You can image projects are discussed at a more higher level but development is taken step by step. You want to get to market as fast as possible and get the sweet sweet customer feedback and repeat. Minimum viable product. A piece of software that achieves the most basic form of functionality for your customers. It doesn't have to be perfect or beautiful, it just has to work and service customers.
At BizIO we start off our projects with a design and planning session. This is of course after the project guidelines have been discussed and approved by our clients and the project team has been assembled. In the design and planning session we define what the outcome of the first iteration will be and how it will work. After the whole team is on the same page, development starts for the length of the iteration. This means writing the actual code with automated unit tests and end to end tests, then testing of each feature happens as it is developed and assuring that the product is behaving by design. Regression testing then becomes a click of a button(it's actually run on every code change in the automated CI/CD environment).This means building, testing and deploying happens automagically after every code change is approved.
At the end of the iteration we draw conclusions, analyse the just finished iteration and improve for the next one.