Application development is usually a non-trivial process unless it is the Hello World standard. It requires a number of skilled people who together have the following talents;
- Business Analyst. These people will consult with the customer and will define the business need and produce a list of requirements typically in a “Business Requirements Specification” document. The outcomes may be a new system, change to an existing system or perhaps some other requirement that may not result in any actual development. Shucks!
- Systems Analyst. The Analysts may be the same person that does the business analysis because sometimes there may be no clear distinction or there is an overlap in the roles. They turn the business requirements into a specification for the developers. They will generally produce a Logical Design document which lists out all the functional requirements using wireframe images of the form and specification for fields and actions, e.g. a button press, and exception cases and messages. They may also produce a Physical design document which is a sort of how-to code the function using pseudo code or similar.
- System Architect. The architect should have a good knowledge of the business in order to determine the end to end requirements in terms of hardware and software. They would be responsible for producing the network diagram and would need to consider system security. There may be a separate security team that would be involved here and there may be a separate hosting group who would be responsible for hardware. The Architect would have to work closely with these groups. The Architect would also have to specify the data model. If the data model is wrong then everybody suffers the consequences.
- Database Administrators. DBAs work with the data model and would ensure that model was normalized, i.e. produce the right table structures and relationships inside the database. The DBA would work with one or more database vendors, e.g. Sql Server, Oracle, MySql, etc. and is responsible for the database sizing and other parameters as well as ensuring a robust backup strategy. It’s a bit sad if you can’t recover your data.
- Software Developers. These are the poor coders who work off the Logical Design or Physical design documents and produce the code within the specific time frame, i.e. the time frame negotiated with, or set by the Analyst and the code better be 100% accurate. But it rarely is and there should be contingency for reworking and retesting the code.
- Testers. These are the developers worst nightmare when they come to the developer and patiently wait to speak while the developer pretends he hasn’t seen the tester. Jokes aside, it is a determined tester who will uncover the problems in the build. A lot of the time, a developer may have wrongly presumed the meaning of the Analyst or it just plain doesn’t work. The importance of testing cannot be underestimated.
- Build Manager. The Build Manager in conjunction with Systems people will ensure the latest release gets deployed at the right time. They produce a deployment plan outlining all the deployment steps, times for each step and rollback plans. They must work with Change Management to ensure that the deployment does not impact other applications and user groups. Importantly, the release must be the correct build. It is essential that the development is under change control management using version control to ensure the correct version of code is used and usually cross references issues that were addressed in the release.
- Project Manager. Somewhere in there, there is a Project Manager who makes sure the project runs to plan. They use all sorts of tools from spread sheets to Gantt charts to plot the utilization and remaining time. They are usually answerable to the boss for delays but should never comprise quality for a timely release.
So, you can see that a software development project has many protagonists and each may come with a pricy salary or contract. Usually when a client receives a breakdown of the costs, there will be so many hours used by each type and the price per hour may be staggering for some and just a lot for the rest.
Luckily, Savvycom has multi-skilled people and the whole project can be undertaken by the few rather than the many. Our own applications can be developed this way where time permits. For customer initiated projects there may be a need to bring on extra resources to ensure a timely resolution. This overall approach to development and our Agile development methodology ensures that we are highly competitive in this business.