3 Tips for Avoiding “Reactive” Engineering

Over the years, I’ve noticed that engineering teams fall into two camps: reactive and proactive. As one might guess, the most successful teams are proactive. They identify potential problems before they occur and put into play a series of contingency plans that allow them to navigate the issues nearly seamlessly. On the other hand, reactive teams can be successful, but they are constantly putting out the latest fire and are too busy to look ahead at what is coming up just around the bend. As a result, they spend their development cycle in a stress-filled, reactive environment where they are always behind. Today’s post will explore several tips for ditching reactive tendencies and thinking while adopting a more proactive approach to engineering.

Tip #1 – Learn to prioritize activities

Unfortunately, human beings are bad at prioritization. Human beings are generally short-sighted and focused on the short-term, not the long-term. Short-term thinking tends to make us focus on what we believe to be fires. The client who interrupts our day wanting something right now or the manager who suddenly feels like focus needs to be placed on a different feature. We face the problem that not all tasks are created equal, and we often focus on and prioritize the wrong ones!

Dwight Eisenhower, the 34th President of the United States, had a simple decision-making process to prioritize activities known as the Eisenhower matrix (popularized by Stephen Covey). The idea is that all tasks and activities can be classified as either Urgent or not Urgent and Important or not Important. These four classifications then create the four quadrants of a matrix which help to guide what should be done with each task, as shown below:

The Eisenhower Matrix can help engineers and managers decide what activities should be prioritized. For example, if a customer calls in with a significant bug and their entire company has ceased functioning until it is fixed, that would be Urgent and Important and should be handled immediately. On the other hand, if the customer calls with a request to change how a report looks, that might be important but not urgent. The change could be placed onto the sprint backlog and then scheduled at a reasonable time in the future.

Another example is that a customer could call with a needed configuration change. To the customer, it’s urgent but not necessarily essential. In that case, the configuration update might be delegated to an intern or junior engineer. Finally, an engineer may realize that with some code refactoring, the system’s performance could be improved by 2%. That improvement might not be significant if there is plenty of processing power, and it most likely isn’t urgent. In that case, the team may decide not to spend the time on that improvement.

Reactive teams often fall further behind because they struggle to prioritize the right things. I once worked with a client who changed the priority daily. One day features A was urgent—the next day, Feature B, and so on. A week later, feature A was urgent again. Once I noticed this behavior, the key to helping them was to place proper prioritization and planning processes. The daily fires ceased, and everyone became much more productive.

Tip #2 – There is no time better than right now

I’ve noticed an exciting behavior about reactive teams: they often know what they should and shouldn’t be doing, but they put it off. The heat seems to be one of them, and they are buckling down and pushing hard to get through this. They believe that things will be better once this fire is out, but their reactive nature keeps the reactive cycle going strong. Reactive teams will often say something like:

“We know we should do X, but we need to deliver A, and then we’ll go back and do it right.”

“We should be doing X, but we just don’t have time right now.”

“After this delivery, we’ll spend time putting A and B in place.”

Unfortunately, it’s all wishful thinking. The only way to break the cycle is to recognize that right now is the best time. If a better DevOps process will help improve quality or delivery times, start on it now, not after that following delivery. What comes after that next delivery? Another delivery! In his book “Atomic Habits,” James Clear says that if you improve by 1% per day, then over a year, you’ll have improved by 37x! You may not need to improve that much, but starting now and making minor incremental, daily improvements will result in some dramatic improvements.

Tip #3 – Develop team discipline

As defined by the Merriam-Webster dictionary, one definition of discipline is “to train or develop by instruction and exercise self-control.” Proactive teams are disciplined. When a curve ball is thrown at them, they don’t react. Instead, they evaluate the situation, develop a plan, and then follow through with the plan. Even better, they already considered the potential curve ball and had a contingency plan, which they executed.

In the technology industry, we are all in a hurry. We’re trying to be the first to market. We’re trying to get a leg up on the competition. Maybe we’re trying to get to market before we run out of venture capital funding. Perhaps we’re just in a hurry to get rich. In an industry that, by nature, is in a hurry to innovate and bring to market, it’s more important than ever for teams to be disciplined. To carefully weigh the activities they work on and how they perform them.

As strange as it can sound, the teams I’ve worked with that are most successful are disciplined, thoughtful, and proactive about how they do things. From the inside, it can feel like things are moving slowly. It can be challenging to understand how they can move so fast and create such wonderful products from the outside.

Conclusions

Successful engineering teams are proactive and disciplined; they don’t react to perceived urgent activities. There is a difference between critical and meaningful activities and urgent non-important activities. Whenever a fire pops up, don’t immediately react. Instead, carefully consider and weigh the longer-term effects of responding directly. You may be surprised how many urgent things turn out to be not that important. Just waiting 24-hours can provide a completely fresh perspective.

The ultimate question is whether you want to constantly react or be proactive. If you’re going to be proactive, plan ahead. Watch for what can go wrong and what changes could occur and plan for them. Then when they do occur, you won’t react but pivot to one of the plans. In principle, it sounds simple, but you’ll find it takes discipline, patience, and practice to get there. The benefits, though, can be dramatic.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.