Processes
The processes listed here can help projects achieve the engineering quality guidelines. In fact, studies have shown that “process-based metrics are more predictive of defects than code quality metrics.” However, these processes should always be in service of the project and its aims, and should never become a burden; not all processes are applicable to all projects.
- Project planning & design
- Identify project scope, project goals, and audience, with clearly defined success criteria.
- Identify a prioritized list of user stories and functional requirements.
- Decide project timeline and determine resources required.
- Create feature roadmap.
- Decide and implement project structure, including:
- Roles & responsibilities, including software/research leads and project manager
- Repository location and conventions (for example, public vs. private, branch vs. fork)
- Docs setup (for example, MkDocs, Quarto)
- Communication platform and approach (for example, Teams channels, Slack, GitHub))
- Cadence for meetings and async updates
- Roles & responsibilities, including software/research leads and project manager
- Identify project scope, project goals, and audience, with clearly defined success criteria.
- Project workflow
- Engineers and researchers talk frequently and are in sync on plans.
- Issues, next steps, and progress are documented in a consistent, accessible place (for example, GitHub project board or shared doc).
- Risks and dependencies are identified and tracked.
- Code is delivered on time (both in terms of need and promises made).
- Engineers and researchers talk frequently and are in sync on plans.
- Code development
- Code uses test-driven or docs-driven development where possible; if the code is written first, the docs and tests are written immediately after.
- Code follows the project’s style guide.
- Where possible, perform automatic linting to ensure consistency with the style guide.
- Developers use the IDE of their choice (for example, RStudio, VS Code, Cursor, PyCharm, Spyder, Neovim), and leverage AI integration where possible.
- Developers use a modern environment manager of their choice (conda, uv, or none).
- Code uses test-driven or docs-driven development where possible; if the code is written first, the docs and tests are written immediately after.
- Code reviews
- All code is submitted via PR (for Tier 1 and 2 projects; optional for Tier 3 projects).
- PRs are small and focused (aim for <100 lines), except when major new features are being introduced.
- PRs are reviewed by at least one other person (and optionally also an AI) prior to merge.
- PR reviews are timely, thorough, honest, and polite.
- All code is submitted via PR (for Tier 1 and 2 projects; optional for Tier 3 projects).
- Launch
- All stakeholders review the project and confirm that it meets its success criteria.
- The full codebase is reviewed by an engineer and AI tool against the quality guidelines.
- Docs are reviewed by the content team for clarity and completeness.
- Code is easy to find and use on GitHub (“main” branch, not long-lived feature branches).
- Code is pushed to an industry standard repository (for example, PyPI, CRAN) where appropriate.
- Where applicable, the project is paired with an AI tool (plugin, MCP server, or chatbot).
- Where applicable, the project is paired with a dedicated website.
- Where applicable, the launch is publicized via social media, websites, and announcements.
- All stakeholders review the project and confirm that it meets its success criteria.
- Maintenance
- Technical debt is proactively managed.
- Releases are frequent, especially if bugs are found.
- Code and docs are always kept in sync.
- Users’ questions and bugs are addressed promptly (first response <24 h).
- Technical debt is proactively managed.