The art of software engineering management
Posted Dec 6, 2023 | 10 min. (2121 words)Like any leadership role, leading an engineering team in a mature, compact company like Raygun comes with both honor and responsibility. Leading a major development project is a bit like conducting a symphony orchestra, where every individual plays a crucial role and has a great impact on the work they release to customers and end-users.
However, there are plenty of real-world examples of what not to do, too. In 2010, the tech world buzzed with controversy as Apple’s newly released iPhone 4 faced widespread reception issues, later dubbed ‘Antennagate’. Customers found that holding the device in a certain way degraded the signal strength, leading to dropped calls. Engineers had identified potential antenna issues during the design phase, but the design was pushed forward. Apple’s eventual response was to offer free cases to mitigate the problem and a commitment to address the design flaw. This engineering failure underscores that success in the tech industry isn’t solely about cutting-edge innovation; it’s about meticulous coordination and direction. Mature companies, having navigated the challenges of rapid technological evolution for years, (should) grasp this.
If you’re a Team Leader or in the realm of Software Engineering Management, consider this post your comprehensive guide to engineering management principles. Here’s an overview of the subjects we’ll delve into:
- 1. Understanding the Legacy: Company Culture
- 2. Transparent Communication: The Basis of Trust
- 3. Continuous Learning: A Beacon for the Future
- 4. Processes and Procedures: Safeguarding Efficiency
- 5. Technical Debt: The Silent Adversary
- 6. Team Dynamics: The Human Element
- 7. Metrics: The North Star
- 8. Mentorship: Bridging Generations
In a fast-evolving domain like ours, leading with finesse requires a balance of honoring the past, championing innovation, and showcasing resilience. Come along with us as we unravel the complexities of Software Engineering Management!
Understanding the Legacy: Company Culture
Every company has its history. I’ve found Raygun, like other mature companies, is a treasure trove of tales, lessons, successes, and even failures. It’s this legacy that forms a company’s cultural bedrock.
For a leader, understanding this background is more than beneficial; it’s imperative. The nuances of past decisions, the emotions attached to significant milestones, and the values that have guided past leaders to speed and success can offer invaluable insights into current team dynamics, motivations, and aspirations.
At Raygun, we often look back on our past development speed with a sense of nostalgia. In earlier days, our product releases were more rapid. This might have been due to having fewer product-specific requirements and a stronger emphasis on software requirements (this concept is reminiscent of Elon Musk’s step process, which I’ll get into later). So, what’s causing the current slowdown, and how can we regain our earlier momentum?
Products like iPod, Amazon Prime, Git, and even the BankAmericard all had one thing in common. They all took a Minimum Viable Product (MVP) approach during the preparation of their initial release which has now evolved through the years, as they ship and release more features. You can find more information on their background (as well as lots of other high velocity projects) collected here.
It’s not just about acknowledging past achievements; it’s about understanding the journey and continuing the positive environment which, from the beginning, drove the success of the company.
Transparent Communication: The Basis of Trust
Established teams, especially those that have worked together for years, often share a bond that’s both an asset and a potential minefield. Trust runs deep, but so do past grievances. Amazon provides an excellent example of how earning trust can powerfully reinforce people’s belief in what they say:
Leaders listen attentively, speak candidly, and treat others respectfully. They are vocally self-critical, even when doing so is awkward or embarrassing. Leaders do not believe their or their team’s body odor smells of perfume. They benchmark themselves and their teams against the best.
Ensuring transparent communication is about keeping the team united and focused, and not letting the wider team down when they are heavily relying on feature releases.
Regular town halls, open forums, and one-on-one sessions are a great opportunity to instill trust. They aren’t just events on a calendar. Instead, they are opportunities to rebuild trust, realign goals, and revive team spirit.
Continuous Learning: A Beacon for the Future
A mature business doesn’t mean outdated skills. In a rapidly evolving technological landscape, the drive for learning should be insatiable. Encouraging continuous learning serves a dual purpose: it ensures the team’s skills remain current, and it signals to the team that the company is invested in their growth. Workshops, certifications, guest lectures from industry experts, and even sabbaticals for higher education can be potent tools in a leader’s arsenal to keep the team agile and motivated.
Having a T-shaped team is crucial in a small, mature company. We want a balance of technically well-rounded and socially strong individuals who can vocally represent the team during cross-collaboration meetings and communication forums. These socially inclined individuals should still have a good technical understanding of the project to effectively communicate the correct message.
Image source: x.com: @pvukovic
Processes and Procedures: Safeguarding Efficiency
Processes are the machinery behind a company’s operations. When well-oiled, they ensure efficiency and predictability. However, over-reliance on rusty processes can turn them into shackles, hampering innovation and adaptability.
A smart leader knows when to adhere to processes and when to break away for the sake of innovation. It’s a constant dance of reviewing, refining, and sometimes reinventing the way things are done.
In the digital age, embracing new tools and platforms can make processes not only faster but also more intuitive.
In one of my projects at Raygun, our small, cohesive team of five shared a collaborative workspace. Once, while wrestling with a coding challenge, I casually discussed it with my desk neighbor. Together, we quickly found a solution. Simple, right? This immediate collaboration, along with many similar examples, demonstrated that our team’s strength lay in natural proximity and communication. We realized that in such a close-knit environment, we didn’t always need heavy agile processes and lots of meetings —our ongoing, shoulder-to-shoulder conversations sufficed.
The opposite is also true; a lack of effective communication within a team often signals the need for a more defined process or a better process.
Technical Debt: The Silent Adversary
Every team accumulates technical debt. These are shortcuts, temporary solutions, and patches applied in the past which may not stand the test of time. It could even be poor logic implementation that was opinionated and not communicated to the rest of the team!
Neglecting this debt can lead to significant challenges in the future, such as slowing down development time, seeing an extension of system build times or a lack of understanding from the team members on the code at hand.
Regularly addressing, resolving, or even documenting these issues can save hours of future troubleshooting and potential performance bottlenecks.
I’m a big fan of documentation personally. Especially within the codebase where the documentation and code are in the same place at the same time!
I mentioned before Elon Musk’s Five-Step Process. This is to do with Problem Solving or Continuous Improvement, which is a method he’s discussed in a particular interview that can help reduce technical debt and speed up time to release. Here’s a summary of the steps:
- Make Your Requirements Less Dumb: This step is about questioning your requirements and understanding if they make sense. Instead of taking requirements at face value, challenge them to see if they are truly necessary or if they can be simplified.
- Try Very Hard to Delete the Part or Process: Before optimizing a process or a part of a product, see if you can eliminate it altogether. Often, simplifying or removing components can lead to better overall solutions. (At Raygun, we recently spent time “Gardening” our work which you can read about here).
- Simplify or Optimize the Design: Once you’ve confirmed that a part or process is essential and can’t be removed, work on simplifying its design. This can lead to reduced costs and increased efficiency.
- Accelerate Cycle Time: Focus on speeding up the process. In manufacturing, for instance, reducing the cycle time can greatly increase productivity and reduce costs.
- Automate: Once you’ve gone through the previous steps and have a streamlined and efficient process, look for opportunities to automate it. Automation can lead to even further efficiencies and cost reductions.
Image source: modelthinkers.com
These steps reflect Musk’s approach to engineering and design, where he emphasizes first-principles thinking—breaking down a problem to its fundamental truths and building up from there—as opposed to reasoning by analogy or just doing things because “that’s the way they’ve always been done.”
Team Dynamics: The Human Element
People are at the core of any company. In mature companies, team dynamics can be complex, with deep-rooted relationships, established hierarchies, and sometimes, unspoken grievances. Fostering a positive, collaborative environment involves understanding individual motivations, resolving conflicts, facilitating cross-team collaborations, and ensuring every voice, no matter how soft, is heard.
The DISC assessment is a personal assessment tool used to measure an individual’s behavioral style and personality. It’s commonly utilized in various settings, including business and personal development, to better understand oneself and others. The acronym “DISC” represents the four primary personality traits the tool assesses:
- D – Dominance: This trait is about control, power, and assertiveness. People who score high in Dominance are often very active in dealing with problems and challenges.
- I – Influence: This trait is related to social situations and communication. Those with a high Influence score are generally quite persuasive, outgoing, and are more people-oriented.
- S – Steadiness: Individuals with high Steadiness scores are generally calm, reliable, and methodical. They’re often very good listeners and team players.
- C – Conscientiousness: This trait involves structure and organization. People who have a high Conscientiousness score are typically very detail-oriented, and they prioritize accuracy and quality.
The DISC assessment can be a powerful tool for understanding interpersonal dynamics, improving teamwork, and enhancing communication. Many companies use it for team-building exercises, leadership training, and to aid in hiring decisions. The primary benefit is understanding how people might react in various situations, allowing for better communication and conflict resolution.
At the level of engineering management, I’ve observed that the DISC assessment is instrumental in optimizing the performance of my team members, while also identifying synergistic collaborations that minimize conflict.
If you’d like to try out the DISC assessment on your team, you can find more resources here.
Metrics: The North Star
When you’re drowning in data, the right metrics and key performance indicators can be a life raft. They serve to track progress and predict potential challenges. Balanced scorecards, dashboards, and regular reviews can turn raw data into actionable insights, guiding strategy and ensuring alignment with the company’s overarching objectives.
At Raygun, we heavily rely on data to make informed decisions rather than just assumptions-based decisions that only hope for the best. With informed decisions, we can guarantee a great return on our work output.
We also maintain a strong emphasis on MVP. It’s crucial to implement the MVP to produce meaningful features out the door to avoid delay and falling behind in the industry. We highly recommend communicating to users that something is in Beta to avoid confusion on the minimal feature set.
Mentorship: Bridging Generations
One of the richest resources in a mature company is its experienced senior members. Facilitating mentorship programs not only ensures knowledge transfer but also fosters a sense of belonging and purpose among newer team members.
It’s a way to ensure the company’s culture, institutional knowledge, and values are carried forward, bridging the gap between generations.
This doesn’t have to be a formal program either. As long as there’s a culture that fosters and encourages knowledge sharing and getting the engineering team to work on different areas of the application, little to no knowledge should be lost in turnover within the company. This goes hand in hand with great documentation, and other internally and externally shared documents.
Our peers will also not know what to work towards when the company does not point to exceptional examples of career growth to show what they are after. We have used various techniques here at Raygun to find this out.
Leading technical teams
The challenge and the appeal of leading an engineering team in a mature small company is in the duality. On one hand, there’s a rich legacy, a tried-and-tested way of doing things, and a deep understanding of the market. On the other, there’s the ever-present need to innovate, adapt, and remain relevant.
Striking a balance between these often conflicting requirements is what sets exceptional leaders apart. As technology and business continues to evolve, so must the strategies to lead, ensuring that the organization remains a benchmark of excellence.