2023 has seen a significant amount of turmoil in the tech labor market. According to layoffs.fyi, 238,329 employees from 1,033 tech companies have been laid off so far in 2023.
In such times, it's essential to remember that behind these statistics are real people facing genuine challenges. A few of our engineering manager customers have asked us to share insights on how our tool has helped ease the burden on teams that have gone through reorganizations and layoffs.
This article is by no means advocating for layoffs. Layoffs should be a last resort. But CodeSee was designed to help developers understand our code — whether as a new hire, or filling in for someone who is no longer at the company. In fact, CodeSee was conceived when one of our co-founders struggled to ship a feature in the aftermath of a big layoff. This happens every day.
We want our community to know that they aren't alone and that there are tools and resources available to support them during these transitions. This conversation is an uncomfortable one, but we hope that sharing these tips, tools, and experiences ease at least one person's burden. If it does, it was worth it.
Layoffs are extremely stressful. If you find yourself on the receiving end of the cuts, you are thrust into a situation where you lose income and have to find a new position in an industry that is downsizing.
But what about when you are still on the team? This also comes with considerable stress. If you are an engineering manager, you now have fewer team members but are expected to continue with the same workload. If you are a developer, you now have that added workload, potentially with little understanding of what you are now being tasked with. In both cases, you’ve lost coworkers–friends and have the anxiety of not knowing what is coming next.
Let’s go through some steps that can help both managers and ICs in these circumstances deal with this situation and prepare to move themselves, the product, and the company forward.
Acknowledge the anxiety
We want to start here because it’s easy to jump into a list of pragmatic ways to get on with your work. But life isn’t really like that. If people on your team have been let go and you’re still around, you’re going to feel a ton of emotions.
You might feel relieved that you kept your job but also guilty for feeling this relief, a version of survivor's guilt. Additionally, you might feel sadness, stress, or anxiety due to the loss of colleagues and uncertainty about the future.
It's crucial to acknowledge and manage these feelings.
For managers, it is about communicating with clarity and empathy. Acknowledge the layoffs and transparently communicate the reasons for the layoffs to the remaining team members. Hopefully, you are able to reassure the remaining team that there is not another layoff coming. This will help in addressing any speculation and uncertainty. You also want to acknowledge emotions. Recognize that the layoffs will have affected the morale of the team, offer support and encourage open dialogue about their feelings and concerns. Be empathetic and acknowledge their feelings.
For team members, give yourself the space to process your emotions, recognizing that feeling a mix of relief, guilt, and anxiety is normal in such situations. This is a difficult situation and one totally out of your control. From there, you can:
Seek clarity on role expectations: Ask your manager about any changes in your role or responsibilities and clarify any new expectations.
Maintain open communication: Regularly communicate with your remaining team members and management about any concerns or needs you have.
Offer and seek support: Support your remaining colleagues and seek support from them as everyone adjusts to the new normal.
Managing emotions, maintaining open communication, being adaptable, and focusing on your well-being is crucial during such turbulent times.
Moving forward as an engineering manager
The first role as an engineering manager (after the emotional leadership above) is to assess what is needed to continue moving the product forward, and what team members you still have available. The long-term approach must focus on realigning the team's purpose and driving them towards a shared vision. Here's a roadmap for your next steps as an engineering manager:
- Start with a comprehensive assessment of skills and needs
There are two parts to this. First, you need to take stock of the skills and expertise of your remaining team members. Understand where there might be gaps that can affect ongoing or upcoming projects. We’ll discuss more about how you can help them level up later. Fundamentally, this isn’t about seeing your team as a static entity, but thinking about what skills they have now and how you can help them improve their skills to match what is needed for the project.
Second, you need to evaluate the status of ongoing projects. Understand what's at stake, prioritize projects based on importance and resource availability, and reconsider deadlines if necessary. One of the challenges is understanding the current status of the codebase. This can be done manually but our customers have found using CodeSee's codebase maps can provide invaluable insights, and to grasp where the project currently stands when your time is extremely limited.
Walking through the map with your remaining senior developers will allow you to see the core components of your codebase and recent commits to show where your team has been working. If you have been using codebase tours, then you can also walk through those tours to understand the code. If not, you can prioritize putting together some tours with the senior devs to help the rest of the team understand the codebase as they have to take on more tasks.
- Redefine your team structure and goals
In the wake of layoffs, teams often face disruptions in their workflows. It's essential to evaluate each member's capabilities and reallocate roles. This isn't merely about filling gaps but about recognizing and leveraging individual strengths. Redefining roles can rejuvenate the team dynamics, ensuring that members feel valued and are working in capacities that bring out their best.
This reshuffled team also needs a clear roadmap. Setting precise and achievable goals will offer a sense of purpose and direction. These objectives shouldn't just be about recovering lost ground but should also inspire innovation. If layoffs have happened, you want to show the company is moving in a new direction and that your team can contribute to this renewed focus. Clearly defined milestones can keep the team motivated, ensuring everyone knows their role in achieving collective success.
- Emphasize personal growth and development
Layoffs create skill gaps as well as increase the workload on the remaining team members. A way to keep the remaining team happier is to invest in training and tooling to equip their teams for these new challenges. Continuous learning not only helps in task completion but also boosts morale, indicating the organization's commitment to its employees' growth.
A mentorship program can be a boon in uncertain times. Pairing senior developers with less experienced team members creates a symbiotic relationship. Newer members benefit from direct guidance, while mentors get an opportunity to refine their leadership skills. This collaboration fosters a culture of growth and support within the team.
- Plan for contingencies
A reduced team size invariably brings challenges. From potential overwork to gaps in knowledge, these risks can delay projects or decrease quality. By conducting a thorough risk assessment, teams can identify potential pitfalls early, allowing for proactive solutions instead of reactive firefighting.
The future is unpredictable. With an already reduced team, further unforeseen challenges can be detrimental. Developing contingency plans prepares the team for possible project delays, additional organizational reshuffles, or sudden departures. Having these plans in place ensures continuity and provides confidence in the team's ability to navigate challenges.
Of course, there is a version of this where you are already preparing for the worst-case scenario in advance. Given what is happening in tech, are you prepared for a downsizing on your team? You might not think it’s going to happen–but in good Boy/Girl Scout fashion, you should always Be Prepared. This could take the form of:
Preparing thorough documentation: Compile detailed records and guidelines, ensuring smooth operations and knowledge continuity regardless of team composition.
Assessing the skills on your team: Conduct evaluations to understand each team member's competencies, enabling strategic decisions regarding role assignments or potential training needs.
Cleaning and refactoring code to remove technical debt: Regularly streamline and optimize codebase, reducing complexities that might hinder future work or require specific expertise.
Sharing information through presentations and talks internally: Foster a culture of knowledge transfer by organizing and participating in internal sessions, ensuring shared understanding and learning across the team.
- Realign expectations with your stakeholders
In the aftermath of layoffs, ensuring alignment between you and your stakeholders is crucial. If you're sensing that a reevaluation of the roadmap is essential, it’s vital to address this shift with the right set of people – be it your manager, the product manager, or the sales team. Remember, this step is like a protective shield for our team, helping them avoid burnouts and an overload of tasks.
Here's how to have that conversation:
Be Prepared: Stepping into these discussions armed with viable solutions can make all the difference. Instead of saying, "We've got an issue, you solve it," your conversation now takes the direction of, "Here’s a potential solution, what are your thoughts?"
Establish a Mutual Purpose: Given the heightened emotions post-layoffs, you'll want to start the conversation on a unifying note. Framing it as a collective effort can help, such as, "I'm keen on making this quarter a success for the team, and I've chalked out some strategies. I'd love to hear your thoughts"
Understand Their Perspective: Engage your stakeholders by asking about their priorities, goals, and any other insights they might have. This not only builds trust but also ensures everyone's on the same page.
Share Your Findings: Clarity is crucial. Walk them through your observations, laying out why a potential shift in the roadmap or deadlines might be necessary. For instance, the departure of key experts can hamper the workflow or increased maintenance responsibilities for the remaining team.
Stick to the Facts: Ensure that your communication is grounded in reality. Rather than painting a bleak picture based on assumptions, present them with facts and possible outcomes. Instead of stating, "Meeting this deadline is impossible," phrase it as, "To meet this deadline, there will be challenges like extended work hours, bypassing certain processes, or sidelining urgent requests. There's also a potential risk of releasing a product that might not be up to our usual standards."
Forge a Path Forward: With both sides having a clear understanding of the situation and the needs, now's the time to align and finalize a plan. Share the strategies you’ve mapped out, and gather feedback to refine them further.
If you want to learn a lot more about having difficult conversations — both at work and otherwise — check out the excellent book Crucial Conversations.
Moving forward as a developer
For developers, the roadmap is different. Developers need a mix of technical prowess, adaptability, and effective communication to navigate the complexities brought on by downsizing. Developers have the problem that:
Their workload may have significantly increased: Post-downsizing, there's a good chance developers might find themselves managing more projects or features than before.
This new workload will include code they are unfamiliar with: With fewer hands on deck, developers may be tasked with maintaining or enhancing codebases they didn't originally write or aren't familiar with.
A significantly increased workload requires developers to prioritize by categorizing tasks based on urgency and importance. Immediate bugs or system outages obviously take precedence, but after that, it's about determining which projects will have the most significant impact or are time-sensitive.
It also requires focus. This is one of the hardest challenges in these scenarios–the pull of managers is to increase meetings to share knowledge, align the team, and calm fears. Developers, though, need time-blocking to allocate focused intervals for specific tasks. You do need to regularly communicate with team leads or managers about progress, blockers, or any support needed, as transparent communication can help in reallocating resources or adjusting expectations. But, if you have been given more work, you need more time to do it.
If developers are faced with unfamiliar code, it's crucial to ask questions. Even if the original coder isn't around, colleagues or available documentation should provide insights. It's better to spend time understanding the context than to make assumptions. A core issue here will be understanding functions you didn’t write. Developers can use CodeSee's function maps to map out function calls in the code easily, visually, and in less time. We hope this feature reduces not only the time it takes to build a new mental model of code folks are unfamiliar with but that it also relieves a bit of stress and burden.
These maps give you an infinite canvas to jump from function to type to definition to reference. Developers tasked with working on a function they previously hadn’t encountered, can follow the function backwards and forwards in the code to easily understand its definition and implementation.
Developers can continue to use CodeSee to quickly get up to speed and understand the breadth and depth of the code they're now responsible for. They can use codebase tours put together by the previous team or by the senior developers as everyone adjusts to the new working dynamic. This helps developers leverage the strengths of the remaining team.
Both of these can lead to upskilling, something which developers should try to include time for. Whether it's understanding a new part of the codebase, a new programming language, or a tool, continuous learning will make handling diverse tasks easier in the long run.
Finally, developers should use this opportunity to push for optimizing and streamlining processes. Identify opportunities for process improvement and efficiency and implement automation such as automated workflows for PRs to reduce workload. Team leads should encourage the team to propose improvements and innovations.
Working through challenging times
It is very tough to come to work the morning after your coworkers and friends have been let go. You have personal uncertainty and anxiety coupled with the knowledge that your workload probably just got harder.
However, it's important to remember that these events are often outside of our control. In these challenging moments, the best we can do is make the best out of a tough situation. Managers must step up to provide guidance and assurance, while developers need to learn quickly and work on the codebase as best they can.
But from these challenges, teams can emerge stronger and more aligned. Your team can pull together as one to continue to ship great code. This conversation was uncomfortable for us to share but we hope that these tips, tools, and what we've seen others do ease at least 1 person's burden. If it does, it was worth it.
Every challenge is an opportunity for growth, and we're here to support you every step of the way. Give CodeSee a Try Today.