November 12, 2004
State of the art (You are going to need it)
There is a design principle for software development called You Aren't Going To Need It, or YAGNI. It postulates that your design should focus on the task at hand, and that your implementation shouldn't contain functionality that might only be needed for a future revision.
The cases for and against YAGNI are plenty, and I'm not going to argue for either side today. What worries me instead are the frequent encounters I have with people who distort YAGNI to a point where it serves as an excuse for a job done poorly.
Like with most things, there is a state of the art for IT projects. The state of the art is a set of best practices that have proven themselves and are generally considered a good idea. Your clients have a right to demand no less than the state of the art from you. If, in 2004, you deliver a website with splashes of presentation spilled throughout your content, you are not delivering state of the art. If, in 2004, your software project hatches as an untiered mess of procedures, you are not delivering state of the art.
The world is a difficult and flawed place. Sure enough mapping it onto a piece of software while staying committed to a certain standard is no trivial task. This doesn't make me any more susceptible to your lame excuses why you're not even trying.