I've been developing software for quite a few years. One of the issues that seems to come up again and again in my work is this concept of design and implementation. I recall it being a significant part of my education at the University of Waterloo's Computer Engineering program as well. The message was always the same. Never write code first. First you must design software by writing a design document, flow charts, pseudo-code, timing charts... then it's merely a trivial matter of implementing it. Make note of the attitude here given towards implementing. The real work is in the design, and it's just a trivial matter of implementing it. It sounds so simple doesn't it? Now, how often does this work out in real life?

The real work is in the design, and it's just a trivial matter of implementing it...

Excuse me for cherry picking (and perhaps going off topic a little.) Something just a nerve, and I'd like to rant for a moment :-)

When I read/hear comments like the above from developers in the workplace (an all too common occurance) I already know what I'm dealing with.

That is to say, a second rate programmer. Usually arrogant and know-it-all too. Yet when it comes down to the crunch, they'll need *my* help making their "pie in the sky" designs work (usually with substantial modification.)