Cultivating an Effective Engineering Team

Kyodo Tech
12 min readFeb 23, 2023
DALL·E 3 image for this article.

Building a successful engineering team requires more than just hiring talented individuals. It involves creating a culture of ownership, effective communication, and continuous learning. As an engineering leader, you need to prioritize these aspects to ensure that your team is productive, innovative, and motivated. In this article, we will discuss essential themes when building an engineering team:

  1. Focus on building a Culture of Ownership: create a culture of ownership where team members feel empowered to take ownership of their work, share ideas, and make decisions.
  2. Prioritize Communication: Poor communication can lead to misunderstandings and inefficiencies. Invest in training your team in communication skills, such as active listening, giving and receiving feedback, and conflict resolution.
  3. Create a System for Managing Technical Debt: Technical debt can hinder productivity and innovation.
  4. Implement Agile Practices: use Kanban, daily syncs and weekly retrospectives.
  5. Build a learning Organization: Continuous learning is essential for innovation and staying competitive. Consider implementing a system for continuous learning, such as peer-to-peer coaching, training programs, or mentorships.
  6. Streamline the hiring process: establish clear roles, responsibilities, and desired attributes for candidates.
  7. Creating Meaning for Team Members: help members of the team to understand how their work contributes to the organization’s mission and vision.

In the following we go into details and mention literature applicable for each item if you want to dive in deeper into any particular topic.

Building a Culture of Ownership

“Turn the Ship Around!” is a book by David Marquet that explores the concept of leadership and provides guidance on how to create a culture of excellence within organizations. Another excellent book on the subject is “Extreme Ownership: How U.S. Navy SEALs Lead and Win” by Jocko Willink and Leif Babin. The key points we selected are these:

  • Lead by example: Leaders within the organization must lead by example and demonstrate a strong sense of ownership themselves. This can involve taking responsibility for mistakes, being accountable for results, and demonstrating a commitment to continuous improvement.
  • Give control, not take control: giving control to individuals within the organization, rather than trying to take control as a leader. This involves empowering individuals to make decisions and take ownership of their work.
  • Build a team of leaders: rather than relying on a hierarchical leadership structure. This involves empowering individuals to take ownership of their work and to lead their own teams.
  • Provide opportunities for growth: Providing opportunities for growth and development can also help foster a culture of ownership. This can be done through mentorship programs, training and development opportunities, or other forms of career development support.
  • Create a culture of excellence: this involves focusing on the goals of the organization and empowering individuals to contribute to those goals. This can be achieved by establishing clear goals, providing training and support to individuals, and creating an environment that fosters innovation and creativity.
  • Encourage risk-taking: taking calculated risks and try new things can foster a culture of ownership. When individuals feel comfortable taking risks and making decisions, they are more likely to take ownership of their work and contribute to the success of the team.

The goal is to implement a cross-functional team structure with a strong focus on feature squads that draw on expertise from multiple areas of ownership.

Multiple Areas of Ownership

In medium sized engineering teams there are three obvious areas of ownership and expertise:

  • Functional ownership: areas or technologies within the product development process. This might include ownership of specific APIs, libraries, or frameworks used within the product, or ownership of specific technical areas like database design, infrastructure management, or performance optimization.
  • Process ownership: processes, workflows, or practices that span multiple teams or areas of the product development process. This might include ownership of processes for code review, testing, deployment, or incident management, or ownership of practices like agile methodology, continuous integration/continuous deployment, or devops.
  • Product ownership: areas of the product itself, typically organized around specific features, components, or customer segments. For example, this might include ownership of specific product features like search, payments, or notifications, or ownership of specific customer segments like enterprise customers or mobile users.

Functional ownership, process ownership, and product ownership can be considered as verticals. Each vertical represents a distinct area of expertise that an engineer or team can own and lead. There should one a primary and a secondary owner for each item in funcctions, processes and products. Members of the team who assume ownership are assessed based on how they manage it. Having no ownership is equivalent to no sphere of influence and indicates the employee has less value to the company than an engineer who is owner of multiple items. There can be a team behind each item and the team should regularly meet. E.g. monthly.

