Headspring engagements are typically staffed with team members fulfilling one of three roles — Developer, Technical Lead, and Project Lead. These roles provide a clear delineation of project responsibilities, accountability, and facilitate clear lines of communication between the project team and key stakeholders, helping to ensure a successful agile delivery of the solution. The roles are not defined by strict areas of expertise and can be fulfilled by team members at various career levels and backgrounds. While there is a clear difference in responsibility, each role has some overlap with the others.
It’s common for organizations to have additional roles defined for a software delivery team. These additional roles may include Quality Assurance (QA), Business Analyst (BA), Product Owner (PO), Project Manager (PM), or DevOps Engineer. At Headspring, the responsibilities that these roles typically cover are fulfilled across the delivery team. Avoiding a fine-grained division of labor allows us to keep our teams small which facilitates effective communication, fast decision making and shared ownership of responsibilities. All Headspring project team members are responsible for ensuring quality, performing functional testing, supporting deployed environments, automating repetitive tasks, and understanding the client business domain.
The backbone of our delivery teams are the developers. Engineers fulfilling this role are typically at the Consultant or Senior Consultant career level. The primary responsibility of Developers is to focus on execution by delivering high-quality software — taking full ownership of the development, testing, and delivery of assigned features. To accomplish this, developers validate initial work estimates, break down features into actionable tasks, track and report progress to the Project Lead, write automated tests, and apply feedback from the Technical Lead.
The responsibility of architecting a software solution and laying the groundwork for the development team falls on the Technical Lead. Technical Leads are the primary technical contact for the client and keep the development team focused on delivery by making sure features have technical clarity. Technical Leads accomplish this by adding technical definition to features, sequencing work according to dependencies, and establishing key patterns to be followed by the development team. Technical Leads help ensure the delivery of high-quality software by conducting pull request reviews of Developer work and by assisting with development challenges as they arise. Engineers fulfilling this role are at the Senior Consultant or Principal Consultant career level.
Project Leads are the primary point of contact for the client. Project Leads are responsible for tracking and communicating development progress with the client and Headspring leadership. To accomplish this, Project Leads manage the project budget and timeline and lead client demos at regular intervals. Additionally, Project Leads assist the development team through facilitating requirements gathering and backlog development by working with the technical lead to write user stories, conducting user interviews, documenting client business processes, and conducting functional testing of the solution. Though not strictly a technical role, Project Leads are able to communicate and articulate key architectural components of systems. Team members fulfilling this role are typically at the Senior Consultant or Principal Consultant career level.
Depending on the size of the project, Headspring project teams are typically staffed as follows:
1 Project Lead 1 or 2 Technical Leads 1 or more Developers with a Technical Lead to Developer ratio of no more than 1 to 4.