View on GitHub

bmd

Better Managed Development

A method for managing engineering culture

What We Define as “Engineering Culture”

“Culture”, in the context of software engineering is a question of how, not what, one builds.

This way, we can define Engineering Culture as the implementation of a set of standards, processes and practices that define how we deliver software products; from concept to production deployment.

Some specifics of culture will vary in some aspects from organization to organization; but there are universal and quantifiable guardrails that we believe are broadly applicable to any healthy engineering organization.

The objective of this manifesto to provide a starting checklist that engineers, middle and senior engineering management should run through to answer the question:

“What guardrails and quality gates are in place to secure our engineering culture?”

This manifesto supports three broad categories of actors in the organization:

  1. Engineering Non-management

    • Use a shorthand framework to know what a company’s engineering culture is before joining up. Everybody has expectations of you (“10X dEveLopEr”, Agile, PMP, Extreme Programming etc). You should have one for the culture you participate in and contribute to.

    • Have a framework within which to understand your place in your engineering organization, understanding what you should expect from your management, peers and partners

    • Guardrails to hold yourself, your colleagues and your organization accountable to standards and expectations

  2. Engineering Management

    • Reliably and repeatably execute your strategy and deliver innovative products in a timely manner.

    • Guardrail and protect your engineering organization’s culture.

    • Be deliberate about the outcomes you want to see from middle management and beyond

    • Have objective measures to gauge the state of your engineering organization and its culture.

    • Codify and document the bases of your relationships with partners of the engineering organization

  3. Product/Business

    • Understand the ethos and motivations of the engineering organization you’re partnered with
    • Partner more effectively with the organization based on a transparent and well-documented set of principles and practices.

Principles

1. Everyone: Culture is a distinct, quantifiable quality

  1. Safeguard engineering culture as a distinct responsibility

    It should be one or more people’s responsibility to deliberately monitor,influence and track the culture of the organization

  2. Quality gates and guardrails protect engineering culture

    Guardrails and quality gates must be installed to provide long-term safeguards for the culture of organization

  3. Measure engineering culture along predefined guardrails and quality gates

    Guardrails and quality gates will offer the best opportunities to observe the culture

  4. Autopilot wherever possible and practical

    Put as many guardrails as you can on autopilot - a system of checks and balances that can self-direct

  5. Understand the quality gates available to you

    Designate specific points in time or a process as opportunities to improve both people and products

  6. Be loud or be wrong, never both

    Either be objectively, verifiably correct; or don’t speak in absolutes


2. Engineers: Own how the product is built

  1. Building the product should be as straightforward as you can make it

    You deserve the most frictionless engineering experience you can create for yourself

  2. Supporting the product should be as straightforward as you can make it

    Make supporting the product as comfortable as you can for yourself

  3. Testing the product should be as straightforward as you can make it

    The business deserves guarantees of the quality of the product. Make testing and warrantying the product as straightforward as you can for yourself

  4. Upgrading the product should be as straightforward as you can make it

    Expect your product to change as the business landscape changes. Make upgrades and deprecation as straightforward as you can for yourself

  5. Build the product to tell you what went wrong and how

    Spend as little time as possible wondering what went wrong or how. Make root cause analysis as straightforward as you can for yourself

  6. Shift the guardrails as leftward as you can make them

    Do more to guardrail the quality of your product in earlier quality gates. You’ll have less to do later when it’s more costly

  7. Don’t shrinkwrap your product

    Requirements will change; timelines will change; avoid hard forks and prepare for your design to take a punch

  8. Seek the feedback of your customers and partners at key quality gates

    Keep everyone informed; cover your rear


3. Leadership: Support how the product is built

  1. Actively manage scope, capacity and timelines

    Nothing will burn your engineers or leadership out faster than shifting scopes, capacity and timelines

  2. Actively engineer context sharing

    Everyone should know why they’re doing what they’re doing; clarify the connection between the past, present and future

  3. Actively engineer communication loops

    Everyone should know how things are going; you should know how things are going

  4. Actively manage goals

    Goals build muscle; muscle builds the organization

  5. Actively engineer opportunities

    Goals without opportunities to deliver them are worthless

  6. Actively engineer skill-sets

    A team full of generalists will become costly; cultivate depth in the specific skill-sets your team needs, in line with their interests

  7. Actively manage delivery risk

    For everything that could negatively affect delivery and quality: document, communicate and mitigate.

  8. Actively engineer goodwill

    Happy developer, happy life. Hard times will come, and go over easier when the team’s usually in a generally in a good mood

  9. The Peter Principle is the enemy

    Responsibility without adequate preparation for the responsibility is going to be disastrous


4. Partners: Support each other towards delighting customers

  1. The business and engineering are in a partnership, not a “customership”

    Partners are mutually obligated to each other and hold themselves accountable to predetermined expectations

  2. Know your customers

    You can’t empathize with a customer you never hear from. You won’t satisfy customers you don’t empathize with