Imagine my surprise when I
received this link from my boss:
http://thedailywtf.com/Articles/FrontAhead-Design.aspx
It became immediately apparent after reading this article
that our company has been using this pattern for a long time. After
all of the conference sessions where we the developers have tried to get the
management to allow us to utilize other design patterns, I have now realized
that we have been using a pattern all along... called
F.A.D. Front-Ahead Design. In a nutshell, FAD involves developing your
applications from the front-end backwards. Afterall, customers never
see the elegant use of design patterns, and since so many developers are not
familiar with the Gang-of-Four Patterns, for example, using them doesn't
particularly get used when projects pass hands.
For all of my concern
of building software "right" over the past year, this article
makes an excellent point. "The average software system has a
life expectancy of seven years. No matter how 'properly' the
system is designed from the start, within the first year of its life,
maintenance programmers unfamiliar with the complex architecture (and having no
help from out-of-date documentation) will turn the system into a complete mess
with bug fixes and change
requests."(http://thedailywtf.com/Articles/FrontAhead-Design.aspx). I can't tell you how many times we have had developers wreck our
perfectly planned project because of this reason. And it is
interesting to note that since most software will only be used for 7 years
anyway, that the user experience SHOULD be the MAIN concern. Of
course, collecting data is important and should function perfectly, but the
users are not going to remember how quickly your web service call executed
(unless your server is so slow that its ridiculous). But rather, how
enjoyable the application was WHILE they were submitting data and purchasing
from your site.