DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
Building Scalable Real-Time Apps with AstraDB and Vaadin
Register Now

Trending

  • Design Patterns for Microservices: Ambassador, Anti-Corruption Layer, and Backends for Frontends
  • A Complete Guide to AWS File Handling and How It Is Revolutionizing Cloud Storage
  • Observability Architecture: Financial Payments Introduction
  • How to LINQ Between Java and SQL With JPAStreamer

Trending

  • Design Patterns for Microservices: Ambassador, Anti-Corruption Layer, and Backends for Frontends
  • A Complete Guide to AWS File Handling and How It Is Revolutionizing Cloud Storage
  • Observability Architecture: Financial Payments Introduction
  • How to LINQ Between Java and SQL With JPAStreamer
  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. Defining Done: When to Crawl, Walk, or Run

Defining Done: When to Crawl, Walk, or Run

Zac Gery user avatar by
Zac Gery
·
May. 02, 14 · Interview
Like (0)
Save
Tweet
Share
12.09K Views

Join the DZone community and get the full member experience.

Join For Free
Sometimes the simplest of words spark the biggest debates. In programming, defining the word "done" has a diverse field of opinions. Some of the primary drivers for defining "done" are for clarity and efficiency. In many situations, teams devise a guiding statement or build a check list of necessary steps. For example, a guiding statement might state, "A feature is complete when it meets the requirements laid out by the business and has been released to customers." Although the simplest of statements can still generate disagreement, teams can typically find common ground on defining "done." Once alignment is found it's tempting to declare "mission accomplished," but teams should dig a bit deeper.


While programming, developers cross many decision points that bring into question a different, lower-level definition of "done." For instance, how far should something be architected? Scaled? Fault tolerant? Another example is fixing a bug. How far does one go to fix the problem? Should the surface level issue or the underlying problem be fixed? What happens if fixing this issue exposes/creates other bugs? Although some of these questions can be answered through fact finding missions, others are less concrete. When these situations arise, keep the following thoughts in mind:

  • Can direction or advice be provided by a lead, manager, business analyst, stakeholder, etc.?
  • Is the complexity of the development approach less than or equal to the value of the functionality? For example, a seldom used admin page may not require the same level of attention as other high traffic areas.
  • Which area of programming does the functionality fall into? Good enough, solid, or reliable?
  • What is the priority of the concern/problem? Does this need a short term or long term solution? Or both?
  • Do other priorities supersede the importance of this?
  • What are the risks of going with that decision? Are other risks exposed by not selecting that decision? Will/does this negatively impact the software? By how much? Is that within an acceptable range?
When using these guidelines, it's beneficial to have multiple solutions in mind when possible. This helps safeguard developers against snap decisions, inattentional blindness, and groupthink. If one solution introduces too much risk or investment of time/money, having other predefined options is invaluable. In working through this process, it's important to remember that there is no silver bullet. Each environment and company is unique. Use this list as a jumping off point and feel free to enhance it. This will help developers in the daily decisions of crawl, walk, or run. Having alignment on these lower-level "dones" will help ensure the larger "done" is achievable.
teams IT dev Efficiency (statistics) Dig (command) Advice (programming) Fault (technology) Data Types Requirement

Published at DZone with permission of Zac Gery, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Trending

  • Design Patterns for Microservices: Ambassador, Anti-Corruption Layer, and Backends for Frontends
  • A Complete Guide to AWS File Handling and How It Is Revolutionizing Cloud Storage
  • Observability Architecture: Financial Payments Introduction
  • How to LINQ Between Java and SQL With JPAStreamer

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com

Let's be friends: