Everyone involved in software development truly desires to do their best if given the opportunity… but during my 20+ years of experience in the field I have observed that each individual’s “best” is attributed to one or more internalized motivations. These motivations are why they do what do best; it is why they care. And, in order to produce quality interactive software, it is essential that at least one team member cares deeply about Business Value, System Value, Process Performance, Application Architecture, System Quality, Development Process, Implementation, Technical Architecture and User Experience.
The diagram below depicts an Optimization Model where individual team members execute their skills and expertise in the context of internalized motivations.
You may be able to recognize the traditional roles (Project Manager, Analyst, Developer, Tester) in the diagram but it certainly doesn’t have to fall out this way. Roles can be restrictive because there is an assumption that if you wear this “hat” then you care about something when indeed you may care deeply about something else entirely. Teams that self organize can use not only their strengths to determine how best to utilize their skills but they can also let their internal motivations set the context of their actions. For example, a team member may use their Individualization talent to Optimize Process Performance by helping everyone on the team understand how their unique contributions support an on-time release. Or, another team member may use their Individualization talent to Optimize System Value by celebrating and rewarding unique contributions to the quality of the application. They could be a Project Manager, Scrum Master, Test Manager, Release Manager or whatever. The important thing is they are doing what they do best to accomplish a goal they care deeply about.