Greetings, and before we begin I would like to notice I’m fully aware you are a man of business and your time is priceless so you may consider not to waste it by reading this letter. Thus we will get straight to the point from the beginning. Words I am writing right now can and should be considered as a valuable investment and will be worth every dollar your personal minutes are worth. Colossal ROI increase is assured. Here is why:
I am going to guide you through a process that transforms this:
Interested? I’ve thought so. This metamorphosis is not at all as hard and challenging as it might seem from the first glance. As long as actual professionals are involved and know exactly what they are doing. We at BugHuntress, for example, have our own formula of success we are willing to share:
Continuous (Integration + Inspection + Feedback) = Continuous Success
You have probably heard about Continuous Integration by now and had several important reasons not to implement it into development by now. Where did this get you? From our experience in software development and testing service delivery (and we have been successfully operating in this field for more than a decade now) numerous businesses suffer from this choosing such a path.
Yes, surely not all software products under development require implementation of Continuous Integration (CI) or other practices of this domain. There are even those who might suffer from such a solid, thought-through approach that requires both investments and dedication. Nevertheless most complex, robust and feature-rich software solutions do need additional care.
Main stumbling block
Money, time and required efforts can become a serious obstacle in software development when combined. This is indeed the scariest part about CI. All processes cannot be called simple and require stakeholders to invest all three of these factors mentioned above into development. So CI is expensive, but so are decent levels of quality, maintenance of your brand name and trust from your end users.
What can be done to make the process cheaper? Basically – nothing. Well-tailored, carefully planned and efficient development will reduce operational costs to some extent but then again all those features should already be present throughout entire project lifecycle if services are delivered by professionals. And yet there is one thing you, as a smart business owner, top executive or high-level manager can do: look at CI under a different angle.
Demolish all stumbling blocks
CI will probably not tolerate poor investments otherwise your product will experience dramatic losses in quality but it does increase ROI. In the long run benefits will cover all additional expenses and will basically give you a bigger bang for your buck. Further maintenance and additional functionality development, process of upgrading and patching will cost significantly less. Fixing defects will not be as costly when they are just located if compared to conducting cold fixes. As stated by SEI every single line of code required to fix a bug is worth $2.656. Less lines of code equals more money you can invest more wisely. And the burden of technical debt has never done any favors to no business.
Back to business
(detailed case study example)
Sorry, apparently I got a little bit carried away. I promised you a guide through how your business can get from screenshot 1 to snapshot 2. In terms of effective and beneficial results of course. Our example will be based on a Drupal project. We will be talking about a News Portal platform that contains powerful video and community-based functionality. The portal is powered by:
- And MySQL (cluster)
When it came to our hand careful analysis has detected numerous flaws with origins in poor architecture. This lead to direct bottlenecks that have been preventing the system from effective maintainability and distribution. Code did not meet nay standards and technical debt was worth approximately 1.5 years. Looks quite ugly, right?
That was when we stepped in with Continuous (Integration + Inspection + Feedback). All arranged processes were set up in a manner where business owners were gaining clear pictures of what is going on with their product. Right information is being delivered to right people in right time. Such an approach allows business owners, stakeholders and non-technical managers to remain in control over flow of operations and removes numerous uncertainties. This brings us to…
Collaboration and communication are curtail throughout software development. Businesses need to be aware about how the process moves along, what was changed, which functionality can be considered 100% ready for use, etc. Businesses also gain feedback and require changes through the process or additions into existing functionality thus technical teams must remain fully updated as well. Tossing the ball of vital data from point A to point B and back can go smooth if all is arranged well, bridges are tailored with respect to references and requirements.
Few businesses are keen on setting up appropriate mechanisms of collaboration and communication, especially in the outsourcing domain. This is odd as we live in 2015 and technical capabilities of both networks, hardware and software are practically limitless. And arranging mechanisms of Continuous Feedback is even simpler in terms of business as both parties are interested in decent levels of results. One key feature here is to remember comfort. Simply phone calls or emails are not really comfortable nor are they effective in terms of business unless are not combined with other solutions due differences in schedules, timelines and levels of occupation in collaborating companies.
This is exactly why communication and feedback exchange mechanisms are negotiated as a primary activity. They should be tailored to be comfortable and efficient thus we usual provide a combination of solutions as:
- Through browser plug-ins
- Sound notifications
Surely sets of tools used for report and collaboration are personalized and should be properly chosen for any particular product under development but the mentioned set is a) most common and b) the one we used throughout the Drupal case mentioned above so we will stick to it for now.
Knowing vital aspects about your projects on all stages of development and determining readiness of even the slightest change is only half way to victory from business perspective. The entire process needs to be accurately visualized this stakeholders can witness actual quality of the code (and product). This is when Continuous inspection comes in handy as appropriate sets of tools are used to determine, validate and share:
Code report and analysis
Valid, meaningful trends
Harvested information about all defects that took place in latest changes
Individual focus on core business elements
Absolute control over all possible issues
All these metrics and charts are vital elements that deliver vast control and management possibilities to businesses thus making a strict division of responsibilities: stakeholders are 100% in charge of all decision making while the technical side knows what needs to be delivered and how solutions should operate according to business requirements. Clear tasks are set and accurate, precise goals are achieved.
Thus combination of Continuous Inspection and Continuous Feedback adds even more value to one of world’s best known development best practices – CI and raises it to an entirely new level with deeper respect to business needs and emphasis on their realization.
Business focus is not all it takes to resolve all possible flaws software might possess and are but steps required to guide companies from dark pits of technical debt. Developers and their work are also vital components of overall, Continuous Success. Our global CI ideology primarily focuses on the following flow:
- Often (at least 1 time per day) code is being “filled” into the repository;
- Automated tests are being written;
- Private builds are run (the assembly process, which is
performed with the use of the source code that is currently located in a local
- Broken code is not “filled in”;
- Broken builds are fixed forthwith;
- All checks and tests are ensured as made and none pumped out
of the broken code repository.
And if we were to talk in terms of our current case study we have done the following:
- Architecture was refactored.
- Code was refactored.
- Platform was hosted.
- Advanced external caching was implemented.
These activities have led to:
- Technical debt was reduced from 12.6% to 0.1%.
- Critical and major defects were eliminated.
- 10 000 000 records database.
- 10 000 messages per second.
- The portal has been featured on the main page of Yahoo numerous times.
- 10+k visitors per hour.
Impressive results, are they not? And simply consider the ROI and amount of investments that will never again be required in the long run? Now you can clearly visualize quality has a price for a reason.
As we have witnessed above connections between any project’s success as a whole piece is severely related to code quality. One who constantly measures all indicators has constant feel and full control of the product. Such aspects as ‘complexity’, ‘technical debt’, and ‘risk of re-working’ and all supporting data must be harvested and analyzed constantly if your business cares about possible risks and you wish to remain proactive. After all, elimination of defects is easier on early stages.
Never forget about hot fix costs, if they take too much time (more than expected) turn to code complexity. Efforts in “quality and security” tend to focus on the end of the life cycle, before testing or production. Tests are done to verify the good behavior of the application. But when there are unwanted results from those tests or the problems come to production, they must be repaired correcting the code. In this case, as mentioned above, cost of this re-work, according to SEI, can rise to $2,656 per line of code and higher, without the barren hours of testing. Why invest those dollars into something that could have been prevented?