SlideShare a Scribd company logo
1 of 56
Big Balls of Mud in
Agile Development –
Can we Avoid Them?
   Joseph W. Yoder




     Copyright 2010 Joseph W. Yoder & The Refactory, Inc.
Evolved from The UIUC SAG
In the early 90‟s we were studying
objects, frameworks, components,
reusability, patterns, “good” architecture.




However, in our SAG group we often
noticed that although we talk a good
game, many successful systems do not
have a good internal structure at all.

      Big Balls of Mud in Agile Development – Can we Avoid Them -- 2
Selfish Class
Brian and I had just published a paper
called Selfish Class which takes a code’s-
eye view of software reuse and evolution.




In contrast, our BBoM paper noted that in
reality, a lot of code was hard to (re)-use.
     Big Balls of Mud in Agile Development – Can we Avoid Them -- 3
Why BBoM?
Why was this phenomenon so
prevalent in our industry? We
talk a good game.
We had seen where Lisp had failed,
Smalltalk was starting to fail,
Windows was winning. Why was
this? What is there about some
systems that failed compared to
systems that succeed, even when
they seemed better.
  Big Balls of Mud in Agile Development – Can we Avoid Them -- 4
Big Ball of Mud
Alias: Shantytown, Spaghetti Code

A BIG BALL OF MUD is haphazardly
structured, sprawling, sloppy, duct-tape and bailing
wire, spaghetti code jungle.
The de-facto standard software
architecture. Why is the gap
between what we preach and
what we practice so large?

We preach we want to build high quality
systems but why are BBoMs so prevalent?
          Big Balls of Mud in Agile Development – Can we Avoid Them -- 5
Big Ball of Mud




Big Balls of Mud in Agile Development – Can we Avoid Them -- 6
Worse is Better
Ideas resembles Gabriel‟s 1991
      “Worse is Better”
Worse is Better is an argument to
  release early and then have the
  market help you design the final
  product. It is taken as the first
  published argument for open
  source, among other things.
Do BBoM systems have a Quality?
     Big Balls of Mud in Agile Development – Can we Avoid Them -- 7
Worse is Better (examples)
  Betamax vs VHS Format
       Why did VHS win?
       Betamax was arguably a better format
  Macintosh vs Windows
       Mac was easier to use
       Far superior in many ways
  MS Word/Publisher vs FrameMaker
       Lot‟s of people use word
       FrameMaker is better for books
        Big Balls of Mud in Agile Development – Can we Avoid Them -- 8
What exactly do we
             mean by "Big"?

Well, for teams I consider > 10^2 big
 and for code I consider > 10^5 big

Teams can write good code. Smalltalk
 is an example. I've seen teams of things
 written by 10^1 or 10^2 be pretty good
 and definitely would not be considered
 to be a BBoM.

       Big Balls of Mud in Agile Development – Can we Avoid Them -- 9
Mud == Anti-Pattern???
In one sense Mud could be seen as an anti-pattern.
   Reasons Mud Happens:
    Throwaway Code, Piecemeal Growth, Keep it Working.

Similar Forces that lead to BBoM and anti-patterns.

Difference is that with BBoMs many reasons why they
   happened and are even successful (and maybe even
   necessary given our current state of the art).

Anti-Patterns were almost the opposite when you looked at
  the book. These are counterproductive practices.

          Big Balls of Mud in Agile Development – Can we Avoid Them -- 10
Legacy == Mud?




Big Balls of Mud in Agile Development – Can we Avoid Them -- 11
Legacy != Mud???
Does Legacy happen within months or a year
after the first release?

Or is legacy after the second release?

What about Muddy code that is released on the
first version? Is this a counterexample?

Is all Legacy Mud? Smalltalk???

       Big Balls of Mud in Agile Development – Can we Avoid Them -- 12
Is Mud Normal?
Well, just read our paper....there are
"normal" reasons why it happens. Maybe
it is the best we can do right now.

If mud is such a bad thing, why do people
keep making it?

Maybe if we accept it and teach it more
then we can deal with it better and help
prevent it from getting too bad.
      Big Balls of Mud in Agile Development – Can we Avoid Them -- 13
Question

 So, why DO people build Big Balls of Mud?
Where Mud Comes From




 Big Balls of Mud in Agile Development – Can we Avoid Them -- 15
Software Decay




Big Balls of Mud in Agile Development – Can we Avoid Them -- 16
Robber Crops




Big Balls of Mud in Agile Development – Can we Avoid Them -- 17
Keep it Working, Piecemeal
 Growth, Throwaway Code




   Big Balls of Mud in Agile Development – Can we Avoid Them -- 18
Copy „n‟ Paste




Big Balls of Mud in Agile Development – Can we Avoid Them -- 19
The Age of Sampling




Big Balls of Mud in Agile Development – Can we Avoid Them -- 20
Big Bucket of Glue




Big Balls of Mud in Agile Development – Can we Avoid Them -- 21
The Mystery of Dark Matter




   Big Balls of Mud in Agile Development – Can we Avoid Them -- 22
They Have a Name




Big Balls of Mud in Agile Development – Can we Avoid Them -- 23
Agile to the Rescue???
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
  the right, we value the items on the left more.

                                  …From the Agile Manifesto
          Big Balls of Mud in Agile Development – Can we Avoid Them -- 24
Question

 What Agile Practices help us avoid or cope
  with mud? Does Agile practices such as
  TDD really help minimize mud? What are
  we doing RIGHT?
 What Agile Practices contribute to the
  problem? Encourage mud? So Is Mud
  really the best that Agile can do?
Do Some Agile Principles
       Encourage mud?
Lack of Upfront Design?
Late changes to the requirements
   of the system?
Continuously Evolving the Architecture?
Piecemeal Growth?
Focus on Process rather than Architecture?
Working code is the measure of success!
I‟m sure there are more!!!
       Big Balls of Mud in Agile Development – Can we Avoid Them -- 26
