23.07.2012 Views

Design Patterns Explained

Design Patterns Explained

Design Patterns Explained

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

23O Part V • Handling Variations with <strong>Design</strong> <strong>Patterns</strong><br />

This is true in<br />

software as well: we<br />

focus on immediate<br />

concerns and ignore<br />

the longer term<br />

becomes tough to find things as the piles grow. Disaster often comes<br />

in the long run from suboptimal decisions made in the short run.<br />

Unfortunately, when it comes to software development, many people<br />

have not learned these lessons yet. Many projects are only concerned<br />

with handling immediate, pressing needs, without concern<br />

for future maintenance. There are several reasons projects tend to<br />

ignore long-term issues like ease of maintenance or ability to<br />

change. Common excuses include<br />

• "We really can't figure out how the new requirements are<br />

going to change."<br />

• "If we try to see how things will change, we'll stay in analysis<br />

forever."<br />

• "If we try to write our software so it can add new functionality,<br />

we'll stay in design forever."<br />

• "We don't have the time or budget to do so."<br />

The choices seem to be<br />

• Overanalyze or overdesign— I like to call this "paralysis by anal<br />

ysis," or<br />

• Just jump in, write the code without concern for long-term<br />

issues, and then get on another project before this short<br />

sightedness causes too many problems. I like to call this "aban<br />

don (by) ship (date)!"<br />

Since management is under pressure to deliver and not to main tain,<br />

maybe these results are not surprising. However, with a moment's<br />

reflection, it becomes apparent that there is an underlying belief<br />

system that prevents many software developers from seeing other<br />

alternatives— the belief that designing for change is more costly<br />

than designing without considering change.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!