• I've worked with top notch coders, meaning they write great code that isn't buggy, runs well and fast, tests well.

    And doesn't meet my needs.

    Communication is key, and it's important that you learn to communicate and listen to what is needed without interpreting that too much. Your skill as a code doesn't necessarily predict your skill as a developer/programmer. I think that's the easy part. The hard part is understanding what you need to build.

    Get to know your end users, talk to them, understand their jobs. Only then can you communicate.