Engineering Project Roles

These are the engineering roles and responsibilities on a project team. This is how we role.

Very important note: these are roles, not individuals. This means that:

  • One individual could perform one role on one project and another role on another project (e.g. a TL on project A could also be a themer on project B).
  • Multiple roles on a project could be shared by the same person (e.g. the TL could also be the LE or LT) - this is actually the norm for many small and medium projects.
  • These roles are mostly for our internal communication purposes, so that we know who is responsible for what (even if that means that the same person is responsible of everything on a small project!). On bigger projects the importance of these roles becomes even more important, and is something that would be more client facing.

Tech Lead

CivicActions technical team leaders are known as "Tech Leads". The Tech Lead is responsible for the ultimate technical success of the project. Tech Leads are involved in the entire project life cycle from estimating new business proposals, architecting solutions based on the Drupal framework and then leading development teams to ensure successful project completion. Our Tech Leads work in tandem with a Project Manager, who manages the project's overall progress and budget.

Project responsibilities through the project process:

  • Bizdev
    • Read proposals
    • Ask questions and get clarity
    • Estimate
    • Build rapport with the client
  • Planning
    • Requirements gathering and negotiation
    • Infrastructure + software requirements
    • Project plan (with PM)
    • Team building (with PM)
    • Vhost request
    • Research (e.g. finding/testing Modules that may be needed)
    • Prototyping (e.g. doing a quick configuration sprint)
    • Kickoff
  • Architecture
    • Reviewing and supporting IA and design
    • Liason with 3rd parties
    • Tech architecture
    • Reestimating
  • Build
    • Define team roles and expectations
    • Milestones
    • TL creates tickets
    • Detailed tickets (generally on smaller projects)
    • Defining deliverables from which the LE or LT "spawn" work tickets (generally on bigger projects)
    • Ticket "wrangling" - making sure tickets are organized, clear, and assigned to the right people
    • Expert' support at the appropriate level
    • Assisting PM with resource requests
  • QA
    • Security
    • Code review
    • Defining what needs QAing
    • QA tickets
    • Managing release notes
    • Issue triage
    • Estimating
  • Deploy
    • Making major site releases (smaller releases may be done by the LE)
    • Being available at crazy hours for emergencies
    • Benchmarking
    • Organizing the launch party :)

Tech Leads in the Process

  • Tech Lead may be assigned to assist with "pre-sales" activities. Helps the project manager and other team members determine the scope, approach, schedule and budget for a project. This will often involve direct client contact - with or without the participation of the project manager and/or other team members. In this role the Tech Lead is responsible for the following deliverables:
    • A clear description of the technical deliverables.
    • An estimate of the time for completion of the technical deliverables. In this role the Tech Lead will call upon other tech team members to complete their deliverables on an as-needed basis. The Tech Lead DOES NOT need to be an expert in all technical areas of the project, but does need to be responsible for the overall accuracy of the proposal.
  • The Tech lead will work with the Project Manager to:
    • Develop a detailed "high level" project plan for the technical deliverables. This will include:
    • Engineering specifications for each deliverable.
    • A "Site Map" to outline the functional deliverables in the case of web sites.
    • Determine what other technical resources need to be assigned to the project.
  • During the course of the engagement the Tech Lead will:
    • Work with the client to answer any questions regarding the technical deliverables or project plan.
    • Meet regularly with the client and project manager in project status meetings.
    • Be a resource to the Tech Team and make sure that the right resources are allocated to the appropriate technical challenges.
    • Work with other technical team members and ensure that they understand their deliverables, have communicated clearly any technical issues that they are responsible for, and assist them in solving outstanding technical issues as they arise.
    • Notify the Project Manager regarding any issue that might threaten the teams ability to deliver the project on time and within budget.
    • Shall be the Technical eyes and ears of the Project Manager. The Technical Lead must ensure that the project manager is made aware of and understands all technical issues and risks.

Lead Themer

  • Responsible for all theme code, ensuring that:
    • The theming code is organized, well maintained and documented.
    • People working on it know how it is organized, and where to add/edit things.
    • Responsible for "low level" support for people working on theming tickets.
    • Responsible for "low level" organization and assignment of theming tickets (especially on bigger projects).
  • Generally does a significant amount of the theme code themselves (or all of it, on smaller projects).

Lead Engineer

  • Responsible for all custom code, patches and modules, ensuring that:
    • The custom code is organized, well maintained and documented.
    • People working on it know how it is organized, and where to add/edit things.
    • Patches for modules are being created and contributed as per our best practices.
    • Modules are organized as per our best practices and clean, patched and custom modules are correctly delineated.
  • Responsible for "low level" support for people working on module coding tickets.
  • Responsible for "low level" organization and assignment of module coding tickets (especially on bigger projects).
  • Basic module install and upgrades.
  • Generally does a significant amount of the custom code and module work themselves (or all of it, on smaller projects).