As an engineering leader, you're no stranger to business pressures, especially the kinds that force you to incur technical debt on your projects. You have built a nuanced understanding of technical debt as a valid and normal part of engineering philosophy. As business pressures fluctuate, you understand how to manage that debt and reduce it over time.
Culture debt
Interestingly, there is a sister of technical debt that rarely gets talked about, but affects your work very deeply. Culture debt is what happens when teams compromise on long-term culture in favor of short-term goals.
This takes many different forms: teams might decide to hire a lot of people very quickly to address immediate scaling problems. Or they might decide to overlook promoting-from-within in favor of hiring consultants to quickly solve a problem.
Like technical debt, culture debt is a valid and normal part of management philosophy and can be used effectively to achieve the team's goals.
PUSH
Culture debt very commonly turns into Pretty Urgent Senior Hiring (a.k.a. PUSH). PUSH happens when a team sees the need to urgently build features, then decides that hiring a senior developer with prior knowledge of the domain is the best way to solve this problem.
Other ways to solve the problem might exist. For example, the team might have promoted or transferred an existing developer onto the urgent project, then trusted them to hire and train their own replacement on the old project.
New hires are always risky to culture; senior hires even more so. PUSH has many side-effects that, like any other type of debt, snowball over time when not addressed.
- Skipping people for promotion or transfer will cause frustration or resentment.
- Hiring for a single senior developer will take months, resulting in lost output.
- Senior engineers will leave because there is no more room to grow within the team.
- Junior and mid-level engineers will leave because promotion from within seldom occurs.
- Morale will suffer as teammates leave (and take other teammates with them.)
- Software quality will suffer as knowledge churns out of the company at a faster rate.
- The lower velocity of delivery creates urgency, which means taking out technical debt.
RUSH
When the debt caused by PUSH is left unaddressed, the problem takes on another tone altogether. Churn becomes so high, the rate of technical debt accumulation is so large, and velocity so low, that the team simply cannot hire enough developers to maintain velocity.
However, something must be done about the issue–so a culture of urgently hiring more seniors sets in. The team doubles-down on the PUSH strategy and begins hiring even more senior developers.
At this point, PUSH has turned into Rotating Urgent Senior Hiring (RUSH). The symptoms become more and more intensified.
- Hiring seniors is seen as the only way to address velocity concerns.
- Technical debt continues to build as knowledge drops and urgency rises.
- Promoting and transferring internally slows down or completely stops.
- The culture slows down and stagnates because of constant urgency.
- It becomes impossible to hire enough senior developers to fill demand.
- Over time, the company will start relying on 3rd-party recruiters to fill the gaps.
- Over-reliance on recruiters eventually diminishes the ability and will to hire internally.
The way out of PUSH and RUSH
As an engineering leader, you are one of the few individuals who can have a large positive impact on the situation and turn it around. Using a combination of management wisdom and technical knowledge, you can re-stabilize your team and recreate a healthy environment in which a sustainable technical culture can be re-established.
PUSH and RUSH arise because of an urgency culture that has taken a hold inside the business. The need to hit urgent business needs makes us sacrifice long-term success for immediate returns. The right approach to fixing PUSH/RUSH will tackle urgency culture at its core while acknowledging that the issue will take some time to fix.
Some approaches that could work are:
- Increase transparency between business and technical departments.
- Renegotiate deadlines for large milestones.
- Allow engineers to transfer between projects.
- Create a level-based promotion pathway with appropriate incentives.
- Promote engineers and replace them with intermediate and junior developers.
- Acknowledge the senior talent shortage. Normalize hiring less experienced developers.