If you come to the realization that work in itself isn't evil, you can stop living your life as a waterfall-planned software project too.
Nothing wrong with waterfall-planning if it's done properly. Problem is, it usually isn't.
I understand that sometimes you need to release early and often. This is when you can't conduct proper analysis. Why not? Because you're trying for a home run building something big and you don't know where your project will take you or who will eventually use it. Like a Web 2.0 or social site.
But for the rest of us, waterfall-planning is just another name for the Systems Development Life Cycle (SDLC), which is an excellent way to develop systems. But you must conduct analysis first. You must answer the question what before you examine the question how.
Most developers do not know how to do this. How can you tell? When their waterfall phases take too long (more than a month for analysis for most projects). When they say things like, "The user doesn't know what he needs." Yes, he does. You just have to keep digging until you know.
Once a good programmer learns how to conduct analysis he becomes a good developer. Then projects become like shooting fish in a barrel. You biggest problem will be convincing your customers that you can do what they think can't be done.