Optimizing Your Software Development Cycle
The technological world is always changing. In fact, technology is moving at such a rapid pace that a recent trend has been constant pressure on digital businesses to deliver more software updates more frequently. It’s now common for apps, software and even operating systems, like Windows and iOS, to have small weekly updates, rather than previous process of implementing major new changes every year or so.
For digital businesses, technology is actually a product – not just a means to make their main task easier, quicker or cheaper, as it is for many other types of business. They use technology to deliver their products and services, for example many use websites to provide service portals or information, as well as apps, social media marketing, analysis services, and many other tasks.
For these businesses, optimizing workflows in the most efficient manner is vital and a critical business success factor. Developing software does not come cheap, and particularly if you are a start-up or even an established business diversifying into software development, there can be quite a delay before there are sufficient cash flows to pay all the bills. Having an efficient software development cycle, best utilizing your developers, can make a huge amount of difference to your financial survival.
The Flux7 team recently produced a white paper, titled Startup Guide: Minimizing IT Investments and Maximizing Business Outcomes, that looks closely at this issue. Here are some of our findings.
Well organized developers’ workflows are essential for any organization. They help minimize the following problems:
- Developers come at a cost – An hourly cost for your developer can equate to a monthly cost of your cloud server setup.
- Hiring the right talent is itself a costly and time-consuming process – If you can get your existing developers to reach their potential, this is going to save you from the need to hire more.
- Unproductive developers slow down the time it takes to get your application to market – It is particularly galling if this lack of productivity is because of an inefficient workflow process, rather than any issues with the developers themselves.
- Developers’ human context changes – If developers are called upon to rework code they did in the past, it is no longer fresh in their memory and it takes time for them to re-focus on that project again.
Developer Workflow Models:
Different organizations follow different developer workflow models, but a common workflow is to flow through the stages of Developer to Local Test to QA to Production. From an efficiency point-of-view, however, the key difference is where there are feedback loops in the workflow.
For instance, in a worst case scenario, when a developer first learns of a problem in the application, it comes when the product is already in production. This is a disaster because the developer, who probably signed off on this code long ago and is currently working on a new project, has to jump back into this project to try and fix a problem that’s now public. For major problems, there may be a highly urgent (read expensive) fix needed to be found in as short a time as possible. All of the developer’s current workload is likely to have to go on hold, while this emergency is dealt with. The company’s good name has quite possibly been dealt a blow with its customers as well.
If you come back a stage in the workflow cycle, to the point where a member of the QA team finds a fault, the results are generally less catastrophic, if for no other reason than the fact that the customers never get to see these problems. There are still inefficiencies here, however, because by the time that the QA team member has found a bug and notified the development team, the developer has probably moved on to new tasks, so still has to go through the stage of refreshing their memory.
The ideal situation, from an efficiency point of view, is that there is a strong Developer to Local Test, and return loop. In this situation, the developer writes code and it is tested very shortly thereafter. The correction can often be made within seconds, as the developer has the project fresh in his or her mind, and probably is still working on it.
PQR – A good developer environment:
This white paper posits that the key to a good developer environment is that it is production-like (P), quick (Q) and repeatable (R).
Some key things that make a PQR environment are:
All tiers have the same operating system and software version
Tiers are isolated from the developer’s machine
Each tier is isolated from each other
There is a quick feedback loop established
Developer environments can be recreated quickly should there be a problem
Local testing is the key to speedy, cost-effective, efficient software development. Any error that is missed the first time around by local testing, and thus ends up further down the workflow model, will always need to once again return to local testing after redevelopment, before the corrected code is released. Hence, anything that can minimize the time spent on each local test will help the overall bottom line. A few steps that can help here are:
Setting up a stable developer environment
Developing scripts for common tasks
Removing futile build steps
Creating necessary training and documentation
No matter how good your local testing program is, there will always be problems that sneak through to the QA stages. It is important that you do not skimp too much on this stage, because the difference between a problem found at the QA stage, and a potentially debilitating problem found by your end users once in production is huge. One suggestion is to set up distributed QA solutions, or even better an auto-scaled QA system. The use of modern technology helps here, particularly if it can minimize the time spent on testing by your (expensive) ops guys.
This white paper looks at a number of practical problems faced in setting up an efficient developer workflow, using three case studies looking at a full production database, cloud (AWS dependencies), and service addressing.
Finally it analyses the benefits of having good developer workflows, from the point of view of:
The business as a whole
If you are a firm involved in development, the costs of not having an efficient software development cycle are too high to ignore. Download Startup Guide: Minimizing IT Investments and Maximizing Business Outcomes today to learn more about how your firm can organize its workflows better.