This is a really good read on the concept of "keeping it simple". I think a lot of programmers now a days assume a complex problem requires a complex solution. Instead we need to think in terms of how we can decompose a complex problem into one or more very simple solutions.