Can Agile Help?
Scrum, TDD, Refactoring, Regular
 Feedback, Testing, More Eyes, …
Good People!
Continuous attention to technical excellence!
Retrospectives!
Face-To-Face conversation.
Motivated individuals with the environment
 and support they need.
        Big Balls of Mud in Agile Development – Can we Avoid Them -- 27
Do we really need Agile Practices
  such as TDD to avoid mud?

 After all, most of the early STers I know
 never practiced TDD or SCRUM yet we
 claim these methods helps create clean
 code and avoid mud more easily. Is this
 really true or are there other methods that
 work as well or better at minimizing mud?
 Maybe it is just good teams of people no
 matter what method they use?

       Big Balls of Mud in Agile Development – Can we Avoid Them -- 28
Question
 Is Craftsmanship the Cure? Or maybe it is
   the problem? Is ascribing poor code to
   unhygienic habits, even malpractice, is
   enough, or naive; is mud inevitable?
 Does quality matter? Quality on the
   outside vs. Quality on the inside? Does
   quality just get in the way? Is "Clean" the
   Answer? Or only part of the answer? Or
   a sideshow?
Shoddy Workmanship




Big Balls of Mud in Agile Development – Can we Avoid Them -- 30
Amish Furniture




Big Balls of Mud in Agile Development – Can we Avoid Them -- 31
The Quality Goes In




Big Balls of Mud in Agile Development – Can we Avoid Them -- 32
Quality
Quality Definition: a peculiar and essential
 character or nature, an inherent feature or
 property, a degree of excellence or grade, a
 distinguishing attribute or characteristic




       Big Balls of Mud in Agile Development – Can we Avoid Them -- 33
Quality (Who‟s perspective)
                                                                  “The Four Winds of
                Artist                 Scientist
                                                                   Making”…Gabriel


        important/boring              true/false

                                                                      An architect might
                                                                      have perspectives
             Designer                 Engineer                        from an artist to a
                                                                         design or an
                                                                          engineer!
           cool/uncool                good/bad


    Rich Gold "The Plenitude: Creativity, Innovation & Making Stuff
           (Simplicity: Design, Technology, Business, Life)“
Triggers and Practices – Richard Gabriel http://www.dreamsongs.com

               Big Balls of Mud in Agile Development – Can we Avoid Them -- 34
Quality by Attributes
Quality in everyday life and business,
engineering and manufacturing can be
seen as the usefulness of something.
Usually describes certain attributes.
   • For example you could describe quality in
     terms of performance, reliability (fault
     tolerance), safety, maintainability,
     reusability, etc…

       Does quality on the inside
      mean quality on the outside?
      Big Balls of Mud in Agile Development – Can we Avoid Them -- 35
“Ility” Requirements
       Accessibility                         Reliability
       Compatibility                         Safety
       Efficiency                            Scalability
       Effectiveness                         Security
       Extensibility                         Stability
       Maintainability                       Supportability
       Performance                           Usability
          Covers things such as "constraints“, "quality attributes“,
                   and "quality of service requirements"

Qualities are usually described by “ilities” are often called non-functional
   requirements…but quality can also focus on how well the functional
               requirements are met (how to measure this?)

            Big Balls of Mud in Agile Development – Can we Avoid Them -- 36
How can we measure?

Standards?

Is it hard to Maintain?

Is it good enough?

Does it meet the minimum requirements?


     Big Balls of Mud in Agile Development – Can we Avoid Them -- 37
Brooklyn Bridge
       John Augustus Roebling

The Brooklyn Bridge, 1883,
 one of the oldest suspension
 bridges in the United States, stretches
 over a mile from Brooklyn to Manhattan.
On completion, it was the largest
 suspension bridge in the world and the
 first steel-wire suspension bridge.


       Big Balls of Mud in Agile Development – Can we Avoid Them -- 38
Brooklyn Bridge
        John Augustus Roebling

His son Washington succeeded
  him, but was stricken with
  caisson disease.
Manhattan side of the tower it is 10 meters
  short of the bedrock...rests on sand!




        Big Balls of Mud in Agile Development – Can we Avoid Them -- 39
Brooklyn Bridge
Over engineered. Had 6 times what it
needed which proved useful over time
What happens if we tried overdesign of our systems
(a language for printing hello world) or the same line
of code 6 times (is this 6 times more reliable?)
     if (x != a) x = a; if (x != a) x = a; if (x != a) x = a;
     if (x != a) x = a; if (x != a) x = a; if (x != a) x = a;
Redundant components can
make our systems more reliable




 Big Balls of Mud in Agile Development – Can we Avoid Them -- 40
Being Good Enough
   Quality of being good enough

   Does it meet the minimum requirements

   Quality has many competing forces…are
    we designing a system for online orders
    or for controlling the space shuttle, they
    have different qualities, thus different
    patterns and solutions apply


       Big Balls of Mud in Agile Development – Can we Avoid Them -- 41
Many Quality Patterns Written
     Design Patterns
     Patterns for Fault Tolerant Software
     Performance Patterns
     Small Memory Software Patterns
     Analysis Patterns
     Security Patterns
     Stability Patterns
     Usability Patterns
Imitate or use proven quality techniques
      Big Balls of Mud in Agile Development – Can we Avoid Them -- 42
Implementation Patterns
Patterns about creating quality code that
 communicates well, is easy to understand,
 and is a pleasure to read. Book is about
 patterns of “Quality” code.
But…Kent states, “…this book is built on a fragile
 premise: that good code matters. I‟ve seen too
 much ugly code make too much money to believe
 that quality of code is either necessary or sufficient
 for commercial success or widespread use.
 However I still believe quality of code matters.”
Patterns assist with making code more bug free and
 easier to maintain and extend.
           Big Balls of Mud in Agile Development – Can we Avoid Them -- 43