Cross Functional Feature Squads

The multiple areas of ownership create a pool of engineers that we can draw from for projects. For every feature, form a feature squad that is assembled from team members that are currently unassigned to any other feature. It is at this point that agile methodologies come into play and we create Kanban boards per feature during a kickoff meeting with product owners and designers. When delivering the feature and it passes acceptanec from stakeholders, we’d be deleting this particular Kanban board.

By cycling Kanban boards, we ensure that boards don’t become dumping grounds or accumulate too many stories.

When dealing with restructures, ensure previous team leaders on board. Emphasize how a restructure will enable more cross-functional collaboration and ownership, and how it will allow for more efficient and effective product development. Highlight how their expertise and experience in previous domain ownership roles will be valuable in leading cross-functional feature squads and contributing to the success of the product as a whole.

Setting Objectives

OKRs can be more effective than KPIs as they encourage a more open-ended approach to goal-setting. Setting one objective for each item of ownership (product, function, and process) could be one approach. During quarterly reviews, owners should bring their key results for their objective and the manager can evaluate this with feedback from other team members.

180 reviews are not the most effective approach, especially for small companies. A lean evaluation process that focuses on actionable feedback and objectives is more valuable for both employees and the company. Do have regular one-on-one meetings between managers and team members.

Encourage to optionally elect a soft skill or area employees want to improve and be measured on just between himself and the manager. An example for this could be communication. It is often unrelated to the company but may be beneficial to create more rounded individuals and have a mentor around that can provide feedback on progress.

Self Organization

Emphasizing self-organization within an engineering team not only promotes independence but also fosters a sense of ownership and responsibility. Here’s how self-organization can be nurtured and its advantages harnessed:

  • Visibility of Participation: Monitor who actively engages in feature delivery. Team members who are frequently selected for these squads are perceived as collaborative and competent.
  • Ownership Metrics: Know who assumes ownership and their level of involvement. A lack of ownership can indicate limited influence and value within the team.

Career Path Options:

  • Pursue Ownership: Encourage engineers to seek out ownership opportunities to gain influence.
  • Engage in Feature Squads: Motivate team members to participate in feature squads and, where possible, take on leadership roles within these squads.
  • Value of Individual Contributors: Recognize that some engineers, though not seeking ownership, might still be invaluable contributors behind the scenes. Their value is often realized through the advocacy of the owning engineers.

Protection Mechanisms:

  • Succession Planning: Having secondary owners ensures smooth handovers in both directions, safeguarding against potential pitfalls.
  • Ownership Transitions: Encourage engineers to find and mentor their successors and to responsibly hand over ownership when they transition to different roles or companies.

Prioritize Communication

“Crucial Conversations” by Kerry Patterson, Joseph Grenny, Ron McMillan, and Al Switzler provides a practical and actionable framework for navigating difficult conversations, promoting healthy dialogue, and achieving better outcomes in both personal and professional contexts.

  • Start with heart: Begin the conversation with the right intentions, focusing on mutual purpose and respect for all parties involved.
  • Active listening: Encourage team members to actively listen to one another, seeking to understand each other’s perspectives and ideas. This involves giving full attention to the speaker, asking clarifying questions, and summarizing what has been said.
  • Giving and receiving feedback: Provide opportunities for team members to give and receive constructive feedback on their work. This includes both positive feedback to reinforce good work and constructive criticism to improve performance.
  • Focus on facts: Stick to the objective, observable data to avoid misunderstandings and emotional reactions.
  • Conflict resolution: Develop a framework for resolving conflicts within the team, including a process for identifying and addressing conflicts in a timely and productive manner.
  • Clear and concise communication: Encourage team members to communicate clearly and concisely, avoiding jargon and technical terms that may be unfamiliar to others on the team.
  • Practice regularly: The more you engage in crucial conversations, the better you become at handling them. Practice regularly to improve your skills.
  • Regular check-ins: Schedule regular check-ins with team members to ensure everyone is on the same page and any potential issues or concerns are addressed early on. This can include daily stand-up meetings or weekly team syncs.

