When you are designing large middleware integeration efforts , it is quite easy to get into code first integerate later but From classic COM to Biztalk integeration it is always Contract First. Be it an IDL or a Schema . This is generally considered the best way to approch service design. The approach is to design schemas first then generate code from that.
More on Contract First approach ..
http://www.thinktecture.com/
http://www.iona.com/blogs/vinoski
Meanwhile I heard MS is planning to drop support for IDL . Remeber those good old COM days where you could cleanly differntiate the interface from the implementation
Sign the pettition to save IDL here