Great things happen in small packages and in the case of software, small teams can do great things. Companies like Google, Microsoft, Facebook, Twitter, Linux, PayPal, and eBay all started with small teams of highly dedicated and talented people possessing laser-like focus.
They produced industry-changing products and services. I like to compare software development teams with sports teams. You play basketball with five team members on the court all doing their respective jobs. Baseball teams have nine players (to cover more ground). How many people are on your software team?
The most effective software development teams are the small ones. In his book, “The Mythical Man Month” Frederick Phillips Brooks offers numerous stories about his days managing the development of the Brooks OS/360 operating system. Brooks explains how the development team for OS/360 went from 200 team members to over 1,000 team members. Brooks discovered that development velocity didn't increase five times but actually slowed down. He provides some useful insight as to why this happens. As the team size increases, so do the number of unique communication channels. It becomes very difficult to manage the communication process in teams this size.
The main solution Brooks proposes is the concept of small surgical software development teams. Surgery teams are composed of one or two doctors performing a procedure supported by a small team of other assistants. This metaphor works great when it comes to software development. An ideal software team has an architect, a small group of developers and a small support staff. The teams focus on a small set of activities and its lines of communication are small.
Brooks likes this idea because it lowers the number of communication pathways. I like it because it increases the velocity of knowledge transfer. It is much easier to share knowledge in a small group versus a large one. Think of a university lecture hall environment with 200+ students versus a small class of 15-20 students. Which environment provides the best venue for knowledge transfer?
This leads me to my action items for this issue's column. As a reader of CODE Magazine you have already demonstrated a high interest in knowledge transfer. Now I want you to go one step further. I want you to branch out and explore some small group settings to increase your knowledge further. Consider some of these small group settings.
User Groups
Most cities of reasonable size have one or more software development user groups that you can join. My city has .NET, Agile, Ruby, Oracle, Linux, Adobe and other user groups. Go find one and attend a meeting. The value of interacting with other developers is priceless. If your city does not have a user group, start one. I guarantee there are other developers in your area that want to get out and share ideas.
Code Camp, Give Camp and Bar Camp
You have probably heard about the many small regional software development conferences available these days. Code Camps are free one or two-day conferences that mimic larger conferences. They are also VERY open to new speakers and are used to grow the speaker bases in different cities. Give Camps (www.givecamp.org/faq) are development conferences where different teams get together to write real software for charitable organizations. Finally, Bar Camps are ad-hoc development conferences that follow an Open Space form of organization. There is no pre-defined session list or set of speakers. Bar Camps kind of just happen. They are fun.
Small Conferences
I have a bias in favor of small conferences. Speakers and attendees want to have a high rate of knowledge transfer. At small conferences, speakers are more accessible. The smaller speaker/attendee ratio promotes more personal interaction. Small conferences are generally in smaller venues meaning there is less walking, fewer session rooms, and meals are closer. Generally, there is only one pub in the hotel, which is where a lot of knowledge and beer transfer happens. Overall, small shows are less hectic for all people involved so your potential for communication is higher. Allow me to talk about a few small conferences that I enjoy.
No Fluff Just Stuff
The first that comes to mind is No Fluff Just Stuff (www.nofluffjuststuff.com ). NFJS is a vendor-agnostic conference that focuses on a number of different languages (Java, Ruby, Scala, JavaScript) and software development techniques (agile, scalable, design focused, etc.). You can find this travelling road show in 15+ locations around the USA in the coming months. They only run over a weekend. You can register for $825 - $925, which is less than a big conference, and the speakers are awesome (including CODE Magazine authors Ted Neward and Neal Ford). At a show like this, you give up fluff like an expo hall and conference parties.
QCON
QCON 2009 (http://qconsf.com/) happens in November in San Francisco, CA. I fell in love with this conference last year because of its very diverse content. QCON had a great set of sessions on .NET development, object-oriented technology, Agile development, Java development, and Web development. This conference lists some amazing speakers.
MonoSpace
Another conference to consider is the October 2009 MonoSpace conference (http://monospace.us/) in Austin TX. The Monospace conference tries to take .NET developers in new directions, including beyond the Windows-only platform. Monospace has a number of unique characteristics including low cost ($249 at press time), diverse content, Mono development (.NET on Linux), F#, Amazon Web services, Moonlight (Silverlight on Linux) and others. The conference founder (Scott Bellware, another CODE Magazine author) has launched a number of successful conferences and software movements so I expect great things from this show as well.
So now it's time to put down this magazine (but come back later () and get out into your community.
See you on the road.
Rodman