Roles on Software Teams
I currently work at a software startup and wear a lot of hats. Here are some of the hats I wear and some of the hats I interact with.
Product Manager
A product manager envisions new things to create.
- Is either a stakeholder proxy or a direct stakeholder:
- Stakeholder Proxy: Represents the desires of external stakeholders, such as customers. This is an outbound role.
- Direct Stakeholder: Represents the desires of internal stakeholders, such as the engineering team. This is an inbound role.
- Has an area of focus.
- Discovers or envisions new items (within the stakeholder’s area of focus).
- Prioritizes items (within the stakeholder’s area of focus).
- Talks with the relevant Project Manager to get items scheduled.
- Advocates for one’s items and area of focus.
Project Manager
A project manager schedules things to be created.
- Knows what all the items in the backlog are.
- Story: A particular small outcome that is meaningful.
- Epic: A large outcome. Associated with a collection of Stories.
- Specifying Epic: Generates new Stories.
- Characterizing Epic: Groups together existing Stories.
- Area of Focus: Typically a product. Sometimes a special initiative.
- Knows, for each area of focus or important stakeholder, the relative priority of items.
- Talks with Product Managers to obtain relative priorities.
- Decides on the absolute priority of items, balancing different areas of focus and stakeholders.
- Costs items (indirectly).
- Talks with Engineers to obtain costs.
- Negotiates with Engineers and Product Managers to obtain valuable features with reasonable time cost in a timely manner.
- Schedules items to releases and assigns items to Engineers.
- Monitors progress of items, looking for slippage.
Engineer
An engineer directly creates new things.
- Breaks down items to smaller items.
- More commonly, breaks down a Story to Tasks (or “workitems”).
- Less commonly, reclassifies a Story as an Epic and breaks the Epic down to Stories.
- Costs items (directly).
- Negotiates with Project Manager and/or Product Managers, perhaps splitting Stories or Epics across releases, to obtain valuable features and parts of features in a timely manner.
- Completes stories by implementing the associated Tasks.
- Is sufficiently skilled to do any Task required for the completion of Stories they are assigned.
- Is familar enough with the business domain to be able to recognize and challenge specification errors.
There are several kinds of engineers, which vary based on skillset:
Software Engineer (Full-Stack)
- Skilled in:
- Frontend application logic. UI implementation.
- Backend application logic. Abstraction design.
- Data(base) schema design.
- Data(base) administration and operations.
- Produces:
UX Engineer
- Skilled in:
- Interaction design and usability.
- Graphic design. UI design.
- May also be skilled in:
- Produces:
- UI wireframes, both high-fidelity and low-fidelity.
- Use cases. Scenarios. Interaction designs. Given-When-Then specifications.
Content Engineer
Produces content for the business domain. Skills vary depending on what the domain is.
For example:
- Curriculum Engineer - Designs and writes curriculum to teach kids.
- Writer - Plans and writes long-form compositions such as technical documentation, manuals, blog posts, or books.
Salesperson
A salesperson finds specific prospects, introduces them to products created by engineering, and converts them to customers.
Sales activity helps to acquire customers.
Marketer
A marketer creates marketing content that creates general awareness for products and product categories among a target audience that contains prospects.
Awareness in the target audience makes it easier for sales to convert individual prospects from the audience to customers.
Marketing activity helps to acquire customers.
Support-person
A support person assists customers (and sometimes prospects) with operating products.
Support activity helps to retain customers.