I watched 300 for the second time last weekend and it got me thinking about the effectiveness of a small group of highly talented individuals versus a much larger group of modestly talented individuals.
For those who haven’t seen 300, it is an adaptation of the Battle of Thermopylae and chronicles the last stand of a highly trained elite group of 300 Spartan Warriors against the Persian Army which numbered more than 300,000+ troops. Using both the terrain and their superior fighting skills, the 300 Spartans (and 700 Thespians) were able hold back the Persians for three days and give the other Greek City-States enough time to prepare for a more effective defense.
Being the uber-geek that I am, I couldn’t help but draw parallels to the current shift in software development to move towards smaller, more effective teams of talented developers, versus the older practice of building software by using hordes of weaker developers. With Agile practices quickly supplanting traditional Waterfall methodologies, smaller teams are becoming more common in the software industry. Even larger projects are broken out into smaller pieces that are built by smaller teams. Inevitably, a smaller team would require all of the team members to be very talented as even one sub-par team member can weaken the entire team.
Let’s call these highly talented individuals, the Spartan Developers.
So how do you recognize a Spartan Developer? One way to is to find out how they learn to become better at their craft. A good start on the subject is from the preface of Steve McConnell’s Code Complete.
Based on this diagram, a Spartan Developer stands out due to their experience and their willingness to learn. Their tools are magazine/internet articles, technology references (books or websites), software engineering books, and programming specific books.
However, I find this diagram to be slightly incomplete, and I would add one more piece near the bottom.
User Groups and Conferences are some of the best places to meet Spartan Developers. No craft can be fully learned and understood without some effective demonstration. Also a Spartan Developer understands the people component of software and knows that networking and learning from others is crucial to success in one’s career. Finally, a Spartan Developer likes to work with other Spartan Developers, because they know that their success is built on the success of their team as a whole. Just as Spartan Warriors relied on their Phalanx to be an effective force, a Spartan Developer relies on his teammates to get the job done.