jenny downing la terrasse cc2 via flickr

From First Contact to Launch: The Who’s Who of the Software Project LifeCycle, PART II


Evaluating and Re-evaluating the Development Team

In the first part of this series, we looked at the critical points of hiring an employee and initiating the first contact with a vendor. We’ll now turn to the third (I won’t say final because staffing should always be continually re-evaluating team members as they work through projects) key point for staffing a software project: choosing a team to execute the client’s vision. A typical software project will have a development team consisting of about six roles, some of which may overlap in a single employee depending on the timeline and scope of the project: the Account Manager, Project Manager, Technical Lead, UI/UX Designer, Tester, and Developer.
The Account Manager (AM) will act as a business liaison and point of access for the client. Any worries or concerns the client may have with the team should flow through the AM. Any on-site visits should be lead by the AM, and they should be available to help shape and mold conversation and tone. They will also serve as a liaison between the internal project staff, and the management and staffing teams for the vendor.
The Project Manager (PM) is the team leader and primary point of contact for the client. If at all possible, it’s best if the PM has domain experience similar to the client’s business. The PM is responsible for developing a project plan according to (in Art & Logic’s case) an iterative development methodology, working with the Tech Lead to divide the project into manageable milestones and track the scope, budget, and timeline of the project. PMs ensure that the project follows best practices and established processes, and, when necessary to deviate from typical processes, they can answer confidently why it makes sense to do so. They should lead the project development team and basically work in congress with the Account Manager to ensure the success of the project.
The Project Manager should be the first point of contact for personnel issues on the project, and decide whether they can right the issue themselves, or if it makes more sense to loop in the AM for additional perspective. The PM and AM work closely throughout the life of the project keeping in mind the client’s and team’s best interests.
The Technical Lead (sometimes fulfilled by the PM, particularly on smaller projects) is responsible for working with the client to determine the best software architecture for their project. Which languages and frameworks, database configurations, front-end libraries make the most sense for providing a software solution to the client’s problem. This person should be an expert in the chosen technologies and serve as a go-to for the development team (and at times as the Project Manager) when technical concerns or questions arise.
The Technical Lead should take into consideration the client’s internal technical choices and competencies, should they wish to take over maintenance of the finished product. They should consider the end user (Are they power users or novices? Are they using the product in a business context or commercial context?) to determine the best tech platform to help the project succeed. How long has the technology they are considering been around and how well supported is it on the web? If the client eventually has to hire for this technology, will it be easy to find a competent professional, or is it an obscure complicated tech?
The UI/UX Designer plays a major role in defining the details of the project requirements, by collecting user stories from the client and wireframing the workflow of the application (and of course eventually producing finished comps for use in the production software). They work closely with the client and if possible ideal end-users to determine the best look, feel, and flow for the application. These decisions will affect a number of technical decisions and development practices, so it is important that the PM and Tech Lead work closely with the Designer to move the project forward smoothly.
The Developer(s) should be expert in the technologies chosen by the Tech Lead and take their direction from both the PM and Technical Lead. The PM will assign development tasks to the developer(s), and act as a conduit through which the requirements can flow, and a point of access to the client, along with the Tech Lead. Most projects will necessitate some level of direct interaction between the development staff and the client’s staff to answer detailed, development-oriented questions. These interactions should be done in such a way as to provide transparency to both client-side and project-side stakeholders.
The Quality Assurance Technician (QA) will develop, in congress with the PM, Tech Lead, and UX/UI Designer, a test plan and that exercises the milestone releases thoroughly, ensuring that the client receives code that has been properly vetted. They’ll also work closely with the developers as they release code for testing. The QA tech should feel comfortable reaching out to a developer to talk about particular issues they’ve uncovered, how to repeat those issues, and potential ways to solve them.
Hopefully, whether you work for a software development firm, or a company that hopes to employ one, what we’ve shared here sheds some light on the process and thought that goes into staffing a software project. The more you know about how your team is vetted and assigned, and what is expected of them, the more likely you are to have a pleasant, successful development experience. If you are in a situation where something doesn’t seem right, don’t hesitate to ask questions. If the development firm can’t provide a sufficient answer, you might reconsider the engagement. Software development generally costs quite a bit of money, and you should have confidence in your developer to guide you through the process and see you safely through to the end.

+ more

Accurate Timing

Accurate Timing

In many tasks we need to do something at given intervals of time. The most obvious ways may not give you the best results. Time? Meh. The most basic tasks that don't have what you might call CPU-scale time requirements can be handled with the usual language and...

read more