Strategic and Tactical Programming
What is and why to choose strategic and tactical programming approaches
In this post, we will touch on 2 different programming approaches :
Strategic
Tactical
🌊Let’s dive in
Tactical Programming
The Tactical programming approach is the mindset that says we need a feature or some task to be working on production as soon as possible.
Tactical programming = working code is just fine
The tactical approach aims for speed and fast development times, based on various circumstances such as catching deadlines, startups with rapidly growing features, and many more.
Tactical programming is a culture at the organization or team level,
not at the developer level
But this speed and high pace come with some bad side effects also.
In tactical programming, we work on a task without noticing :
The overall code base design
How to implement the code with a better design
Writing unit tests
Adding code style for consistency
This approach leads to evolving a code base with :
High complexity
Low Development Experience
Bad Abstractions
Unnecessary Duplicated code
Bad code base design
High software entropy
High technical debt
High possibilities for regressions (bugs)
Eventually, the speed and the high pace will be gone and the developers will work harder and harder with the productivity the be lower and lower.
High levels of tactical programming lead to high levels of frustration for software developers
A Tactical programming approach should be embraced only on demand with special occasions such as:
Fix a high-risk bug
Roll out a feature to close a contract or a deal
Roll out small features that aim at quick wins for the company
Strategic Programming
The Strategic programming approach is when working code is not enough and we focus to produce a better overall code base design.
On Strategic programming, we pay some amount of time :
Finding the best design to go with
Create a more smooth integration for future features
Fix older bad design decisions
Create new more mature abstractions
Take time to write proper unit tests
Evaluate the code base technical dept and make decisions on reducing it
The extra time spent on the design is about 10% - 20% of the total task time.
But this extra time will pay back in the future definitely in about 6-18 months.
A strategic programming approach is not a developers choice but a culture that an organization or a team embraces to follow
Benefits to consider :
✅ High Code Quality
✅ Lower Complexity
✅ High DX
✅ Low software entropy
✅ Higher productivity
✅ Cleaner Design
✅ More Sustainable code base
✅ Low tech dept
Conclusion
Companies with long-lasting products that have embraced a strategic programming approach are thriving and are able to continue to roll out features with lower release times and costs.
Tactical programming must be used to boost short time periods and then step back on strategic programming.
References :
Great article Petran. The chart explains it all!