If you lead a software project, remember that the role entrusts you with more than the craft or sullen art of software construction. You also need to manage project delivery and ensure code quality. Most developers understand what these mean but it helps to breaks these responsibilities down to concrete tasks, so here goes:
Professional software is written for users and we must ensure it gets delivered to them, predictably. This requires us to:
beta
, stable
, nightly
, snapshot
, etc.).beta
release every two weeks).The software we deliver, transitively delivers, third-party libraries. Our software supply chain must only use reputable vendors and we’re responsible for tracking and relaying relevant changes (e.g. security fixes) in our supply chain to our users.
Project source code, like a cherished garden, requires constant upkeep and weeding to maintain its quality. Quality is a compound attribute that includes overall design adherence, code-style conformance, automated test coverage, known defect counts and many other things. Well meaning contributors can compromise quality unless we:
The key to a stress-free quality guard is enabling local evaluation of the acceptance criteria. That is, contributors should be able to verify, in their own work-space, if their proposed changes meet the project minimum quality criteria.