Does quality really matter?
Is "Clean" the Answer? Or only part of the answer? Or a
   sideshow? Who ever said code was supposed to be pretty?
Being clean or cleaning up certain parts of the mud might help in
   the short run. However, as we've heard before, Lipstick on a
   Pig and you still have a pig, or dressing it up, still doesn't get rid
   of the mess inside.
But maybe we don't need to clean it all up. Is this even completely
   possible for something of any size. I claim that at times you will
   always have some muddy code. There are counter forces to
   trying to make something too perfect. Perfection is the enemy
   of Good Enough and sometimes Good enough is all we
   need. No normal end-user looks into the middle of something
   and says, that is it...we got beauty.

             Big Balls of Mud in Agile Development – Can we Avoid Them -- 44
Is Craftsmanship the Cure?
    Or is it the problem?

On the average, average companies get
average people (law of averages).

Is ascribing poor code to unhygienic habits,
even malpractice, is enough, or naive; is mud
inevitable?



       Big Balls of Mud in Agile Development – Can we Avoid Them -- 45
Question

 When do we gentrify, rehabilitate, or make-
  over code, and when must be demolish
  and/or replace it? (In other words) Is mud
  reversible?

 How much have patterns, frameworks,
  components, even objects helped with
  mud?
Total Code Makeover




Can we just Refactor out of Mud?

Big Balls of Mud in Agile Development – Can we Avoid Them -- 47
Code Make Over?
Refactoring can help reverse some mud. The
  tradeoff is cost and time....maybe with technology.
Uncle “Bob” (Robert Martin) even states in his Agile
  Software Development – Refactoring and Pair
  Programming book: “Refactoring, which when
  done as part of Test-Driven Development (TDD)
  is my personal favorite way to spend my
  development time”
Joel on Software says rewriting it is the one thing
  you should never do? Yet, we say we should do
  it…sometimes.
          Big Balls of Mud in Agile Development – Can we Avoid Them -- 48
Reconstruction




Big Balls of Mud in Agile Development – Can we Avoid Them -- 49
Can tools Help?
What is the role of tools in draining these
 swamps?
What kinds of tools and practices might
 forestall software entropy; is mud
 preventable?
Refactoring Tools, Testing Tools, XUnit, Lint
 Tools, Code Critics, …
Tools can help, but too often too much is put
 on tools as the solution (silver bullet).
        Big Balls of Mud in Agile Development – Can we Avoid Them -- 50
Testing




Big Balls of Mud in Agile Development – Can we Avoid Them -- 51
Draining the Swamp
         You can escape from the
         “Spaghetti Code Jungle”
Indeed you can transform the landscape
 The key is not some magic bullet, but a
  long-term commitment to architecture,
   and to cultivating and refining “quality”
  artifacts for your domain (Refactoring)!
Patterns of the best practices can help!!!
       Big Balls of Mud in Agile Development – Can we Avoid Them -- 52
Silver Buckshot
There are no silver bullets
                  …Fred Brooks
But maybe some silver buckshot
               …promising attacks
     Good Design
     Frameworks
     Patterns
     Architecture
     Process/Organization
     Tools
     Good People ***

    Big Balls of Mud in Agile Development – Can we Avoid Them -- 53
So Maybe Agile Can Help!!!
Scrum, TDD, Refactoring, Regular
 Feedback, Testing, More Eyes, …
Good People!!!
Continuous attention to technical excellence!
Retrospectives!
Face-To-Face conversation.
Motivated individuals with the environment
 and support they need.
   But, Maybe Mud is why we have Agile….
        Big Balls of Mud in Agile Development – Can we Avoid Them -- 54
It Takes a Village




Big Balls of Mud in Agile Development – Can we Avoid Them -- 55
That‟s All




Big Balls of Mud in Agile Development – Can we Avoid Them -- 56

More Related Content

What's hot

Agile Software Design
Agile Software DesignAgile Software Design
Agile Software Designeduardomg23
 
Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseKenan Sevindik
 
SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010Klocwork
 
Common Objections to TDD (and their refutations)
Common Objections to TDD (and their refutations)Common Objections to TDD (and their refutations)
Common Objections to TDD (and their refutations)Seb Rose
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architectLior Bar-On
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Ajay Danait
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect DoesEberhard Wolff
 
Test driven development vs Behavior driven development
Test driven development vs Behavior driven developmentTest driven development vs Behavior driven development
Test driven development vs Behavior driven developmentGallop Solutions
 
Growing Software and Growing Ourselves
Growing Software and Growing OurselvesGrowing Software and Growing Ourselves
Growing Software and Growing OurselvesDaniel Parkin
 
Getting Comfortable with BDD
Getting Comfortable with BDDGetting Comfortable with BDD
Getting Comfortable with BDDAlex Sharp
 
Agile and Scrum Workshop
Agile and Scrum WorkshopAgile and Scrum Workshop
Agile and Scrum WorkshopRainer Stropek
 
xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012Justin Gordon
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Andy Maleh
 
Clean Software Design - DevNot Summit Istanbul 2017
Clean Software Design - DevNot Summit Istanbul 2017Clean Software Design - DevNot Summit Istanbul 2017
Clean Software Design - DevNot Summit Istanbul 2017Lemi Orhan Ergin
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeFadi Stephan
 
Unwritten Manual for Pair Programming
Unwritten Manual for Pair ProgrammingUnwritten Manual for Pair Programming
Unwritten Manual for Pair ProgrammingLemi Orhan Ergin
 
O'Reilly Webcast: Ten Things Every Software Architect Should Know
O'Reilly Webcast: Ten Things Every Software Architect Should KnowO'Reilly Webcast: Ten Things Every Software Architect Should Know
O'Reilly Webcast: Ten Things Every Software Architect Should KnowO'Reilly Media
 

What's hot (20)

