Move Faster: Shorten your Feedback Loops!
In software development, the developer writes the code, the compiler builds it, the OS runs it, and finally, you complete the loop by observing the result and deciding what to do next. This output is what is used as input for the next round.
In a simple example, a thermostat records the temperature of a room and thereby feeds information to the air conditioner, which then starts cooling the room. Once it reaches a certain temperature, say 21° Celsius, it will stop cooling and restart once it is back to 22° Celsius. This mechanism utilizes a system of feedback provided by the thermostat repeatedly improving the conditions or in this case, the temperature.
For an enterprise, what makes feedback so important that we must invest in the best practices?
1. Unit Testing
Unit tests help in driving development and providing feedback quickly, even as fast as 3 or 4 minutes. The smallest of feedback loops will speed up the process as developers usually discuss options on a constant and real-time basis. Unit testing is done at the atomic module level, and development becomes faster in the long run. How? With unit testing, you do not need to worry about firing the entire solution with the UI. You should only focus on the core module which gets tested via unit testing. Moreover, the effort that is put in to find and fix defects is reduces significantly with these loops. The developers get an immediate feedback, and hence the need for manual intervention to fix defects lessens, as compared to the effort required in later stages like system testing and acceptance testing. Let’s not forget that this also costs less, and makes debugging easy.
2. Automated Functional Tests
The reason why you should choose automated UI tests is to ensure that the application works end-to-end by simulating user journeys through the system. Functional tests include layers like Smoke testing, Sanity testing, Integration testing, Interface testing, System Testing and Regression testing. By the time the solution reaches this stage, the team has already invested a good chunk of effort in the development process. Hence, the earlier these defects are captured and feedback is provided, the better it is for the developers, as this works in real time and saves impact.
3. Show and Tell with periodic releases
Also known as a sprint review meeting, it allows developers to discuss options with stakeholders for further possible additions that can maximise value. Such discussions can directly impact the planning of the next Sprint and the contents of the next Sprint backlog. After every few sprints, a team may gather valuable feedback on a certain release through real users and observing their behaviour.
4. User Testing
Once a solution has been developed, the developers need to provide the customers with a POC / Prototype to customer and observe their behaviour on the same. This also forms a feedback loop which can provide a lot of insights about usability and solution improvement required within the system.
5. Failing faster
While enterprises aim to become more agile, trying to predict and control challenges can be tricky. This takes up the developers’ time and effort to a large extent, which is why using the ‘fail fast’ approach is recommended. The speed of execution is more important than anything else today, and the faster you learn what solutions don’t work, the better chances you have at improving them. A positive feedback loop that creates amplification leads to more iterations, radical innovations and breakthrough ideas. All of this while saving time, costs and manual effort.
Taking the thermostat example, from a business perspective, we would like to know other factors that contribute to a perfect living environment which may include the direction of the wind, number of people present or the total volume of space to cool. But to bring all this into check will definitely take up many seconds, days and maybe weeks to act on, thereby hampering productivity. In hindsight, to save those precious seconds and days, we carry out the above or what is commonly called a ‘tightening’ or ‘shortening’ of the feedback loop.
A businessman will agree with me when I say we need to itemize our software development practices. But at the same time, a developer will understand exactly what I mean by saying we need shorter feedback loops. There is no buffer between the two in having long or short feedback loops, but it goes without thinking twice to say that the shorter they are, the more beneficial it will be!