Focus on simplicity; be it – deployments, process, design, apis or people.
- The simplest explanation is usually the correct one — Ockham’s razor.
- Focus on quality not speed; quality code is easier to maintain and extend.
- Don’t break what ain’t broken.
- Don’t break what you cannot fix.
Marathon not sprint
- Focus on total cost of ownership (capabilities not features).
- Have a long term vision, roadmap and make incremental small steps.
Software development is a marathon, not a sprint; plan to focus energy when it’s needed.
- People and interactions over tools and processes.
- Working software over comprehensive docs.
- Customer collaboration over customer negotiations.
- Responding to change over following a plan.
- Only things that can be measured can be improved.
- Always start with a metric for success, work backwards.
- Observe, measure and course correct.
If you can’t measure it, you can’t improve it. – Peter Drucker
Feedback loops are critical, enable them for every process / action
- Sprints and retrospective
- Features / experiments and metrics
- Use retrospectives to improve Product development process
- Perform small releases safely and quickly in a sustainable way by improving and deploying continuesly.
- Golden Rule: Trunk is always deployable
- Golden Rule: Everyone pushes to the trunk (daily) .
- Build pipelines, block deployments if any step fails.
- Use a simple short-lived branching strategy; master to trigger build and simple deployment pipelines.
- Feature flags to hide features not yet ready.
- Separate code and configuration.
- Enable configuration to be changed without deployments.
- Popular is not always right, make informed choices.
- Simplify further, deployments, code complexity, services ..
There are two ways to fire a machine gun in the dark. You can find out exactly where your target is, the environmental conditions, the specifications of bullets and guns and how they combine together. Then, do all the calculation, shoot and hope that your bullets land close to the target. Or you can use tracer bullets. Tracer bullets leave a pyrotechnic trail from the gun to whatever they hit, giving instant feedback and letting you adjust the aim for the real bullet.
Plan for the entire feature, but use milestones to move closer to target; reevaluate and readjust AIM.
Milestone everything: engineering infrastructure, features, experiments. Do not plan to deliver big bang, there are very high changes of missing timelines, estimates. Doing so you also lose all agility and ability to experiment confidently.
Must read books: