Understanding the Definition of Done in Software Development
Written on
Chapter 1: Introduction to the Definition of Done
The Definition of Done (DoD) is an essential topic in software development that I find particularly engaging. While I don’t claim to have a comprehensive solution for every scenario, my approach can guide you significantly—around 90% of the way there. It plays a crucial role in team dynamics and expectation management. Have you ever encountered a situation where you thought a task was complete, only to realize it wasn’t truly finished? This discussion aims to clarify those moments.
To effectively address the Definition of Done, we first need to identify the various team members involved, including:
- Business Analyst
- Project Manager
- Development Manager
- UI/UX Engineer
- Lead Software Developer
- Software Developer
- QA Engineer
- Client
Before diving into individual definitions of "Done," it is vital to establish two foundational elements of the Software Development Process: the Definition of Ready and the Preconditions.
Section 1.1: Preconditions Before Project Initiation
Prior to gathering requirements from a client, certain items must be in place. This checklist ensures that the project is set up efficiently from the start, allowing the team to hit the ground running. Each role is assigned specific tasks to eliminate confusion.
Initial Client Call Completed?
Roles: Business Analyst, Development Manager
In this call, initial requirements are gathered to prepare for the project, such as whether the client wants a mobile or web application.
Project Setup in Confluence?
Role: Business Analyst
The BA establishes a centralized knowledge repository where all documentation and requirements will reside.
Project Setup in Jira?
Role: Business Analyst
The BA creates the Jira board to facilitate task management as requirements are collected.
Client Jira Board Setup?
Role: Business Analyst
An external Jira board may be set up for clients who require visibility into project progress.
Project Repository Initialized?
Role: Lead Software Developer
This is the moment to initialize the code repository in GitHub or BitBucket.
Staging and Production Environments Initialized?
Role: Lead Software Developer
If the development stack is known, the staging and production environments should be established.
Deployment Scripts Initialized and Initial Code Pushed?
Role: Lead Software Developer
If confident in the stack, now is the time to set up deployment scripts and push code to the staging environment.
Section 1.2: Establishing the Definition of Ready
Once the preconditions are set, we can focus on defining what it means to be "Ready." An experienced Business Analyst is crucial during this phase. Throughout client interactions, the BA collects and organizes requirements in Jira and Confluence.
Checklist for Each Feature:
- Is the story clear and created? (Business Analyst, Client)
- Is the story feasible? (Business Analyst, Lead Software Developer)
- Is the story testable? (Business Analyst, QA Engineer)
- Is a client team member identified to accept the story? (Business Analyst, Project Manager)
- Has the issue been created in Jira? (Business Analyst)
- Is the Jira Epic created and assigned? (Business Analyst)
- Are acceptance criteria documented? (Business Analyst)
- Has the Functional Requirements Document (FRD) been created and linked to the issue? (Business Analyst)
The above video provides insights into the Definition of Done in Agile Software Development, detailing essential components to ensure your team is aligned.
Section 1.3: The Developer's Definition of Done
The Developer's DoD is pivotal. Here’s a checklist that breaks it down step by step, ensuring clarity and thoroughness in task completion:
- Task moved to “In Progress” in the Internal Jira Board? (Developer)
- Task updated in the Client’s Jira Board? (Project Manager)
- Code produced according to requirements? (Developer)
- Code pushed to the repository and pull request submitted? (Developer)
- Hours logged? (Developer)
- Code reviewed and pull request approved? (Lead Developer)
- Feature branch merged into the development branch? (Developer)
- Code pushed to the staging environment? (Developer or Lead Developer)
The Developer can consider their part done after these steps.
This second video explains the Definition of Done in Agile, further clarifying the necessary steps to ensure a project is genuinely completed.
Chapter 2: Conclusion
We’ve explored the multifaceted nature of the Definition of Done across various roles. It’s essential that all team members understand their individual responsibilities and the expectations set forth. This article serves as a foundation, and I encourage you to adapt it to suit your own environment, ensuring that you never find yourself saying, “I thought it was done, but it really wasn’t.”
Dino Cajic, with a wealth of experience in software engineering, leads IT at several organizations. His expertise encompasses enterprise-level applications and educational writing. Connect with him on LinkedIn, or follow him on Instagram for more insights.