by Matt Slot
Every job from technical support to manager was created for a reason, whether to ensure a quality product or a successful release. This month's column describes some of these jobs for those readers haven't worked at a software company. By learning the job descriptions you'll get a glimpse at the big picture, and perhaps start to appreciate the support staff that helps a good programmer ship a quality product.
Software Engineer: Programmers perform most of the work involved in designing and creating new software. They are responsible for writing the code and "unit testing" each piece. Some engineers are responsible for other support tasks, like writing libraries or maintaining source code control.
Technical Lead: Considered the head programmer, this person usually works on the most important part of the project (the graphics engine, the database) while other engineers work on the periphery (dialogs, file access). He's like a surgeon performing an operation, surrounded by a support staff to handle the details.
Project Manager: The project manager is responsible for making sure the team stays focused and the project on schedule and within budget. He's responsible for dividing up the work, tracking time estimates, for bringing in warm bodies if the project falls behind. A project manager may also be the technical lead (if he does some programming) or act as product manager (if he interacts with other departments).
Graphic Artist: The artwork for some projects may consist of an icon and a product logo, but others (like games) require a signficant number of graphics, animations, and cut scenes. A programmer may use rough shapes or scanned images for early versions, but an artist should be involved as early in product development as possible.
Technical Writer: Documentation is a mundate but important part of a successful software product, because it reduces technical support costs and can provide a feature reference for a specific version after time and several upgrades. The writer should be involved in the product design so that he or she has an intimate knowledge of the product, and should track the development process to keep screen shots and tutorials up-to-date.
Quality Assurance: While a programmer may test his code when it's first written or a bug is fixed, QA is responsible for establishing a formal and regimented testing process to validate each feature, each dialog, and each error condition in excruciating detail. It's more than banging on keys, but pushing the program to the limit and giving it the white glove treatment.
Product Manager: The product manager coordinates the production process between development, quality assurance, and other departments, He also establishes a product's feature list, arranges product demos and public beta tests, and finally, answers to higher management. He has the last word on all aspects of development, and he's ultimately responsible for the products success or failure.
Finally, some projects may require a foley artist to produce sound effects or a musician for a soundtrack. Others demand that all the dialogs and data screens are designed by a human interface designer. These tasks may be performed by an existing team member or contracted out, or may be involved enough to justify more staff.
Distribution: The people responsible for packaging and shipping the product and its documentation. They may place the software on store shelves, send it via mail, or post it on the Internet.
Sales/Marketing: The staff who generate the hype and collect revenue on the product. More and more software companies, especially small and shareware developers, rely on web or email software registration.
Technical Support: After selling and shipping the product, someone still has to answer user questions and take bug reports -- even if the documentation is perfect. Patience in the face of adversity, stubborn system software or angry users, is a rather admirable trait. Be nice to your technical support staff.
In a small business, people may double up on the jobs. In a large corporation, there will be entire departments to satisfy the demand. Just like a baseball or surgical team, there are alot of people that contribute to success.
Matt Slot, Bitwise Operator