Error processing SSI file
Error processing SSI file
Checks & Balances
by Jit Agarwal
The Art of Managing Product Development

Running medium to large-scale development, like any large-scale project, is more of an art than a science. However, there are some principals, which can facilitate managing a development organization to a successful product launch.

Typically, a development organization is comprised of three major and distinct functions and as such should be divided along those lines for organizational purposes. These three areas are: Development, Program Management and Test. While there are more than just three functional areas of development, like: operations, hosting, user education, etc. These three areas occupy the bulk of the responsibilities and tasks of the development team. As such the other areas can often be collapsed into these three larger areas. Key to managing these three organizations within the development team is to outline not only what each is responsible for, but also what each is NOT responsible for and where each is dependant upon the other two for success. The best analogy for comparison purposes would be a three-legged stool. No two legs can independently support the stool, and no one leg is more important than the other three. They must all work together to achieve the same objective. Provided they are, they can support massive amounts of weight on top of the stool.

First, lets examine Development's leg of the product development stool. Many technology centric companies tend to take the perspective that Development should lead the entire effort focused around product development. Given the nature of the work being performed in this organization it might be understandable to assume that this part of the organization should be the one to lead the entire development effort. Typically, organizations that have Development single-handedly leading the entire effort, quickly find that this is the less than optimal way to organize their efforts. Development's core responsibility should be focused on what technologies the development effort should employ and utilize. It should be their core responsibility to code the product as per definition from Program Management. They are responsible for the final implementation, because the mantra "the code is the spec." is a truism and customers' only experience will be with the product, and not the specification. Development is NOT responsible for defining what customers want in the product, nor are they focused on the world after their product ships. Development's responsibility is to develop the products as per the requirements outlined, utilizing technologies they feel are most appropriate, and in a manner that yields products on a mutually agreed upon time table.

The next leg of the development stool is Program Management. High tech companies tend to pick Program Management to head product development, if they don't pick development. Again, this can seem a rational choice, because Program Management is responsible for specifications and schedules. As such, Program Management is the one group most people turn to, through out the development cycle, to check on the status of the product. However, you should not fall into this trap. Because many organizations in which Program Management leads the development effort tend to become overly process oriented, also extremely focused on schedules, and less focused on the code, the customer experience or delivering a product to market. Program Management should be responsible for gathering customer feedback either from marketing or directly from customers. Program Management is then responsible for incorporating that feedback into a specification document, this articulates features and functions to the degree that a developer can code from it. Finally it is responsible for managing the development process to ensure that the product goes out the door on a mutually agreed to time table. Program Management is NOT responsible for determining what technologies are going to be used in developing the product nor micro-managing the development organization or its priorities. Program Management often falls into this trap and it can cause the whole effort to fail as well as create a considerable amount of organizational friction. Don't let this happen.

The final leg of the development stool is Test. Many high tech companies view Test as the whipping dog of the development organization. It often doesn't get quite the attention and respect it deserves, nor does it usually get an equal seat at the product development table. Don't fall into this trap. The Test leg of the stool is an equal with all the others and needs to be treated as such. Test, and often it will incorporate not only the testing of the product for QA, but also operations, after sale service and UE as part of the organization, is key to managing a product organization. The Test organization's core function, as the name implies, is to test the product against QA metrics to ensure that it will meet high customer satisfaction. Test is your last, and sometimes only, line of defense to ensure that the product developed meets the specifications and requirements established at the onset of the product development cycle. If the "code is the spec", then Test is your litmus test to ensure the code is up to your spec. Test is also responsible for providing final approval for the code in a product that will be shipped to customers. This enables Test to effectively check the other two legs of the development stool. Test is NOT chartered with defining what customers need or want, as this is outside the scope of their responsibilities, nor are they focused on the technologies used or the coding of the product. Sometimes Test can fall into the trap of trying to code the product, as it goes through the process of testing its quality, this can cause a series of problems, the least of which is organizational friction. This should be avoided at all costs.

These three organizations work in a checks and balances model. Program Management drives the specifications and schedules, providing a check against Development and Test to ensure that the product comes out in a reasonable timeframe. Development is responsible for coding the product and selecting the technologies, ensuring a check against Program Management and Test creeping in random customer feature requests and limiting the scope of the project. Test is responsible for testing the product and giving final approval of product to ship to the market, providing a check against low quality products being pushed out by Program Management or weakly developed code from Development.

Overall, management of the entire development organization should lie in an individual that has all three of these organizations reporting to him or her, and preferably experience in all three and not in any one of these three. It is the same as the stool having a top to which all three of the legs are attached, rather than having one of the three, legs serve as the base connecting them together.

Error processing SSI file