Agile Software Design
Agile Software DesignAgile Software Design
Agile Software Design
 
Contemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With EnterpriseContemporary Software Engineering Practices Together With Enterprise
Contemporary Software Engineering Practices Together With Enterprise
 
(A)TDD The what, why and how
(A)TDD The what, why and how(A)TDD The what, why and how
(A)TDD The what, why and how
 
SCA in an Agile World | June 2010
SCA in an Agile World | June 2010SCA in an Agile World | June 2010
SCA in an Agile World | June 2010
 
Common Objections to TDD (and their refutations)
Common Objections to TDD (and their refutations)Common Objections to TDD (and their refutations)
Common Objections to TDD (and their refutations)
 
Bdd Introduction
Bdd IntroductionBdd Introduction
Bdd Introduction
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architect
 
Behavior Driven Development (BDD)
Behavior Driven Development (BDD)Behavior Driven Development (BDD)
Behavior Driven Development (BDD)
 
What a Good Software Architect Does
What a Good Software Architect DoesWhat a Good Software Architect Does
What a Good Software Architect Does
 
Test driven development vs Behavior driven development
Test driven development vs Behavior driven developmentTest driven development vs Behavior driven development
Test driven development vs Behavior driven development
 
Growing Software and Growing Ourselves
Growing Software and Growing OurselvesGrowing Software and Growing Ourselves
Growing Software and Growing Ourselves
 
Test drive on driven development process
Test drive on driven development processTest drive on driven development process
Test drive on driven development process
 
Getting Comfortable with BDD
Getting Comfortable with BDDGetting Comfortable with BDD
Getting Comfortable with BDD
 
Agile and Scrum Workshop
Agile and Scrum WorkshopAgile and Scrum Workshop
Agile and Scrum Workshop
 
xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)
 
Clean Software Design - DevNot Summit Istanbul 2017
Clean Software Design - DevNot Summit Istanbul 2017Clean Software Design - DevNot Summit Istanbul 2017
Clean Software Design - DevNot Summit Istanbul 2017
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 
Unwritten Manual for Pair Programming
Unwritten Manual for Pair ProgrammingUnwritten Manual for Pair Programming
Unwritten Manual for Pair Programming
 
O'Reilly Webcast: Ten Things Every Software Architect Should Know
O'Reilly Webcast: Ten Things Every Software Architect Should KnowO'Reilly Webcast: Ten Things Every Software Architect Should Know
O'Reilly Webcast: Ten Things Every Software Architect Should Know
 

Viewers also liked

解析データの分析と活用
解析データの分析と活用解析データの分析と活用
解析データの分析と活用Keisuke Anzai
 
20140306 Markezine Day Spring
20140306 Markezine Day Spring20140306 Markezine Day Spring
20140306 Markezine Day SpringKeisuke Anzai
 
Websig 1Day School 20110910
Websig 1Day School 20110910Websig 1Day School 20110910
Websig 1Day School 20110910Keisuke Anzai
 
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)Keisuke Anzai
 
Pragmatic notdogmatictdd
Pragmatic notdogmatictddPragmatic notdogmatictdd
Pragmatic notdogmatictddJoseph Yoder
 
Clipping de imprensa 2016 tv
Clipping de imprensa 2016  tvClipping de imprensa 2016  tv
Clipping de imprensa 2016 tvBrasil Game Show
 
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderTesting System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderJoseph Yoder
 
20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)
20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)
20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)Keisuke Anzai
 
Adobe Summit 2014 Quick Wrap-up
Adobe Summit 2014 Quick Wrap-upAdobe Summit 2014 Quick Wrap-up
Adobe Summit 2014 Quick Wrap-upKeisuke Anzai
 
Summit 2016 Wrap-up for eVar7
Summit 2016 Wrap-up for eVar7Summit 2016 Wrap-up for eVar7
Summit 2016 Wrap-up for eVar7Keisuke Anzai
 
Historieta
HistorietaHistorieta
Historietajaninatd
 
Milk procurement , rural retail & agribusiness[1]
Milk procurement , rural retail & agribusiness[1]Milk procurement , rural retail & agribusiness[1]
Milk procurement , rural retail & agribusiness[1]Ganesh Singh
 
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-Brock
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-BrockPragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-Brock
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-BrockJoseph Yoder
 
Summit 2016 wrap up hands out
Summit 2016 wrap up hands outSummit 2016 wrap up hands out
Summit 2016 wrap up hands outKeisuke Anzai
 
Агентство Недвижимости "Тандем Риэлт"
Агентство Недвижимости "Тандем Риэлт"Агентство Недвижимости "Тандем Риэлт"
Агентство Недвижимости "Тандем Риэлт"Tandem-Rielt
 
今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~
今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~
今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~Keisuke Anzai
 

Viewers also liked (20)

解析データの分析と活用
解析データの分析と活用解析データの分析と活用
解析データの分析と活用
 
20140306 Markezine Day Spring
20140306 Markezine Day Spring20140306 Markezine Day Spring
20140306 Markezine Day Spring
 
Websig 1Day School 20110910
Websig 1Day School 20110910Websig 1Day School 20110910
Websig 1Day School 20110910
 
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
20141216 最適化を進化させるテスト設計とターゲティング ターゲティング編(抜粋)
 
Lean agile pt
Lean  agile ptLean  agile pt
Lean agile pt
 
Pragmatic notdogmatictdd
Pragmatic notdogmatictddPragmatic notdogmatictdd
Pragmatic notdogmatictdd
 
Clipping de imprensa 2016 tv
Clipping de imprensa 2016  tvClipping de imprensa 2016  tv
Clipping de imprensa 2016 tv
 
Clipping marketing 2016
Clipping marketing 2016Clipping marketing 2016
Clipping marketing 2016
 
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph YoderTesting System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
Testing System Qualities Agile2012 by Rebecca Wirfs-Brock and Joseph Yoder
 
