Ken Schwaber had a conversation with Scott Hanselman about the concept of “done”. He said that software developers have a habit of culling down all the generally accepted practices of software development except the writing of code. He says that, when pushed, software developers reduce quality in an effort to produce a software product by a certain time. This leads to a huge debt that must eventually be paid.
These generally accepted practices include things like unit testing, refactoring, design, documentation, etc. In the case of producing an API or and SDK, I believe these practices includes community involvement. When a team developing an SDK, API, or IDE “goes dark”, they’re not doing their job properly–they’re ignoring the fundamental reason for their work: the customer. This is a huge problem in our industry because software developers are effectively trained that schedules only include writing code and meetings.
I agree with Ken and would say that part of an Agile process includes a significant amount of time to communicate with customers need be scheduled.
Even if not professing to using an Agile methodology, if unit tests, integration tests, refactoring, and research don’t take up a significant amount of the software development schedule or there’s no scheduling of a significant amount of time to communicate with customers; the team is inept. In this day and age, I would hazard to say its downright felonious and fraudulent.