Strategic and Tactical Programming
What is and why to choose strategic and tactical programming approaches
This post is originally posted at petran.substack.com
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.
Strategic over Tactical Programming
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 :