20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)
20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)
20150610 3つのPで実現される「喜ばれるエクスペリエンス」とは(抜粋)
 
Adobe Summit 2014 Quick Wrap-up
Adobe Summit 2014 Quick Wrap-upAdobe Summit 2014 Quick Wrap-up
Adobe Summit 2014 Quick Wrap-up
 
Summit 2016 Wrap-up for eVar7
Summit 2016 Wrap-up for eVar7Summit 2016 Wrap-up for eVar7
Summit 2016 Wrap-up for eVar7
 
Historieta
HistorietaHistorieta
Historieta
 
AOM OOPSLA 2009
AOM OOPSLA 2009AOM OOPSLA 2009
AOM OOPSLA 2009
 
Milk procurement , rural retail & agribusiness[1]
Milk procurement , rural retail & agribusiness[1]Milk procurement , rural retail & agribusiness[1]
Milk procurement , rural retail & agribusiness[1]
 
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-Brock
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-BrockPragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-Brock
Pragmatic Not Dogmatic TDD Agile2012 by Joseph Yoder and Rebecca Wirfs-Brock
 
English 106 project 2 ppt
English 106 project 2 pptEnglish 106 project 2 ppt
English 106 project 2 ppt
 
Summit 2016 wrap up hands out
Summit 2016 wrap up hands outSummit 2016 wrap up hands out
Summit 2016 wrap up hands out
 
Агентство Недвижимости "Тандем Риэлт"
Агентство Недвижимости "Тандем Риэлт"Агентство Недвижимости "Тандем Риэлт"
Агентство Недвижимости "Тандем Риэлт"
 
今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~
今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~
今、顧客体験を向上させるために取り組むべきこと ~Experience Business時代を迎えて~
 

Similar to Agile Development Big Balls of Mud - Can We Avoid Them

Software development is hard
Software development is hardSoftware development is hard
Software development is hardEd Wong
 
PM Connect - Agile Workshop
PM Connect - Agile WorkshopPM Connect - Agile Workshop
PM Connect - Agile WorkshopMassInnov8
 
Growth Patterns: Building a foundation for expansion — Driving, or being driv...
Growth Patterns: Building a foundation for expansion — Driving, or being driv...Growth Patterns: Building a foundation for expansion — Driving, or being driv...
Growth Patterns: Building a foundation for expansion — Driving, or being driv...Atlantic Business Technologies (Atlantic BT)
 
Patterns of Evolutionary Architecture - Agile and Beyond 2018
Patterns of Evolutionary Architecture - Agile and Beyond 2018Patterns of Evolutionary Architecture - Agile and Beyond 2018
Patterns of Evolutionary Architecture - Agile and Beyond 2018Shawn Button
 
How Design Triggers Transformation presented by Tjeerd Hoek
How Design Triggers Transformation presented by Tjeerd HoekHow Design Triggers Transformation presented by Tjeerd Hoek
How Design Triggers Transformation presented by Tjeerd Hoekfrog
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the toolingBram Vogelaar
 
What can DesignOps do for you? by Carol Smith at TLMUX in Montreal
What can DesignOps do for you? by Carol Smith at TLMUX in MontrealWhat can DesignOps do for you? by Carol Smith at TLMUX in Montreal
What can DesignOps do for you? by Carol Smith at TLMUX in MontrealCarol Smith
 
Agile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and surviveAgile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and surviveJeff Dalton
 
IBM Smarter Business 2012 - Innovation på IBM
IBM Smarter Business 2012 - Innovation på IBMIBM Smarter Business 2012 - Innovation på IBM
IBM Smarter Business 2012 - Innovation på IBMIBM Sverige
 
Industrial Agility, Come rispondere alla quarta Rivoluzione Industriale
Industrial Agility, Come rispondere alla quarta Rivoluzione IndustrialeIndustrial Agility, Come rispondere alla quarta Rivoluzione Industriale
Industrial Agility, Come rispondere alla quarta Rivoluzione IndustrialePaolo Sammicheli
 
What is Product Management
What is Product ManagementWhat is Product Management
What is Product ManagementMind the Product
 
Design for Start-ups (and everyone)
Design for Start-ups (and everyone)Design for Start-ups (and everyone)
Design for Start-ups (and everyone)Ed Morrissey
 
Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)Bill Scott
 
Agile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayAgile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayGary Pedretti
 
How do you design?
How do you design? How do you design?
How do you design? Deleuze78
 
Spreadthe Word 2008 Creative Brief Sustainability Prompts Lr
Spreadthe Word 2008 Creative Brief Sustainability Prompts LrSpreadthe Word 2008 Creative Brief Sustainability Prompts Lr
Spreadthe Word 2008 Creative Brief Sustainability Prompts Lrtorontodesignguy
 
SSBMInnovation Business Model Design Workshop-1
SSBMInnovation Business Model Design Workshop-1SSBMInnovation Business Model Design Workshop-1
SSBMInnovation Business Model Design Workshop-1Antony Upward
 
Systematic Corporate Innovation Methods Overview
Systematic Corporate Innovation Methods OverviewSystematic Corporate Innovation Methods Overview
Systematic Corporate Innovation Methods OverviewRichard Platt
 

Similar to Agile Development Big Balls of Mud - Can We Avoid Them (20)

Software development is hard
Software development is hardSoftware development is hard
Software development is hard
 
PM Connect - Agile Workshop
PM Connect - Agile WorkshopPM Connect - Agile Workshop
PM Connect - Agile Workshop
 
Growth Patterns: Building a foundation for expansion — Driving, or being driv...
Growth Patterns: Building a foundation for expansion — Driving, or being driv...Growth Patterns: Building a foundation for expansion — Driving, or being driv...
Growth Patterns: Building a foundation for expansion — Driving, or being driv...
 
