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 Video Library
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
View Events Video Library
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
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

Integrating PostgreSQL Databases with ANF: Join this workshop to learn how to create a PostgreSQL server using Instaclustr’s managed service

Mobile Database Essentials: Assess data needs, storage requirements, and more when leveraging databases for cloud and edge applications.

Monitoring and Observability for LLMs: Datadog and Google Cloud discuss how to achieve optimal AI model performance.

Automated Testing: The latest on architecture, TDD, and the benefits of AI and low-code tools.

Related

  • The Evolution of Software Development: From Waterfall to Agile to DevOps and Beyond
  • Pick Your Poison: Waterfall, Agile, or Cowboy?
  • Adoption of Hybrid Agile in Fixed-Bid Projects
  • A Transformation Story: From Waterfall to Agile Software Development

Trending

  • New Free Tool From Contrast Security Makes API Security Testing Fast and Easy
  • Continuous Integration vs. Continuous Deployment
  • Using Open Source for Data Integration and Automated Synchronizations
  • Message Construction: Enhancing Enterprise Integration Patterns
  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. Your Waterfall Project Is Not My IKEA Kitchen

Your Waterfall Project Is Not My IKEA Kitchen

Peter Schuh user avatar by
Peter Schuh
·
Jul. 16, 10 · News
Like (0)
Save
Tweet
Share
4.72K Views

Join the DZone community and get the full member experience.

Join For Free
A few years back, when my wife and I still had enough free time to do our home remodeling ourselves, we gutted our kitchen and rebuilt it with free-standing kitchen cabinets from IKEA. (For what it’s worth, IKEA kitchen cabinets are surprisingly robust.)

I was recalling this activity earlier today as I reflected upon the flaming waterfall project that I am currently attempting to douse with a steady spray of agile practice and discipline. What would have happened if we would have taken a waterfall approach to our IKEA kitchen?

The high-level design and scoping decisions would have been the same. Basically, we still would have needed to measure and select the right assortment of cabinets to fit in the space and correctly distribute our appliances. But, then, implementation would have been fundamentally different.

Tough as they are, IKEA cabinets still come in flat-pack boxes, and assembly is anything but simple. We worked our way through the cabinets in an iterative fashion. Unpacking all the parts for a single cabinet, reviewing the instruction, assembling the cabinet, then leveling it in place. At the time, I never thought of this as iterative. In retrospect, I realize it was.

Had we waterfalled our kitchen we would have emptied every flatpack box. We then would have confirmed, cabinet by cabinet, whether we had each and every part required for each cabinet. Next, we would have read all the directions for every cabinet, ensuring we had all the tools and skills to build each cabinet. We then we would have assembled all the cabinets in an allen-key-twirling frenzy. And finally, we would have positioned and leveled the cabinets in one fell swoop.

Waterfalling the kitchen would have posed two significant challenges. First, we did not have the physical space to unpack and sort everything without falling over ourselves and–much more serious–mixing different pieces from different cabinets.

Second, since every cabinet was different, surveying all the pieces and reading all the directions in advance would likely have done more to confuse than help us. Only one cabinet needed a hammer, but two others needed a rubber mallet. One cabinet was built from the countertop down. The others from the shell up. The sink cabinet required modifications as we went, since we were repurposing a corner cabinet for that purpose (and we needed additional tools for that). We didn’t need to know all these things in advance. It would have been overwhelming. We needed to know these particulars in context, as we were working on each cabinet.

We even discovered a piece missing from one of the cabinet packs, and it was no simple screw. We discovered it as we were assembling that cabinet and took a fifteen minute trip to the local hardware store (NOT Home Depot) where the owner disappeared into the back and returned five minutes later with a stisfactory substitute part. No upfront review needed; and no arduous trek back to IKEA required.

Now, some will argue that many software development projects are vastly more complicated than my weekend kitchen project. Such statements play exactly to my points above.

First, just as we would have had physical constraints around unpacking and assembling everything in our not-so-small kitchen, software teams have to contend with similar limiting factors. A development team that shifts from an all-encompasing design phase to a full-system buildhas to orchestrate branching and merging strategies, the sharing of test environments, and access to domain and technical experts across the entire system to be built, all at once.

Second, the all-encompassing deign phase (which would have be preceded by a requirements gathering bonanza) fills the team’s heads well beyond the brain’s saturation point with concepts, ideas and hundreds of details critical, trivial and everywhere in-between. When waterfalling into the build phase, you are letting a design-drunk team loose on your codebase. Because they’ve digested and designed everything, they’ve already forgotten significant portions of the system. They’ve likely misplaced and confused requirements and design details across features and components. This only gets worse the bigger and more complicated the system is. You could argue that the team must go back and reread all the requirements and design documentation before they start coding each part of the system, but that certainly sounds like unnecessary rework that most any self-respecting developer will ignore. It’ll all come back, naturally, as they write their code.

Thank God we didn’t waterfall the kitchen. It’s anyone’s guess where the sink would have ended up.

Cabinet (file format) waterfall Software development agile

Published at DZone with permission of Peter Schuh, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • The Evolution of Software Development: From Waterfall to Agile to DevOps and Beyond
  • Pick Your Poison: Waterfall, Agile, or Cowboy?
  • Adoption of Hybrid Agile in Fixed-Bid Projects
  • A Transformation Story: From Waterfall to Agile Software Development

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

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: