Is Design Dead?


It seems that XP calls for the death of software design. 


Planned vs Evolutionary Design 
Evolutionary design: "The design of the system grows as the system is implemented". 
The benefits of Planned design are varied just like the disadvantages that some XPers use to justify choosing XP instead of Planned. The author mentions the following disadvantages:

  1. You can't think all the issues you'll encounter when programming. 
  1. Designers are so busy designing they don't get much time to code any more. 
  1. Changing requirements. You can deal with the changing adding flexibility into the design to enable an easy change of requirements.
  • One reason in favor to simplicity is economic. Doing work that's only used for a feature needed for tomorrow means loss of effort and so of money.
  • Another reason is that a complex design is more difficult to understand than a simple design. 
In XPE Kent gives four criteria for a simple system.
  • Runs all the Tests 
  • No duplication  clarity of code. XP places a high value on code that is easily read.
  • Reveals all the intention
  • Fewest number of classes or methods
XP is seen as a paradigm that goes against all that planing design stands for but that's not the case. Just because you don't see patterns in an explicit way doesn't mean they are not present.
The author advices to XPers are:
  • Invest time in learning about patterns
  • Concentrate on when to apply the pattern (not too early)
  • Concentrate on how to implement the pattern in its simplest form first, then add complexity later.
  • If you put a pattern in, and later realize that it isn't pulling its weight - don't be afraid to take it out again.
"real XPers don't do diagrams"
That is not always the case. Some people find software diagrams helpful and some people don't. 
"Instead we should just accept that some people will use diagrams and some won't." In programming there is no strict rules, but some advices doesn't harm:
  • keep them short
  • don't try to address all the details (just the important ones)
  • treat the resulting design as a sketch, not as a final design
References:
  1. https://martinfowler.com/articles/designDead.html



Design is and always will be part of programming sometimes is explicit, sometimes implicit, it's done in big proportions or small ones but still there is design.





Simplicity

"Do the Simplest Thing that Could Possibly Work" and "You Aren't Going to Need It" (known as YAGNI).

YAGNI suggest that you "shouldn't add any code today which will only be used by feature that is needed tomorrow."

But What is simplicity?




Some will say patterns are opposite to XP arguing that patterns are over-used.
Patterns being overused doesn´t make them a bad idea. "The question is how you use them."
One theory of this is that the forces of simple design will lead you into the patterns.






Is Design Happening?

The quality of the code base is proportional to the design in a development.

Is Design Dead?
Not at all, the nature of design has changed. 
XP is another programming paradigm that represents a powerful alternative when coding, it uses implicit design the majority of the time

Comentarios

Entradas más populares de este blog

Hidden Figures

The 4+1 View Model