"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:
-
-
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
-
-
-
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
-
-
- 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.
- 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
- Quality gates and guardrails protect engineering culture
Guardrails and quality gates must be installed to provide long-term safeguards for the culture of organization
- Measure engineering culture along predefined guardrails and quality gates
Guardrails and quality gates will offer the best opportunities to observe the culture
- Autopilot wherever possible and practical
Put as many guardrails as you can on autopilot - a system of checks and balances that can self-direct
- Understand the quality gates available to you
Designate specific points in time or a process as opportunities to improve both people and products
- Be loud or be wrong, never both
Either be objectively, verifiably correct; or don't speak in absolutes
- Building the product should be as straightforward as you can make it
You deserve the most frictionless engineering experience you can create for yourself
- Supporting the product should be as straightforward as you can make it
Make supporting the product as comfortable as you can for yourself
- 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
- 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
- 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
- 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
- Don't shrinkwrap your product
Requirements will change; timelines will change; avoid hard forks and prepare for your design to take a punch
- Seek the feedback of your customers and partners at key quality gates
Keep everyone informed; cover your rear
- Actively manage scope, capacity and timelines
Nothing will burn your engineers or leadership out faster than shifting scopes, capacity and timelines
- Actively engineer context sharing
Everyone should know why they're doing what they're doing; clarify the connection between the past, present and future
- Actively engineer communication loops
Everyone should know how things are going; you should know how things are going
- Actively manage goals
Goals build muscle; muscle builds the organization
- Actively engineer opportunities
Goals without opportunities to deliver them are worthless
- 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
- Actively manage delivery risk
For everything that could negatively affect delivery and quality: document, communicate and mitigate.
- 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
- The Peter Principle is the enemy
Responsibility without adequate preparation for the responsibility is going to be disastrous
- 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
- Know your customers
You can't empathize with a customer you never hear from. You won't satisfy customers you don't empathize with