Create a System for Managing Technical Debt

Technical debt describes the consequences of taking shortcuts in the software development process, resulting in the accumulation of suboptimal or incomplete code, design, or architecture. These shortcuts are often taken to meet deadlines, reduce costs or gain short-term benefits. Over time, technical debt can hinder development progress, reduce productivity, and increase the risk of errors and failures. It must be managed and “repaid” to ensure the long-term health and sustainability of the software system.

“Managing Technical Debt” by Philippe Kruchten, Robert Nord, and Ipek Ozkaya provides practical guidance for organizations to identify, measure, and address technical debt. By prioritizing and managing technical debt, organizations can improve the maintainability, reliability, and flexibility of their systems, reduce risks and costs, and ultimately achieve greater business success.

  • Define technical debt: Develop a clear understanding of what technical debt is and what it means in your organization.
  • Measure technical debt: Establish metrics to quantify technical debt and measure progress in addressing it.
  • Integrate technical debt management into development processes: Embed technical debt management into development processes, such as code reviews, testing, and refactoring, to address technical debt as it arises.
  • Consider automation: Automate technical debt identification and measurement to streamline the process and improve accuracy.
  • Balance short-term and long-term priorities: While it’s important to address technical debt to improve system performance and reliability, it’s also important to balance this with other priorities such as new feature development and customer needs.
  • Address root causes: Identify and address the underlying causes of technical debt, including inadequate processes, lack of skills, or unclear requirements.
  • Make technical debt visible: Communicate technical debt and its impacts to stakeholders, including business leaders, to help secure resources and support for addressing it.
  • Continuously monitor and adjust: Technical debt is an ongoing challenge, so it’s important to continuously monitor and adjust your approach to managing it as new issues arise and priorities shift.

Tech Debit is a Full Time Role

To effectively manage technical debt, we must have a full time role assigned to it. But it’s not ideal to have one or more people full time assigned. This can be an opportunity to gain cross functionality. We suggest to rotate members in and out of the technical debt role weekly or every two weeks. Consider technical debt as a function with owbership.

Implement Agile Practices

Agile practices in software development, as outlined in “Scrum: The Art of Doing Twice the Work in Half the Time” by Jeff Sutherland and “The Lean Startup” by Eric Ries provide a framework for agile software development that emphasizes flexibility, adaptability, and continuous improvement. By focusing on delivering value, empowering teams, and embracing change, organizations can achieve better results with greater efficiency and higher quality. I’ve rewritten the key points through the lens of lean software engineering from both books:

  • Minimize waste: Avoid spending time and resources on features or processes that do not provide value to the customer or the business.
  • Focus on delivering value: Prioritize work based on its potential value to the business and the customer.
  • Test assumptions: Validate assumptions and hypotheses through experiments, prototypes, and user feedback to reduce risk and uncertainty.
  • Use an iterative and incremental approach: Divide work into small, manageable increments that can be delivered quickly and iteratively.
  • Continuously improve: Continuously evaluate and improve the process and the product based on feedback from customers and the team.
  • Embrace customer feedback: Listen to and incorporate feedback from customers and stakeholders to ensure the product meets their needs and expectations.
  • Emphasize communication and transparency: Foster open and transparent communication within the team and with stakeholders to ensure alignment and collaboration.
  • Empower teams: Encourage self-organizing teams that take ownership of their work and collaborate closely to achieve shared goals.
  • Adapt to change: Embrace change as an opportunity to improve and adjust the approach and priorities accordingly.
  • Use a data-driven approach: Use data and metrics to inform decisions, evaluate performance, and drive continuous improvement.
  • Measure and monitor progress: Use metrics and feedback loops to monitor progress, identify issues early, and make data-driven decisions.
  • Keep it simple: Simplify the product and the process to reduce complexity, increase efficiency, and improve user experience. Collaborate across functions: Foster cross-functional collaboration between developers, designers, product managers, and other stakeholders to ensure alignment and shared ownership of the product.

