GitHub Threads LinkedIn

Marc Love

Software Engineering | Applied ML | Product | Technical Leadership

Engineering Values and Principles for High-Performing Teams

After years of leading engineering teams across different organizations and scales, I’ve observed that the most successful teams consistently embody a core set of values and principles. These values not only shape how we work together but also directly impact the quality of our products and the satisfaction of our teams. I’m sharing these principles to articulate what I believe makes engineering teams truly exceptional.

Good Judgment

  • Build the simplest thing that works. This principle helps us avoid assumptions about future requirements, tightens our feedback loop through faster delivery, and prevents over-engineering. We can always iterate and evolve solutions as requirements change.

  • Pick the right solution for the problem at hand. Context matters enormously in engineering decisions. Solutions should match the circumstances of your organization, including scale, user base, infrastructure constraints, and business objectives. What works perfectly for one scenario may be completely wrong for another.

  • Make technical decisions with long-term sustainability in mind. Every technical choice creates a legacy that future team members will build upon. We should choose approaches that enhance rather than hinder future development and maintenance.

  • Empathize with users and be product-minded. The best technical solutions emerge when we deeply understand our users’ needs. Being product-minded helps us build features that truly serve our users while maintaining technical excellence.

  • Consider ethical implications. The products we create have real impact on people’s lives. We must carefully consider the ethical implications of what we build. We follow the General Principles from the ACM Code of Ethics (section 1, pages 4-6) and encourage open discussion of ethical concerns.

Healthy Collaboration

  • Work as a team. Success or failure belongs to the entire team, not individuals. Each team member shares responsibility for the project’s success, regardless of role or discipline. We succeed or fail together.

  • Follow the team’s process. Well-defined processes enable predictable coordination and allow individual efforts to seamlessly integrate with the team’s work. While processes should evolve, following them consistently is crucial for team effectiveness.

  • Collaborate across disciplines. Building exceptional products requires deep collaboration and respect between engineering, design, product management, and business stakeholders. The best results come from true cross-functional partnership rather than siloed hand-offs.

  • Encourage collective ownership of code. While engineers naturally develop expertise in different areas, the team should share ownership of the entire codebase. This reduces risk, encourages learning, and prevents knowledge silos.

  • Nurture a safe, learning environment. Innovation requires taking risks and admitting what we don’t know. Create psychological safety so team members feel comfortable saying “I don’t know” and suggesting unconventional solutions. Support all communication styles and personalities to ensure everyone can contribute effectively.

  • Be flexible and open minded. Diverse perspectives strengthen a team when members can productively work through differences. Listen actively, maintain an open mind, and show flexibility. When necessary, disagree and commit to move forward.

Effective Communication

  • Listen first. Take time to truly understand what others are expressing rather than jumping to conclusions. Ask clarifying questions to ensure shared understanding.

  • Communicate in ways accessible to your audience. Success requires effective communication across functions and levels. Avoid jargon, especially with non-technical colleagues, and adapt your communication style to your audience.

  • Prefer high bandwidth, low friction communication. Complex topics and challenging conversations need rich communication channels. Choose the right medium: Written text < Call < Video Call < Face to Face. Don’t hesitate to switch to a higher bandwidth mode when needed.

  • Always look for risk, communicate it proactively, and bring potential solutions. Early risk identification and mitigation is critical for project success. When raising concerns, come prepared with possible solutions.

  • Advocate for predictability in decision-making. Teams thrive when there’s shared understanding of how decisions are made. Clear decision-making processes prevent churn and ensure everyone knows when decisions are final.

  • Sell technical decisions. Build trust by clearly explaining technical choices, including costs and trade-offs. Adapt your explanation to your audience, whether that means detailed technical discussion or high-level architectural overview. Create shared understanding of technical decisions.

Maximized Value

  • Prioritize continuously and ruthlessly. Focus relentlessly on the highest-impact work. Every day should be spent on what matters most to deliver maximum value over time.

  • Deliver quickly and early. Early delivery builds trust and provides valuable feedback. Quick iterations help us validate assumptions and adjust course when needed.

  • Maintain high productivity. Team productivity isn’t just about individual output, it’s about the team’s collective ability to deliver value. High productivity builds trust and confidence with the rest of the team and gives us credibility and reputational capital when we encounter unexpected challenges or advocate for big bets.

  • Always be unblocking. While we try to prevent blockages, challenges inevitably arise. Take responsibility for removing obstacles, whether they’re affecting you or your teammates.

  • Proactively seek what you need to succeed. Don’t wait for perfect conditions - actively seek out information, clarification, or resources needed to maintain momentum.

  • Adapt to the circumstances. Different teams and projects have different needs. Pragmatically adjust processes and working agreements based on context rather than dogmatically following any single approach.

  • Shorten feedback loops. Quick feedback enables fast course correction. Longer feedback loops mean more time spent on the wrong path. Invest in processes and tools that accelerate feedback.

Sustainable and Maintainable

  • Work at a sustainable pace. Focus on delivering the right things rather than the most things. Maintain regular working hours and discourage off-hours work. Well-rested engineers with clear minds produce better code.

  • Write code with strong consideration for other engineers. Leave code better than you found it. Use clear naming and structure to make code self-documenting. Minimize complexity and avoid clever tricks that make code harder to understand and modify.

  • Use less and more-boring technology. Add dependencies judiciously, considering their long-term maintenance cost. Follow conventions over novelty to keep the codebase accessible. There are times when bleeding-edge options are appropriate, but generally you should prefer stable, proven technology over bleeding-edge options.

  • Write tests pragmatically. Balance test coverage to prevent regressions and guide development without testing beyond diminishing returns. Focus on test quality over quantity.

  • Manage technical debt proactively. Technical debt is inevitable in software development. Like financial debt, it can compound if ignored. Regular, incremental debt reduction is healthier than letting it accumulate until it forces major rewrites or halts feature development.


This is an evolution of an engineering values document that the Carbon Five engineering leadership team co-authored several years ago. Between Christian Nelson, Rob Pak, Matt Bricston, Wil Wade, and myself the five of us had worked with literally hundreds of clients over the course of Carbon Five’s 20+ year history.