I agree that it always pays to do things the Right Way the first time through, but I completely disagree with the second half of the article where he argues that you should make your code as generic as possible from the get-go. In my experience this never saves "countless hours down the development line", it just wastes more time up front when your clever generic solution is never actually needed.