Everyone loves Free. And what is there not to love about the free software movement that has given us such awesome software products like Linux, Apache, and MySQL. The free software movement aims to increase computer user's freedom by providing complete access to software including the source code. Software engineers love it because they can modify the software to meet their needs as long as they adhere to the product licensing standards, which usually state the changes must be shared with the community. Thus, free in this case refers to freedom not necessarily no cost, though the software is often free of charge.
Volunteers write most open source software packages and work in loosely coupled fashion free of the typical hierarchical management structures found in corporations. These projects can be large software efforts with many contributors never meeting face to face yet the products tend to have high quality and advance very quickly. According to a report published by The Linux Foundation, Linux has over 1000 kernel developers, contains over 11.5 million lines of code, and averages 5.5 patches/hr. It is the largest distributed software project in the world.
This raises an interesting question: How can a team of loosely coordinated, volunteer software professionals work effectively to release high quality kernel versions every 2-3 months?
Volunteers write most open source software packages and work in loosely coupled fashion free of the typical hierarchical management structures found in corporations. These projects can be large software efforts with many contributors never meeting face to face yet the products tend to have high quality and advance very quickly. According to a report published by The Linux Foundation, Linux has over 1000 kernel developers, contains over 11.5 million lines of code, and averages 5.5 patches/hr. It is the largest distributed software project in the world.
This raises an interesting question: How can a team of loosely coordinated, volunteer software professionals work effectively to release high quality kernel versions every 2-3 months?
The internet clearly makes communication between members viable through the use of software tools (bug tracking, version control), communication (email, IM, chat), and networked infrastructure (build, web servers). Organizationally, standardization provides a basis for efficiently working together. The Linux kernel effort has defined standards for coding styles, bug submissions, patch submissions process, release processes, directory structure, and more. Standards serve the purpose to increase implicit communication and reduce the need for rich interpersonal communication.
Structurally, Linux is organized into nested subsystems where each subsystem has an owner, known as a maintainer. Maintainers obtain their positions through a strong trust system. They do not have absolute authority for the culture is based on technical merit, respect, and a community first mentality. Interestingly, Linux is driven more by bottoms up development efforts and informal design with a decided lack of documentation and project planning. In short, Linux is a meritocracy where the values are pragmatism not theory, code not talk, honesty, integrity, performance, and openness to name a few. This band of coders has created a world class operating system that represents a serious challenge for Microsoft and is used by companies like Google, Yahoo, and Amazon.
Which raises the question: What unites the Linux kernel development effort and drives it execute successfully?
Schwerpunkt.
Milan Vego explains in an excellent article the schwerpunkt concept comes from German strategic theory and was used by Clausewitz in his classic work On War. He defined it as a singular objective the “weight of effort” should be directed in order to suppress the enemy, such as the capital or a protecting army. The word in German can also mean emphasis. Schwerpunkt provides a unifying concept to allow for decentralization of tactical command without losing cohesion of effort. By World War 2, a German attack would have an overall schwerpunkt and each subordinate commander would select his own schwerpunkt in support of the larger effort. Subordinate commanders were given freedom to balance the commander’s intent with the need to seize the initiative and act faster than the opponent.
The Linux kernel development effort combines common values, standards, and loose coordination and organically unites the disparate developers through a common purpose. The Linux schwerpunkt is to provide an operating system owned by the community for all to use. There are countless objectives of those involved in developing and using Linux that push it to solving a myriad of problem. Yet all these individual objectives are united by the overarching project objective. The result is a fast moving software effort that exploits many opportunities ranging from embedded network routers for the home to massive server farms used in cloud computing.
A capable leader will establish a clear schwerpunkt and ensure every person thoroughly internalizes it. When accompanied with less direct control, the team will demonstrate increasing initiative, sense of ownership, and passion. How can you tell folks have internalized the objective? I like to ask in 1:1s and see what each person says. And it provides an opportunity to emphasize the objective in a setting conducive to follow-up questions. You may also notice individuals recommending actions based on the objective or stop doing activities that are no longer in alignment.
My question for you is: Got Schwerpunkt?

No comments:
Post a Comment