Patterns of Evolutionary Architecture - Agile and Beyond 2018
Patterns of Evolutionary Architecture - Agile and Beyond 2018Patterns of Evolutionary Architecture - Agile and Beyond 2018
Patterns of Evolutionary Architecture - Agile and Beyond 2018
 
How Design Triggers Transformation presented by Tjeerd Hoek
How Design Triggers Transformation presented by Tjeerd HoekHow Design Triggers Transformation presented by Tjeerd Hoek
How Design Triggers Transformation presented by Tjeerd Hoek
 
Devops its not about the tooling
Devops its not about the toolingDevops its not about the tooling
Devops its not about the tooling
 
What can DesignOps do for you? by Carol Smith at TLMUX in Montreal
What can DesignOps do for you? by Carol Smith at TLMUX in MontrealWhat can DesignOps do for you? by Carol Smith at TLMUX in Montreal
What can DesignOps do for you? by Carol Smith at TLMUX in Montreal
 
Agile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and surviveAgile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and survive
 
IBM Smarter Business 2012 - Innovation på IBM
IBM Smarter Business 2012 - Innovation på IBMIBM Smarter Business 2012 - Innovation på IBM
IBM Smarter Business 2012 - Innovation på IBM
 
Industrial Agility, Come rispondere alla quarta Rivoluzione Industriale
Industrial Agility, Come rispondere alla quarta Rivoluzione IndustrialeIndustrial Agility, Come rispondere alla quarta Rivoluzione Industriale
Industrial Agility, Come rispondere alla quarta Rivoluzione Industriale
 
What is Product Management
What is Product ManagementWhat is Product Management
What is Product Management
 
Design for Start-ups (and everyone)
Design for Start-ups (and everyone)Design for Start-ups (and everyone)
Design for Start-ups (and everyone)
 
Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)Real World Lessons Using Lean UX (Workshop)
Real World Lessons Using Lean UX (Workshop)
 
Agile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we TodayAgile Architecture and Modeling - Where are we Today
Agile Architecture and Modeling - Where are we Today
 
Applied antifragility v_4_2_gen
Applied antifragility v_4_2_genApplied antifragility v_4_2_gen
Applied antifragility v_4_2_gen
 
Design process
Design processDesign process
Design process
 
How do you design?
How do you design? How do you design?
How do you design?
 
Spreadthe Word 2008 Creative Brief Sustainability Prompts Lr
Spreadthe Word 2008 Creative Brief Sustainability Prompts LrSpreadthe Word 2008 Creative Brief Sustainability Prompts Lr
Spreadthe Word 2008 Creative Brief Sustainability Prompts Lr
 
SSBMInnovation Business Model Design Workshop-1
SSBMInnovation Business Model Design Workshop-1SSBMInnovation Business Model Design Workshop-1
SSBMInnovation Business Model Design Workshop-1
 
Systematic Corporate Innovation Methods Overview
Systematic Corporate Innovation Methods OverviewSystematic Corporate Innovation Methods Overview
Systematic Corporate Innovation Methods Overview
 

