Definition of Done #308
drewcdisc
announced in
Norms, process, standards
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
New Development requirements
Testing Framework
Graceful exception handling
Absurd uses of the system
Non-rule PBIs
These PBIs will require additional unit testing that will become part of the regression test. However, no additional system testing is added.
Average data set size
Average rule cycles required
Regression testing
This includes both system tests and unit tests.
Branching strategies
Engineering Disciplines
Whereas several areas of this DoD discuss engineering disciplines that are defined in specific contexts (like unit and regression tests), this section is for launching discussions about other engineering disciplines that we define or discover. Please add to this section the things that we want to do and those we want to at least consider.
When we resolve to include any of these disciplines into our DoD, please move them into their appropriate contexts within the DoD document and remove them from this list. They should only start here, not live here.
eXtreme Programming (XP)
XP is a process that emphasizes empowering engineers to take ownership and responsibility for their code. It has several practices that integrate together in order to achieve the best results. It is not possible for all XP states to be achieved in our team. For instance, we are not a co-located organization, so mitigation has to be allowed for that. This document will not become a conversation about XP; instead we all need to learn about it on our own. There is a good summary here.
Still, those areas of XP (or ANY engineering discipline) that we choose to use do belong in this section on Engineering Disciplines, at least as a start for the discussion. So, please add them as needed. As we work out how we need to integrate them in our process, we will want to include them in the other areas of this document where they have the most appropriate impact.
Pair Programming
Pair programming is a discipline that we discussed during a retrospective. It is a practice where two people work on the same code. Traditionally, this would mean two people literally sitting together at one machine, one typing while the other watches and makes suggestions. The idea is that this practice implements a real time code review. We would have to come up with some collaborative coding tools in order to accomplish this.
Refactoring
Refactoring is the practice of improving code quality without changing code behavior. Since writing code is synonymous with creating bugs, improving code quality AND changing code behavior can end up in a tug-of-war over bug management. One area where we discussed refactoring is the practice of keeping our technical requirements (version dependencies on outside libraries or platform) up-to-date. This is discussed further in a section below.
Technical Requirements
We are introducing a policy that says we will not allow the CORE platform to fall more than two versions behind on any libraries or platforms in which we are dependent. As of this writing CORE is dependent on Python 3.10, but Python has already released 3.13. Therefore we will be creating a PBI for managing this refactoring of our code to be updated appropriately.
Developer responsibility
Keeping our code up-to-date with versions must rely on our engineering team. Our product owner is unlikely to track those dependencies. Therefore the Development Team must take responsibility for bringing these dependency issues before the PO in the form of PBIs in New Issues, and bring it up during Planning.
Beta Was this translation helpful? Give feedback.
All reactions