Open source meets capitalism: Collaborate by competing | Opensource.com
Open source meets capitalism: Collaborate by competing
The internet has had a profound effect on many areas of commerce. One area the internet has not yet had a profound affect upon is how people are organized to perform work. We believe this is about to change and change dramatically. TopCoder is an early example of a ‘pure internet’ model which performs complex work at scale.
- Build “natural,” flexible hierarchies
- Focus the work of management on a higher purpose
- Increase trust, reduce fear
- Embed the ethos of community and citizenship
- Redefine the work of leadership
- Reinvent the means of control
- Rebuild management's philosophical foundations
The management team that founded TopCoder came from traditional software development disciplines. TopCoder was established to give great developers a forum in which to establish, hone and broadcast there skills—for fun and profit. From a consumer perspective, software development is considered a dark art—with constant cost and time overruns and poor quality. The business side of TopCoder seeks to make this experience a thing of the past.
Central to the TopCoder model is the idea that there are two distinct elements to the software development process—creativity in design and discipline in engineering. Most development models eschew one for the other or expect creativity and discipline to be intertwined. TopCoder separates these functions and has developed models that support each in the context of a whole.
Key innovations & timeline
Managing and directing a virtual online community required a complete re-thinking of management paradigms. As a platform, TopCoder includes hundreds of tools, incentive systems, communication systems and processes that help members create, define, complete and assess over 30 different types of work and their derivatives. At the core of the TopCoder model is the development methodology, a virtual ‘software factory’ approach which allows complex projects to be built quickly, cost-effectively and with a high degree of quality. This involves systematically breaking down larger applications into smaller components or granular pieces of work, and then presenting those pieces of work to a global pool of talent for parallel completion. Each piece of work is posted and completed in the form of an online competition at every step of the TopCoder process, which includes Conceptualization, Requirements Specification, Architecture, Component Design and Development, Assembly, Certification and final Deployment. Components that are categorized as ‘generic’ are returned for use in a component catalog for future reuse on client projects (a generic catalog which exceeds 1,500 discrete components in Java and .NET).
TopCoder runs two flavors of rated algorithm events which both take place in the Algorithm Competition Arena; Single Round Matches (SRMs) which are held twice a month, and the annual TopCoder Open (TCO), an advancement tournament culminating in a live, onsite final. The date and time of SRMs are announced via the event schedule on TopCoder's web site as well as via community emails, news item postings and forum discussions. The details on each of these events are posted to TopCoder's site as they are finalized. Participants can also view the information and details of most past tournaments. TopCoder SRMs can involve upwards of 1,800 competitors each week and TopCoder tournament registrations often exceed 10,000.
TopCoder membership is required in order to log into the TopCoder Arena, which is a pure Java application that can be run as either an Applet from within a browser or as an application within Java Web Start. The arena is where all of the competition action takes place. It is where each coder can practice, compete, or simply enjoy being a spectator.
Participant numbers on any given client software competition can range from a minimum of one successful passing submission to more than 60 with an average of 10-20 registrants. A typical development cycle from conceptualization to delivery can often involve 30 or more discrete competitions. TopCoder registration is also required to participate in client competitions, which are announced via the Active Contests page specific to the given phase of the development process–Conceptualization, Requirements, etc. Participants can view information and details of past client software competitions on the Application Statistics page specific to that phase of the process.
TopCoder presents a range of extrinsic and intrinsic incentives for participation – members can not only earn significant prize payouts, interface with leading technology firms and improve their skill sets through competition, but they also have the opportunity to earn peer recognition and status in a highly respected and professional community. The element of enjoyment–based motivation, or simple fun, which allows a person to feel their creativity is appreciated, is a key driver in TopCoder’s incentive-rich environment.
From a delivery perspective, TopCoder is considered an ‘outcome’ based model. A TopCoder Platform manager or a member co-pilot from the community takes a problem, defines it and then breaks it down into manageable pieces that will become the subject of the competitions. Whenever possible, these pieces are developed and delivered in parallel, then assembled, tested and deployed – all through competition. Depending on the project, work may begin at any point along the sequence of the TopCoder process, with the output of each stage becoming the input to the next.
Competition structures begin with a description of the work required and a prize amount to be awarded to the winners. TopCoder members register for the competition, then submit their solution before the contest deadline. The submissions are then subject to a rigorous peer-review performed by other top members of the community who are certified by TopCoder. Using a rigorous scorecard system, a winner is determined, the prize money is awarded and the customer takes ownership of the solution. Throughout the project development lifecycle, the customer doesn’t pay for a single hour of developers’ time – they pay a predetermined amount for a piece of software that is delivered at a predetermined deadline and met every predetermined requirement.
While most businesses are concerned with what people are doing, TopCoder is concerned with what people do. This has huge implications to management systems. TopCoder is a ‘pull’ system, never having the ability to tell someone what to do or how to do it.
From an adoption standpoint, this is very difficult. People are used to working directly with people and ‘controlling’ them. We consider this an artifact of industrial/military management paradigms that will wane with time. The world is too interconnected with too many opportunities for ‘workers’ not to find something they are good at and outlets for those skills. We believe we will see this first in the knowledge disciplines to be followed by labor markets as manufacturing and construction become more component based and distributed.
TopCoder is an innovative model in the extreme, hence many of the moonshots are covered in the model which ensures: that management’s work serves a higher purpose; that the ideas of community and citizenship are fully embedded throughout management systems; that management philosophy is reconstructed from its very foundations; that the pathologies of formal hierarchy are eliminated; that fear is reduced and trust is increased; that the means of control is reinvented, and that the work of leadership is redefined.
Let's unpack how the TopCoder model tackles several of the management moonshots:
Focus the work of management on a higher purpose.
TopCoder is management theory in practice. Most of TopCoder’s management theories are derived from practice (yes, backwards, but it seems to work). The basic idea underlying TopCoder’s management practices are that people are good, and that they want to do their best work. It is TopCoder’s job, from a management perspective, to allow people to work on things they want to and make a living – or supplemental income - from doing what they love.
Fully embed the ideas of community and citizenship in management systems.
TopCoder often describes itself as “a community that has a company”, not the other way around. This is simply a recognition of fact. The fact is the company could not survive without the community. No benefit – for TopCoder or its clients – could or would be gained without the community. TopCoder, the company, has the job of setting policies and direction which most benefit the community and all its interactions. To fail in this responsibility would be immediately evident, the community would disappear.
Rethink the philosophical foundations of management.
Much of TopCoder’s management process and philosophy has been drawn from other systems – ecosystems, political systems, economic systems, etc. With a relatively large community that is constantly engaged, understanding underlying dynamics of how people interact is imperative for the health of the community. This will be the constant focus of both the company and community.
Build "natural" flexible hierarchies.
The TopCoder business model relies heavily on self-selection and merit. There are no command and control aspects to the model. We do not have a model that allows us to ‘tell’ anyone to do anything. Work, incentives and rewards are simply placed in front of the community for members to decide – at an individual level – whether or not they wish to participate. Incentive and reward systems – an area of primary importance – span from the very short-term to the very long.
Reduce fear and increase trust.
Because TopCoder is a community based business – meaning the value of the business resides within the community, we have no ability to be secretive or non-transparent. Trust, essentially is our stock-in-trade. Even the slightest question in terms of fairness or any hint of transgression would rip through the community with devastating speed.
Reinvent the means of control.
TopCoder is an interesting mix of people who are free to participate in what they wish within an architecture characterized by an extremely, high level of discipline – (software?) engineering. Control mechanisms are process and community functions (peer-review, testing, etc.). It is interesting to note that the community itself is responsible for the development of processes and are the primary participants of control (judging, etc) mechanisms. We take the view that the experts reside in the community, hence they should be the architects of the platform.
Redefine the work of leadership.
Leaders in TopCoder emerge; they are not ordained. Leadership requires an interesting mix of skills – some soft, some hard and all merit based. Standing in the community is a mix of what you have done, what you say and what, perceived by the community, you motivations are. No one ‘owns’ this community and ‘leaders’ are treated with a great deal of skepticism until proven otherwise.