Recently uploaded

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Agile Development Big Balls of Mud - Can We Avoid Them

  • 1. Big Balls of Mud in Agile Development – Can we Avoid Them? Joseph W. Yoder Copyright 2010 Joseph W. Yoder & The Refactory, Inc.
  • 2. Evolved from The UIUC SAG In the early 90‟s we were studying objects, frameworks, components, reusability, patterns, “good” architecture. However, in our SAG group we often noticed that although we talk a good game, many successful systems do not have a good internal structure at all. Big Balls of Mud in Agile Development – Can we Avoid Them -- 2
  • 3. Selfish Class Brian and I had just published a paper called Selfish Class which takes a code’s- eye view of software reuse and evolution. In contrast, our BBoM paper noted that in reality, a lot of code was hard to (re)-use. Big Balls of Mud in Agile Development – Can we Avoid Them -- 3
  • 4. Why BBoM? Why was this phenomenon so prevalent in our industry? We talk a good game. We had seen where Lisp had failed, Smalltalk was starting to fail, Windows was winning. Why was this? What is there about some systems that failed compared to systems that succeed, even when they seemed better. Big Balls of Mud in Agile Development – Can we Avoid Them -- 4
  • 5. Big Ball of Mud Alias: Shantytown, Spaghetti Code A BIG BALL OF MUD is haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle. The de-facto standard software architecture. Why is the gap between what we preach and what we practice so large? We preach we want to build high quality systems but why are BBoMs so prevalent? Big Balls of Mud in Agile Development – Can we Avoid Them -- 5
  • 6. Big Ball of Mud Big Balls of Mud in Agile Development – Can we Avoid Them -- 6
  • 7. Worse is Better Ideas resembles Gabriel‟s 1991 “Worse is Better” Worse is Better is an argument to release early and then have the market help you design the final product. It is taken as the first published argument for open source, among other things. Do BBoM systems have a Quality? Big Balls of Mud in Agile Development – Can we Avoid Them -- 7
  • 8. Worse is Better (examples) Betamax vs VHS Format  Why did VHS win?  Betamax was arguably a better format Macintosh vs Windows  Mac was easier to use  Far superior in many ways MS Word/Publisher vs FrameMaker  Lot‟s of people use word  FrameMaker is better for books Big Balls of Mud in Agile Development – Can we Avoid Them -- 8
  • 9. What exactly do we mean by "Big"? Well, for teams I consider > 10^2 big and for code I consider > 10^5 big Teams can write good code. Smalltalk is an example. I've seen teams of things written by 10^1 or 10^2 be pretty good and definitely would not be considered to be a BBoM. Big Balls of Mud in Agile Development – Can we Avoid Them -- 9
  • 10. Mud == Anti-Pattern??? In one sense Mud could be seen as an anti-pattern. Reasons Mud Happens: Throwaway Code, Piecemeal Growth, Keep it Working. Similar Forces that lead to BBoM and anti-patterns. Difference is that with BBoMs many reasons why they happened and are even successful (and maybe even necessary given our current state of the art). Anti-Patterns were almost the opposite when you looked at the book. These are counterproductive practices. Big Balls of Mud in Agile Development – Can we Avoid Them -- 10
  • 11. Legacy == Mud? Big Balls of Mud in Agile Development – Can we Avoid Them -- 11
  • 12. Legacy != Mud??? Does Legacy happen within months or a year after the first release? Or is legacy after the second release? What about Muddy code that is released on the first version? Is this a counterexample? Is all Legacy Mud? Smalltalk??? Big Balls of Mud in Agile Development – Can we Avoid Them -- 12
  • 13. Is Mud Normal? Well, just read our paper....there are "normal" reasons why it happens. Maybe it is the best we can do right now. If mud is such a bad thing, why do people keep making it? Maybe if we accept it and teach it more then we can deal with it better and help prevent it from getting too bad. Big Balls of Mud in Agile Development – Can we Avoid Them -- 13
  • 14. Question So, why DO people build Big Balls of Mud?
  • 15. Where Mud Comes From Big Balls of Mud in Agile Development – Can we Avoid Them -- 15
  • 16. Software Decay Big Balls of Mud in Agile Development – Can we Avoid Them -- 16
  • 17. Robber Crops Big Balls of Mud in Agile Development – Can we Avoid Them -- 17
  • 18. Keep it Working, Piecemeal Growth, Throwaway Code Big Balls of Mud in Agile Development – Can we Avoid Them -- 18
  • 19. Copy „n‟ Paste Big Balls of Mud in Agile Development – Can we Avoid Them -- 19
  • 20. The Age of Sampling Big Balls of Mud in Agile Development – Can we Avoid Them -- 20
  • 21. Big Bucket of Glue Big Balls of Mud in Agile Development – Can we Avoid Them -- 21
  • 22. The Mystery of Dark Matter Big Balls of Mud in Agile Development – Can we Avoid Them -- 22
  • 23. They Have a Name Big Balls of Mud in Agile Development – Can we Avoid Them -- 23
  • 24. Agile to the Rescue??? Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. …From the Agile Manifesto Big Balls of Mud in Agile Development – Can we Avoid Them -- 24
  • 25. Question What Agile Practices help us avoid or cope with mud? Does Agile practices such as TDD really help minimize mud? What are we doing RIGHT? What Agile Practices contribute to the problem? Encourage mud? So Is Mud really the best that Agile can do?
  • 26. Do Some Agile Principles Encourage mud? Lack of Upfront Design? Late changes to the requirements of the system? Continuously Evolving the Architecture? Piecemeal Growth? Focus on Process rather than Architecture? Working code is the measure of success! I‟m sure there are more!!! Big Balls of Mud in Agile Development – Can we Avoid Them -- 26
  • 27. Can Agile Help? Scrum, TDD, Refactoring, Regular Feedback, Testing, More Eyes, … Good People! Continuous attention to technical excellence! Retrospectives! Face-To-Face conversation. Motivated individuals with the environment and support they need. Big Balls of Mud in Agile Development – Can we Avoid Them -- 27
  • 28. Do we really need Agile Practices such as TDD to avoid mud? After all, most of the early STers I know never practiced TDD or SCRUM yet we claim these methods helps create clean code and avoid mud more easily. Is this really true or are there other methods that work as well or better at minimizing mud? Maybe it is just good teams of people no matter what method they use? Big Balls of Mud in Agile Development – Can we Avoid Them -- 28
  • 29. Question Is Craftsmanship the Cure? Or maybe it is the problem? Is ascribing poor code to unhygienic habits, even malpractice, is enough, or naive; is mud inevitable? Does quality matter? Quality on the outside vs. Quality on the inside? Does quality just get in the way? Is "Clean" the Answer? Or only part of the answer? Or a sideshow?
  • 30. Shoddy Workmanship Big Balls of Mud in Agile Development – Can we Avoid Them -- 30
  • 31. Amish Furniture Big Balls of Mud in Agile Development – Can we Avoid Them -- 31
  • 32. The Quality Goes In Big Balls of Mud in Agile Development – Can we Avoid Them -- 32
  • 33. Quality Quality Definition: a peculiar and essential character or nature, an inherent feature or property, a degree of excellence or grade, a distinguishing attribute or characteristic Big Balls of Mud in Agile Development – Can we Avoid Them -- 33
  • 34. Quality (Who‟s perspective) “The Four Winds of Artist Scientist Making”…Gabriel important/boring true/false An architect might have perspectives Designer Engineer from an artist to a design or an engineer! cool/uncool good/bad Rich Gold "The Plenitude: Creativity, Innovation & Making Stuff (Simplicity: Design, Technology, Business, Life)“ Triggers and Practices – Richard Gabriel http://www.dreamsongs.com Big Balls of Mud in Agile Development – Can we Avoid Them -- 34
  • 35. Quality by Attributes Quality in everyday life and business, engineering and manufacturing can be seen as the usefulness of something. Usually describes certain attributes. • For example you could describe quality in terms of performance, reliability (fault tolerance), safety, maintainability, reusability, etc… Does quality on the inside mean quality on the outside? Big Balls of Mud in Agile Development – Can we Avoid Them -- 35
  • 36. “Ility” Requirements Accessibility Reliability Compatibility Safety Efficiency Scalability Effectiveness Security Extensibility Stability Maintainability Supportability Performance Usability Covers things such as "constraints“, "quality attributes“, and "quality of service requirements" Qualities are usually described by “ilities” are often called non-functional requirements…but quality can also focus on how well the functional requirements are met (how to measure this?) Big Balls of Mud in Agile Development – Can we Avoid Them -- 36
  • 37. How can we measure? Standards? Is it hard to Maintain? Is it good enough? Does it meet the minimum requirements? Big Balls of Mud in Agile Development – Can we Avoid Them -- 37
  • 38. Brooklyn Bridge John Augustus Roebling The Brooklyn Bridge, 1883, one of the oldest suspension bridges in the United States, stretches over a mile from Brooklyn to Manhattan. On completion, it was the largest suspension bridge in the world and the first steel-wire suspension bridge. Big Balls of Mud in Agile Development – Can we Avoid Them -- 38
  • 39. Brooklyn Bridge John Augustus Roebling His son Washington succeeded him, but was stricken with caisson disease. Manhattan side of the tower it is 10 meters short of the bedrock...rests on sand! Big Balls of Mud in Agile Development – Can we Avoid Them -- 39
  • 40. Brooklyn Bridge Over engineered. Had 6 times what it needed which proved useful over time What happens if we tried overdesign of our systems (a language for printing hello world) or the same line of code 6 times (is this 6 times more reliable?) if (x != a) x = a; if (x != a) x = a; if (x != a) x = a; if (x != a) x = a; if (x != a) x = a; if (x != a) x = a; Redundant components can make our systems more reliable Big Balls of Mud in Agile Development – Can we Avoid Them -- 40
  • 41. Being Good Enough  Quality of being good enough  Does it meet the minimum requirements  Quality has many competing forces…are we designing a system for online orders or for controlling the space shuttle, they have different qualities, thus different patterns and solutions apply Big Balls of Mud in Agile Development – Can we Avoid Them -- 41
  • 42. Many Quality Patterns Written Design Patterns Patterns for Fault Tolerant Software Performance Patterns Small Memory Software Patterns Analysis Patterns Security Patterns Stability Patterns Usability Patterns Imitate or use proven quality techniques Big Balls of Mud in Agile Development – Can we Avoid Them -- 42
  • 43. Implementation Patterns Patterns about creating quality code that communicates well, is easy to understand, and is a pleasure to read. Book is about patterns of “Quality” code. But…Kent states, “…this book is built on a fragile premise: that good code matters. I‟ve seen too much ugly code make too much money to believe that quality of code is either necessary or sufficient for commercial success or widespread use. However I still believe quality of code matters.” Patterns assist with making code more bug free and easier to maintain and extend. Big Balls of Mud in Agile Development – Can we Avoid Them -- 43
  • 44. Does quality really matter? Is "Clean" the Answer? Or only part of the answer? Or a sideshow? Who ever said code was supposed to be pretty? Being clean or cleaning up certain parts of the mud might help in the short run. However, as we've heard before, Lipstick on a Pig and you still have a pig, or dressing it up, still doesn't get rid of the mess inside. But maybe we don't need to clean it all up. Is this even completely possible for something of any size. I claim that at times you will always have some muddy code. There are counter forces to trying to make something too perfect. Perfection is the enemy of Good Enough and sometimes Good enough is all we need. No normal end-user looks into the middle of something and says, that is it...we got beauty. Big Balls of Mud in Agile Development – Can we Avoid Them -- 44
  • 45. Is Craftsmanship the Cure? Or is it the problem? On the average, average companies get average people (law of averages). Is ascribing poor code to unhygienic habits, even malpractice, is enough, or naive; is mud inevitable? Big Balls of Mud in Agile Development – Can we Avoid Them -- 45
  • 46. Question When do we gentrify, rehabilitate, or make- over code, and when must be demolish and/or replace it? (In other words) Is mud reversible? How much have patterns, frameworks, components, even objects helped with mud?
  • 47. Total Code Makeover Can we just Refactor out of Mud? Big Balls of Mud in Agile Development – Can we Avoid Them -- 47
  • 48. Code Make Over? Refactoring can help reverse some mud. The tradeoff is cost and time....maybe with technology. Uncle “Bob” (Robert Martin) even states in his Agile Software Development – Refactoring and Pair Programming book: “Refactoring, which when done as part of Test-Driven Development (TDD) is my personal favorite way to spend my development time” Joel on Software says rewriting it is the one thing you should never do? Yet, we say we should do it…sometimes. Big Balls of Mud in Agile Development – Can we Avoid Them -- 48
  • 49. Reconstruction Big Balls of Mud in Agile Development – Can we Avoid Them -- 49
  • 50. Can tools Help? What is the role of tools in draining these swamps? What kinds of tools and practices might forestall software entropy; is mud preventable? Refactoring Tools, Testing Tools, XUnit, Lint Tools, Code Critics, … Tools can help, but too often too much is put on tools as the solution (silver bullet). Big Balls of Mud in Agile Development – Can we Avoid Them -- 50
  • 51. Testing Big Balls of Mud in Agile Development – Can we Avoid Them -- 51
  • 52. Draining the Swamp You can escape from the “Spaghetti Code Jungle” Indeed you can transform the landscape The key is not some magic bullet, but a long-term commitment to architecture, and to cultivating and refining “quality” artifacts for your domain (Refactoring)! Patterns of the best practices can help!!! Big Balls of Mud in Agile Development – Can we Avoid Them -- 52
  • 53. Silver Buckshot There are no silver bullets …Fred Brooks But maybe some silver buckshot …promising attacks Good Design Frameworks Patterns Architecture Process/Organization Tools Good People *** Big Balls of Mud in Agile Development – Can we Avoid Them -- 53
  • 54. So Maybe Agile Can Help!!! Scrum, TDD, Refactoring, Regular Feedback, Testing, More Eyes, … Good People!!! Continuous attention to technical excellence! Retrospectives! Face-To-Face conversation. Motivated individuals with the environment and support they need. But, Maybe Mud is why we have Agile…. Big Balls of Mud in Agile Development – Can we Avoid Them -- 54
  • 55. It Takes a Village Big Balls of Mud in Agile Development – Can we Avoid Them -- 55
  • 56. That‟s All Big Balls of Mud in Agile Development – Can we Avoid Them -- 56