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.
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.
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.
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.
- Skilled in:
- Interaction design and usability.
- Graphic design. UI design.
- May also be skilled in:
- UI wireframes, both high-fidelity and low-fidelity.
- Use cases. Scenarios. Interaction designs. Given-When-Then specifications.
Produces content for the business domain. Skills vary depending on what the domain is.
- 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.
A salesperson finds specific prospects, introduces them to products created by engineering, and converts them to customers.
Sales activity helps to acquire customers.
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.
A support person assists customers (and sometimes prospects) with operating products.
Support activity helps to retain customers.