If you've been coding for a while, particularly if you spend much time with the agile development crowd, you've probably heard the term YAGNI, or "You Ain't Gonna Need It." Simply put, this principle states that we shouldn't spend time adding features or flexibility that you don't need right now, because it's likely that you ain't gonna need it later, either. I recently purchased Russ Olsen's excellent book, Design Patterns in Ruby, in which he makes one of the most eloquent and succinct arguments for YAGNI I've yet seen.
Look at it this way: Barring a sharp blow to the head, as you stand here today you are as dumb as you ever will be.
This dovetails nicely with DHH's recent post over at SvN, I think, about how we can always learn and improve our skills.
If you find yourself having trouble practicing the principle of YAGNI, don't think of it as putting off code until later. Think of it as delegating responsibility to the smarter you that will exist a year from now.comments powered by Disqus