In order to improve our productivity and keep our code high-quality, I am proposing the following programming workflow.
- Map out all of the major features and improvements you have planned for the current version of your project.
- Create a project milestone for your project version. (In some cases, you may create an umbrella Maniphest task.)
- Add tasks to that milestone/umbrella task for each feature and improvement.
- Ensure each task has...
- A description describing the goal. You can generally include details on what has to be done, and how to potentially do it.
- Tags for project, department, and team.
- Set QTM measures: priority, gravity, friction, and relativity. (Gravity Points should match Gravity).
- Use Maniphest comments to discuss the task with others (and your future self), as necessary. For example...
- Tracking how you fixed a bug.
- Brainstorming feature details and implementation over time.
- Discussing and tracking changes in project design.
- Make sure master is up to date, and then create a new Git branch for your work.
- Pick one single feature, and start building it.
- Add subtasks to your Maniphest task as necessary, detailing other features and bugfixes necessary to implement the feature.
- CSI comment as you go!
- When practical, update the documentation as you go. It's okay to leave gaps in documentation temporarily, during development.
- Keep an eye on Maniphest for bug reports from other developers. Prioritize those and bugfix/optimize at will.
- Upload your work each day to a Differential, regardless of how pretty or functional it might be.
- Link your Maniphest tasks to your Differential.
Don't worry! Although the list looks long, you can stay on top of most of these items as you code, while some others require minimal effort.
Once the code is landed, go back to Step 2!