What About Coding?
The three degrees of separation I just mentioned may provide the basis for really great software. But there are stumbling blocks. One of the biggest I've seen comes when a "big design up front" approach is inadvertently adopted. In such circumstances, the effort expended in generating artifacts (such as UML diagrams for describing use cases) exceeds the emphasis given to coding. No user I'm aware of executes UML diagrams while running business processes! At the end of the day, the users get features written in Java, C++, or whatever language the vendor uses, so it's important to emphasize the relevance of the coding role.
Good coding requires programmers getting down to the nitty-gritty of generating excellent code to produce the smart features dreamed up by the designers. Coding ultimately distinguishes one application from another. It's important to remember this fact: Use case modeling and architectural design are crucial, but no more so than coding.