How to Meet Both Short-Term and Long-Term Needs
Software development is usually done by finding solutions to a list of seemingly contradicting requirements. One such requirement manifests itself in the “short-term vs long-term” conversation.
This issue can be stated as follows:
There is a highly desirable requirement, but the proper solution takes a long time to achieve, so we are looking for some short-term solutions that can achieve a part of the requirement quickly.
Addressing the short-term requirement is in most cases the right thing to do, especially for businesses that fight to survive another day (for example, startups). However, what usually happens is that additional care is not taken to achieve the long-term solution, usually due to one or more of the following:
- There is no easy path to migrate from the short-term solution to the envisioned long-term solution, due to the choices of the two solutions.
- The short-term solution is adopted, it now requires operational support that took time away from putting in a replacement.
- The business has moved onto other priorities (usually short-term as well) due to there is a short-term, good enough solution.
To truly address this problem, we’ll need to find solutions at multiple levels.
1) Recognize Short-Term to Long-Term Is Not a Single Step
The first thing to do is to recognize that short-term and long-term is not a binary choice. Just like we won’t be able to finish marathon in two steps, it’s an incremental effort to go from short-term to long-term, and that means there can be many iterations in between.
Once we recognize this, we can break up the work to get to long-term solutions, and look for incremental solutions that can be used to enhance short-term solutions so it’s no longer just a hack. With enough steps taken, the hack can be transformed to the long-term solution.
2) Design The Short-Term Solutions With Incremental Transformations in Mind
Of course, doing such incremental changes might actually be quite difficult. It’s possible that there is no easy path between the short-term and the long-term solutions, and sometimes it takes rethinking about the problem and solutions altogether.
That’s why it’s important that when we first put in the short-term solution, we need to take some time to think through whether there is a path to long-term or not. It’s okay to not have a path, but it should be a conscious choice, not one forced upon us because we didn’t think about it.
3) Secure Priority Toward Incrementally Improving the Solutions
Often Engineering would say that something is needed for long term, and lament that business don’t give the priorities toward solving this problem once a for all, and place the blame on business not taking architecture seriously and accumulate technical debt.
However, in such cases, what often happens is that Engineering might not have put in the effort to explain the reason the short-term solution must be improved toward the long-term solution, and instead give up and say “business don’t understand software.”
When this happens, I think the onus is on Engineering to uphold their responsibility of technical ownership. Business depends on Engineering’s knowledge and architectural stewardship to inform Business on critical architectural priorities that will serve the business long-term. Just because Business don’t immediately understand all the technical jargon, it doesn’t mean Engineering can stop trying. Engineering must keep pushing to find ways to communicate with Business on architectural concerns that they can understand, in order to have a seat at the table to help determine priorities, or Business will be forced to do so on their own.
4) Reformulate Business Culture to Also Look At Long Term
Of course, it’s possible that Business really are only focusing on the short-term, but this isn’t usually because they are short-sighted. Sometimes it’s required for business survival, and other times it’s due to the incentive structures aligning incorrectly.
This might or might not be something that can be addressed at the development team’s level. However, to ensure proper functioning of the business, instances where Business is only looking at the short-term in expense of the long-term must be examined to determine the reasons.
Often times it’s a communication issue. I’ve found that when people aren’t being heard, they usually dig deeper into their positions. This often happens in the dynamic between Business and Engineering. Business wants short-term to be addressed, and Engineering wants long-term to be addressed, and both are digging into their positions because the other side didn’t hear it.
The way to overcome that is of course to actually first listen to what the other side is saying. When the other side is listened to, their need to dig into their own positions becomes lower, and that’s when we have a chance to talk about what we need to help them.
Although I don’t have a scientific tally, I believe 80+%, if not higher, of work conflicts all arise from communications, and hence can also be overcome by improving communications. While there might be some Business people are fully focusing on the short-term, most are able to also look at the bigger picture when given a chance, so it’s important to not let communications become the reason that stops the conversations.
What if it’s an incentive-based reason, that they are motivated to solve short-term problems due to incentives? In that case, it’s a conversation with upper management to help them see why the incentive issue is causing problems, so that they can help solve the problems. Yes this won’t be easy, but it must be approached. But hopefully by opening up the communications it will alleviate the issue even if it’s not fully eliminated.
We don’t want Business to not focus on the short-term, we just want them to not focus on the short-term in full expense of the long-term. And we want Engineering to see the long-term but also able to see the short-term, and find a solution path to move from short-term to long-term. When both sides are able to see the other side, that’s when we will build trust, have great working relationships and solutions.