Monday, April 27, 2009

Application development and team structure

Application development, or software engineering, is a creative activity that happened to require a lot of different technical skills.

Structure of application development team
In a typical project, there will be roles like business analyst, project manager, developer, quality assurance tester, and support engineer, etc. All of these are usually classified as IT job functions. There are additional business job functions associated with typical application development projects. For example, product development, graphic designs and marketing.

Each company or industry tackles this differently. Usually, smaller companies triy to have a person doing more than one function, while bigger companies have different teams for each function.

Most of the time, the structures are standardized within the company or organization and will not vary that much across different projects.

Divide and Conquer?
No matter what role(s) you are playing, understanding the overall structure will help you appreciate what others are doing and let you leverage any help from them.

Different skills and personalites are needed for each function. A business analyst needs to have excellent business domain knowledge, a project manager needs to be very organized, a software developer needs to understand the necessary technologies, a tester needs to be thorough, a support engineer needs to be able to handle pressure and be creative, etc...

But we should remember, bringing in more people also means more interactions and communications. So, it is very critical to make sure the added expertise outweighs the overhead of having multiple people understanding the common background of a project, which is inevitable. Setting up clear responsibilities and accountabilities are also critical.

Personally, I believe that having a person (or team) involved with multiple functions will be more effective overall, mainly due to the fact of having an "end-to-end" responsibility. However, it will be more difficult to find people with all the right skill sets (and willingness) to do multiple functions. It is also much more difficult to scale to larger projects.

No comments:

Post a Comment