The Four Driving Forces of Software Development
Last updated: May 06, 2024 Read in fullscreen view
- 01 Oct 2020 Fail fast, learn faster with Agile methodology
- 14 Oct 2021 Advantages and Disadvantages of Time and Material Contract (T&M)
- 19 Oct 2021 Software development life cycles
- 08 Oct 2022 KPI - The New Leadership
- 06 Mar 2021 4 things you need to do before getting an accurate quote for your software development
What are the development behaviors within your software enterprise… and what are the forces behind them that drive enterprise performance?
Software development in a software enterprise is governed by four primary forces: lift, load, thrust, and drag. Lift represents a product's market position, while load is the downward force due to the size of the software in production and development. Thrust is the forward acting force, driven by customer focus, first-time quality, agile development, and continuous integration. Drag is the backward acting force, driven by process friction and product inefficiency. When these forces are balanced, software velocity and productivity remain constant, while performance is reduced if load and drag are bigger.
Effective means "producing a result that is wanted". Efficient means "capable of producing desired results without wasting materials, time, or energy". The difference is that when something is effective it produces a result even if it takes some unnecessary resources to do so.
1. Forward
If your software enterprise behaves like an airplane, then four primary forces govern its performance in flight... lift, load, thrust, and drag. Interestingly, and with a little bit of imagination, we can draw analogs from each of these... to the software development enterprise.
2. Four Forces of Software Development
Let’s take a look at the definition of each force… I’m sure most folks have seen the four forces of flight. Here they are again, restated from a software enterprise perspective.
- Lift is the upward acting force (a product market velocity). Lift is a force that represents a product’s position within its market. Revenue from customer sales generates most of the lift for the enterprise.
- Load (gravity) is the downward acting force. This weight is due to the size of the software in production and software in development… and measured by the (overhead) costs of developing, operating, maintaining and sustaining software products.
- Thrust is the forward acting force (process velocity). Thrust is a force that moves an enterprise in the direction of the vision. It is driven by customer focus, first-time quality, agile development, and continuous integration… to name a few factors.
- Drag is the backward acting or retarding force. Process friction and product inefficiency are the software representations of this force. (Increasing technical and process debt drive extra work and exert drag on forward development.)
These four forces act in concert on software developments to make the enterprise perform in different ways. Each force has an opposite force that works against it. Lift and load represent effectiveness in the software enterprise… where lift works opposite of load… and form a vector to determine enterprise velocity. Thrust and drag represent efficiency in the development process… where thrust works opposite of drag… and form a vector to determine enterprise productivity.
When the forces are balanced, then software velocity and productivity are constant at some level of performance. Software productivity goes up if the forces of lift and thrust are more than the forces of load and drag. If load and drag are bigger than lift and thrust, then enterprise performance is reduced.
3. Four Cross-Force Scenarios
If we look at the relationships between the forces, four interesting scenarios emerge. Do any of these characterize your enterprise?
- High-load/high-drag. A worse-case scenario. Technical process and product debt driving low velocity for software production. low margins. Lots of technical debt may be slowing down progress and driving increased costs…. Without increased productivity.
- HIgh-lift/high-drag. A suboptimal scenario. Increasing productivity by taking on additional technical debt. Probably a short-term gain… expect to reach a tipping point and stall into a high-load/high-drag scenario. (forus on technical debt recovery)
- High-thrust/high-load. Another suboptimal scenario. Low customer adoption is cutting profitability… despite efficient development processes. You’re efficient at producing software, but is it the right stuff? (focus on customer needs)
- High-thrust/high-lift. The ideal scenario for business growth. High efficiency processes and high yield of products that customers value.
4. Focus on Drag... Technical Debt
Software maintenance in the software product lifecycle is the modification of a software product after delivery to correct faults, to improve performance or other attributes. Each enterprise has a set of policies to address software maintenance. Some have a cyclic program to work issues and plan opportunities as they emerge… others may elect to defer maintenance for short-term or even long periods.
Software maintenance can be bucketed into one of four classes:
- Corrective maintenance -- reactive update of a software product to correct an issue discovered in production.
- Adaptive maintenance -- update of a software product to keep a software product current within an evolving environment.
- Perfective maintenance -- update of a software product to improve performance or reduce operating costs.
- Preventive maintenance -- update of a software product to correct latent defects or intentional non-conformance.
Deferring any of the above will generate technical debt in the enterprise production baseline. Each enterprise needs to determine their risk tolerance for technical debt…and expect that it will vary across each product in the portfolio and each layer in the architecture stack.
5. Balancing the Forces
So, what’s the right balance of lift, load, thrust, and drag for your enterprise? If you’re the typical growing software business... in an aggressive growing market,... you’ll want to follow the high-lift/high-thrust scenario… from above and look like this.
- High-lift -- focus on customer needs
- Low-load -- focus on lean execution
- High-thrust -- focus on development velocity
- Low-drag -- focus on reducing technical debt
Of course, there’s a lot more to this analogy… but this should set the stage for some forward discussions… and certainly emphasize the connection between the forces that drive enterprise behavior... and the key metrics for enterprise performance.
6. Conclusion
There are four cross-force scenarios that can characterize a software enterprise: high-load/high-drag, high-thrust/high-load, and high-thrust/high-lift. High-load/high-drag is a worse-case scenario, while high-thrust/high-lift is the ideal scenario for business growth.
Ray Carnes
Transformational Leader, Large-scale Systems Architect and Software Developer, Executive Coach, Author, and Musician