Roles and Responsibilities in Enterprise Application Development
Essentially there are two sides involved when developing an application. The client team (aka stakeholders) and the development team. The stakeholder is paying for a product to be created and the developer creates that product.
Stakeholder: (aka Client)
A stakeholder is someone tasked with getting an application created. Normally there are multiple stakeholders. It could be a CEO who has decided to create a new app to simplify their companies customer service. Or a CEO might put a product manager in charge.
The product manager and CEO are both stakeholders. Anyone who has an interest in getting the work done is a stakeholder, regardless of their title. In many cases, it’s a committee.
To effectively manage a project, you must have a single point of contact between the stakeholders and the developers. Any other method inevitably creates problems and stalls progress. I have worked on projects with multiple stakeholders (all sending conflicting requests because they have not communicated with each other) and it can quickly spiral out of control.
The client team should assign a single individual project manager to handle all communication between the client and the development team. The development team also needs to provide a project manager as a single point of contact.
If you are a stakeholder in this position and you are thinking: “we don’t have a project manager“, then congratulations! You’re the project manager.
The project managers job is to keep the project on schedule and within scope. They will keep in contact with all the people on their team and make sure the project is not blocked. They also facilitate solutions and communication among all team members. A good project manager can head off issues before they escalate into a major problem or crisis.
While the project manager is the single point of contact, they know when to get the right people together to answer questions and make decisions. There will be times that you need to have meetings involving multiple team members. The single point of contact rule is to ensure that all requests are trafficked through one source. This keeps developers from getting multiple (and often conflicting) requests, and it saves stakeholders from answering questions multiple times.
Often the lead developer or system architect is also the project manager. A project manager needs to be directly involved with the requirements document. Large projects may require their own project plan to track meetings, milestones, and deliverables.
The product manager (not to be confused with the project manager) is responsible for defining the scope of work. The scope outlines all the features and functionality required. It also defines the boundaries of the project. The scope of work will often be delivered in an RFP.
Smaller projects will not need a dedicated product manager. Most companies with product managers also have a development team. The primary role of the product manager is to create the scope of work. This can also be done by the project manager or another stakeholder.
The scope of work is the precursor to the requirements document which should be created in conjunction with the system architect during the discovery phase.
Weeks of programming can save you hours of planning.
The system architect is responsible for designing the infrastructure of the application. They work closely with the stakeholders to ensure that the developers clearly understand the requirements. A good architect will come up with creative technical solutions to real-world problems. They will design a system that anticipates future growth, automates repetitive tasks, and creates a great user experience.
Complex systems may also require a high-level architecture diagram. This describes the core database structure, how data moves through the system, user roles, and administrative functions. It should also define the technology to be utilized.
Technical documentation created by the architect (to be used by the development team) will describe both the back-end and front-end systems, and may also cover infrastructure like cloud hosting server configurations.
The lead developer is in charge of delivering all the components identified in the specification and project scope. They coordinate and schedule their development team and are responsible for all development work. They help connect the front-end with the back-end and keep the project moving.
The database is one of the most critical parts of the application. An experienced database designer will be able to build the most efficient normalized table structure for your application. I have seen plenty of projects where the back-end developers end up having to jump through hoops to make up for poor database design. It’s not something that should be taken lightly.
Back End Developer
Other web developers are assigned tasks to build portions or components of the system and deliver them. They write the back-end code and deliver it to the lead developer for deployment and testing.
Back-end developers work with server-side languages like PHP. You may have heard the term full-stack developer, this means they work across the entire server stack. The most popular opensource stack is called LAMP which stands for Linux, Apache, MySQL, and PHP. Linux is the server OS, Apache is the web server software, MySQL database, and PHP programming language.
There are other configurations such as WINS (Microsoft Stack) and there are new stacks like MEAN (Mongo, ExpressJS, AngularJS, and NodeJS) but these are not really appropriate for enterprise because they do not support joins or normalization so we will move on.
Front End Developer
The graphic designer creates the graphical user interface (GUI or UI) for the application (or website). They set the colors, icons and screen layouts that will be used to control the application. Graphic designers for application UI use the same skillset as a website designer. Most web-based applications use a web browser as the primary interface.
Last but not least, the diligent Quality Assurance Tester. This person is responsible for analyzing the requirement and scope documents and then creating a list of tests (called test cases) that the application must pass before it is considered complete. They find and report bugs and generally drive the developers crazy.
The focus of this article is enterprise application development, but these concepts apply to almost all software development. With smaller projects or smaller teams, many roles may be filled by the same individual. Most problems arise when one of these areas are neglected, either by omission or inexperience.
If you are looking for help with your project or a complete end-to-end custom enterprise development solution get in touch with me and let’s see what we can do, you can email me or use the contact form.
About the author:
Wesley E. Warren has been an enterprise architect and developer for over 15 years. You can connect with him on LinkedIn.