Should we vote developers off the island?
Here’s an idea: What if commercial and enterprise development teams were organized and managed like open-source teams? That is, individual architects, developers and testers could choose which projects to join up with, based on projects anywhere in the company. The members of each team would be organized as a self-selected meritocracy, using a set of operating policies and structures like you find at Apache or Eclipse, or even at the Wikipedia.
In this scenario, each project’s meritocracy – not IT management – would decide who its project leaders were, elect/appoint committers, and so-on… and also be able to “vote developers off the island” if they did shoddy work, missed deadlines or failed to make significant contributions.
With salaried software developers, as long as they are contributing to teams in a meaningful way, they stay on the payroll. There might be even some sort of meritocratic way to set pay levels (i.e., Johnny was just voted a promotion to Tester III, and Sharon to Developer VI). However, if Johnny was not making a significant contribution to projects, he might not be promoted, and ultimately he might lose his job. Contractors would depend on votes, or other meritocratic analytics, to keep their contracts.
Some open source projects, such as the ones mentioned above, use a meritocratic system to become incredibly efficient at managing large, diverse projects. These projects bring together developers with many different skill sets, different interests and even different corporate cultures — and deliver great software without “corporate” management or overhead.
Enterprise and commercial dev teams have learned a lot from open source communities about agile methodologies. Perhaps there are lessons for commercial dev managers in open source community organizational structures. What do you think?