Build a learning Organization

“The Fifth Discipline: The Art and Practice of the Learning Organization” by Peter Senge provides a framework for building a learning organization that can adapt and thrive in a rapidly changing world. By implementing these ideas, you can help create a culture of learning and continuous improvement within your organization, leading to better results and higher employee satisfaction.

  • Encourage systems thinking: Encourage your team to think about the organization as a system, with interconnected parts and feedback loops. This can help identify opportunities for improvement and prevent unintended consequences.
  • Foster personal mastery: Encourage your team members to pursue personal mastery, or continuous improvement in their individual skills and knowledge. This can help build a culture of learning and growth within the organization.
  • Create a shared vision: Work with your team to develop a shared vision for the organization’s future, and communicate it clearly to everyone in the organization. This can help align efforts and motivate the team towards common goals.
  • Promote team learning: Create opportunities for your team to learn and grow together, such as regular team training sessions or cross-functional project teams. This can help build collaboration and knowledge-sharing across the organization.
  • Emphasize feedback and reflection: Encourage regular feedback and reflection on both individual and team performance. This can help identify areas for improvement and promote continuous learning and growth.

Hiring

Some hiring hints that have survived the test of time include:

  • if it isn’t a clear yes then it’s a clear no
  • Focusing on cultural fit
  • Prioritize communication and collaboration skills in interviews
  • Encourage team members to participate in the interview process to get a diverse range of perspectives
  • Set clear expectations for new hires and providing them with the resources they need to succeed

Before you start hiring, make sure you have a clear understanding of the roles and responsibilities you need to fill. This will help you to define the skills, experience, and qualifications that are required for each position. Develop a structured interview process that includes a mix of behavioural and technical questions to assess the candidate’s skills, experience, and cultural fit. This could include phone screens, technical assessments, and on-site interviews. Do make use of the probation period for new hires to give both parties a chance to assess the fit. This could include a 30-, 60-, or 90-day probationary period where the new hire can demonstrate their skills and capabilities while also learning about the company culture. Finally develop a clear workflow that outlines the steps involved in the hiring process and document it. Continuously improve the procecss to fit your organization.

Create Meaning

“The Meaning Revolution” by Fred Kofman is a book about finding purpose and meaning in work. Here are some key points from the book that are applicable for engineering teams and that are important to implement:

  • Connect work to a higher purpose: Help team members understand how their work contributes to the organization’s mission and vision. This can help build a sense of meaning and purpose in their work.
  • Encourage personal growth: Support team members in their personal and professional development, providing opportunities for learning and growth. This can help build a culture of continuous learning and improvement.
  • Foster psychological safety: Create a work environment where team members feel confident to take risks, share ideas, and ask for help. This can help build trust and improve collaboration within the team.
  • Cultivate relationships: Encourage team members to build relationships with each other and with other teams in the organization. This can help build a sense of community and support within the organization.
  • Emphasize values: Help team members understand and embody the organization’s values, and use these values as a guide for decision-making. This can help create a sense of shared purpose and direction within the organization.

Conclusion

As an engineering leader your responsibilities are people management and hands-on technical work. To build an effective engineering team, you should focus on streamlining the hiring process, defining roles and responsibilities, and establishing a clear vision for the team. Prioritize creating a culture of ownership and accountability, with team members taking responsibility for functional, process, and product areas. Emphasize cross-functional collaboration. Be a champion of agile methodologies, ensuring that the team is following best practices and constantly improving their processes.

--

--