Software Charter

Purpose

This document serves to outline the main responsibilities and goals for Software.

Document Owner: Reid Chandler, Head of Software Solutions, chandler.r@northeastern.edu

Mission

Empower people through software.

Priorities

  1. Foster a supportive community that prioritizes growth, learning, and communication

  2. Maintain high-quality and reliable applications

  3. Constant reflection and learning from our software projects and club processes

  4. Deliver innovative and useful features to our clients

Our Applications

  • FinishLine by NER (Web)

    • AKA PM Dashboard v3

    • React frontend, Express backend, Yarn workspace in Typescript

    • Project Management Dashboard with goals to expand to finances in the Fall

  • PM Dashboard v2 (Web, Deprecated on August 15th, 2022)

    • Built-in TypeScript, React, and serverless beginning January 2021 and launched in April 2022, 24 weekly users

    • Interactive UI for viewing, filtering, reviewing, and implementing Change Requests, Projects, and Work Packages

    • Intended expansion to financial and logistical management features

  • PM Dashboard v1 (Web, Deprecated on April 30, 2021)

    • Built-in Google Apps Scripts in July 2021, 24 weekly users

    • JS/TS-enhanced HTML-based UI with minor interactive features built on top of the Project Management Database Google Spreadsheet

  • PM Dashboard v0 (Web, Deprecated on March 14, 2020)

    • Built-in Google Apps Scripts in November 2020, 6 weekly users

    • Email automation scripting to summarize projects behind schedule

  • Future Application Ideas

    • Mobile interfaces for PM Dashboard

    • Engineering club management software

    • Engineering lab/machine shop management software

    • Northeastern Club Management software

Roles and Responsibilities

Developer – (5- hrs/week):

Reports to: Tech Lead

A Developer is responsible for building and maintaining our full-stack web application using Typescript, React, Express, Prisma, etc. Developers should be passionate about coding and learning. The goals for a Developer are to learn web development and other skills that will prepare them for the professional world.

Responsibilities:

  • Attend weekly Software Solutions meeting

  • Attend Learning Sessions

  • Put forward their best effort and try hard to learn as much as possible

Goals

  • Understand the full architecture of Finishline and be able to explain it (e.g. in an interview)

  • Learn how to be an independent developer (debug, answer your questions, use google)

  • Get comfortable using the technologies used in our app (React, Express, Prisma, Typescript, Git)

Tech Lead – (10 hrs/week):

Reports to: Head of Finishline

Tech Leads are responsible for mentoring newer developers. This means making sure they have appropriate tickets to work on, aren’t blocked, and review their tickets. A Tech Lead should also continue working on the project, contributing to more difficult tasks.

Responsibilities:

  • Attend weekly Software Solutions meeting

  • Attend weekly Software Leads meeting

  • Mentor their group of developers (at max 10 ppl) and be able to walk through problems with them

  • Check-in with developers at least once a week via Slack

  • Participates in at least two tickets per Release (either completely doing or completing stale developer work)

  • Review and manage (make sure they’re not blocked or waiting for another review) respective groups' PRs

  • Responsible for making sure members' work doesn’t get held up too long

    • If a high-priority ticket is stale for more than 2-3 weeks, the lead should either do the ticket themselves or ensure that it gets done by a reliable member

Goals:

  • Gain the ability to foster a sense of community in your tech lead group to maintain retention

  • Gain a more complete understanding of every aspect of the code base

  • Take ownership of the application (feel proud of the work and the website we make)

  • Learn how to write tickets and break out epics

Software Product Manager – (5 hrs/week):

Reports to: Product Leads

Responsibilities:

  • Attend weekly product meetings

  • Slack and communicate with engineers and developers regularly about new features or feature requests (at least once a week)

  • Make Epics

  • Design new features

    • Follows Figma Style Guide

  • Conduct Design Reviews for their new features

  • Must come to at least one engineering bay time per week

  • Attend Product Learning Sessions

Goals:

  • Learn as much about the applications that we make and about the structure of the club as a whole as you can (A good way to get very involved in the club quickly)

  • Learn how to communicate with Engineers and Developers

    • Understand and act upon criticisms of your designs or epics

  • Learn Figma

  • Learn how to write user stories and an epic for new features

  • Learn how to collaborate with a team of product managers to create larger features

Software Product Lead – (7-10 hrs/week):

Reports to: Head of Product Management

Responsibilities:

  • Attend and facilitate weekly product meetings

  • Attend Software Meetings

  • Attend at least one engineering bay time a week

  • Create Tasks for Product Managers (in Finishline)

  • Ensure that new features are delivered on time, according to preset deadlines

  • Create Product Roadmap with Head of Product Management and Head of Finishline

  • Attend all Product Design Reviews

  • Moderate #software-product-requests (respond to and properly triage inquiries)

  • Create and analyze Product Feedback Form for any new features

  • Enforces Style Guide on member designs

    • Ensure the Figma file stays organized and easy to read/ work in

Goals:

  • Learn how to communicate and build connections with Engineering Leadership

  • Learn how to manage the creation and delivery of large new features

    • Delegate smaller design/ work to newer members

  • Be able to identify pain points and proactively come up with solutions

Head of Product Management — (10-15 hrs/wk)

Reports to: Chief Software Engineer

Responsibilities:

  • Attends all product meetings

  • Attends all software meetings

  • Attends all embedded software meetings

  • Attends all head meetings

  • Attends all lead meetings

  • Attends all Design Reviews

  • Presents (or ensures that another reliable person is leading) all product learning sessions

  • Approves Epics

  • Approves Designs (should screen designs before design reviews with a larger group)

  • Work closely with club leadership (spends time in the bay, in constant communication with them)

  • Understands all features of all applications and should be able to explain why they exist

  • Creates a Product Roadmap for each semester

  • Ensures that all product deadlines (set in collaboration with other software heads) are being met

  • Ensures that users are properly educated about the rollout of new features

  • Manage Finishline projects for the Product Team

Goals:

  • Be able to sell our applications (Finishline, Telemetry System) to users, engineering leadership, developers, and outside parties

  • Gain the ability to foster a sense of community in the product team to maintain retention

  • Communicate software product roadmaps at least quarterly to club leadership

  • Ensure user pain points are documented, prioritized, and addressed appropriately

  • Properly delegate work to product leads and managers

Head of Finishline – (10-15 hours per week):

Reports to: Chief Software Engineer

Responsibilities:

  • Leads all Finishline meetings

    • With assistance from the Chief Software Engineer as needed

  • Leads all Finishline tech lead meetings

  • Presents (or ensures someone reliable is presenting) all Finishline learning sessions

  • Attends all Product Meetings

  • Attends all Head Meetings

  • Attends all Leads Meetings

  • Attends all Design Reviews (related to Finishline)

  • Final Reviewer and Approver of all Finishline-related PRs

    • The Chief Software Engineer will assist with this, but it’s the head's responsibility to ask the chief for help as needed

  • Breaks out epics (or delegates to a tech lead)

  • Ensure that deadlines are being met for releases

    • check-in with tech leads weekly on their progress on tickets

    • manage their tech lead group of returning members (with stricter deadlines)

    • ping people with high-priority tickets to make sure they get done by the time they’re due

      • If a developer can’t complete release work on time, it’s the head's responsibility to finish it themselves or ensure that a tech lead or reliable member of their group completes it in time

    • Work with the Product team to ensure that release deadlines are reasonable and we are on track to meet them

  • Ensure that developers have good, varied work to do

  • Manage Finishline projects for the Finishline Team

Goals:

  • Learn how to effectively manage a 50+ developer team

  • Learn how to deploy the app on AWS (optional)

  • Deliver a good product (Finishline) that they can be proud of and talk about leading the development of

  • Have a complete understanding of the codebase and or tech stack

  • Be able to answer any question about Finsihline that could be asked

  • Learn how to research new technologies for new architecture or features

Head of Application Software – (10-15 hours per week):

Reports to: Chief Software Engineer

Responsibilities:

  • Leads all Application Software Meetings

  • Presents all application software learning sessions

  • Attends all D&C meetings

  • Attends all Product meetings

  • Attends all Design Reviews (related to application software)

  • Attends all head meetings

  • Attends all lead meetings

  • Attends all software social events

  • Ensures that NERO and Telemetry Systems are being completed according to deadlines

  • Creates Application Software Roadmap with Head of Product and Chief Software Engineer

  • Communicate regularly with the head of D&C (to be changed to the head of firmware)

  • Breaks out product epics and ensures that members have work to do

  • Manage Finishline projects for the Application Software Team

  • Initial vetter of new applicants for the application software team

    • Makes technical questions for the application software team/ conducts any interviews of new applicants

  • Final reviewer/ approver of all application software PRs (it's their responsibility to get the chief software engineer involved as needed)

  • Drafting architecture for respective projects under Application Software

  • Removing any non-contributing members from the team to ensure good team moral steady progress on deliverables

Goals:

  • Learn how the car works

  • Fully understand the tech stack for all Application Software Projects

  • Gain the ability to foster a sense of community in the Application Software team to maintain retention

  • Learn how to research new technologies for new architecture or features

  • Learn how to delegate work to avoid burnout and ensure deadlines are being met

Chief Software Engineer– (15-20 hours per week):

Reports to: President of the Club/ EBoard

Responsibilities:

  • Attends all software meetings:

    • Weekly Finishline Meetings

    • Weekly Product Meetings

    • Weekly Application Software Meetings

    • All Design Reviews

    • All Learning Sessions

    • Leads biweekly software meetings and social events

  • Attends all EBoard meetings

  • Attends all head meetings

  • Attends all lead meetings

  • Attends all Kaleidoscope Meetings

  • Creates Finishline Product Roadmap with head of product and head of Finishline

  • Creates Application Software Product Roadmap with head of product and head of Application Software

  • Creates Finishline Development Roadmap with head of product and head of Finishline

  • Creates Application Software Development Roadmap with head of product and head of Application Software

  • Final decision maker for all software-related decisions

  • Represents the software team to outside groups whenever necessary

  • Understand the design, product, and implementation (tech stack) of all applications

  • Assists all heads when asked (should pick up any slack in all parts of the software team)

  • Ensures all meeting times are scheduled (with a room) with EBoard without conflicts between teams and heads' responsibilities

    • Ensures that all meetings are running as intended and with all the support that they need

  • Creates learning sessions with the heads who will be presenting them in a timely manner

  • Ensures that heads are meeting their responsibilities and fostering a good environment for members

  • Plans and facilitates all social events (buys food)

  • Deploys all applications as needed

  • Have all the logins and recurring subscriptions (AWS login, AWS bill, NER gmail, domain for Finishline, Figma, Netlify, all ENV variables)

  • Advocates for software members/leads and works on creating benefits for software members and leads (employment engagement opportunities, events with other clubs)

  • Communicate with club leadership to ensure the software team is properly supporting the rest of the team and contributing to car development

  • Manage any interpersonal conflicts that come up on the software team

  • Ensure that the team has effective heads currently and is developing more talent to lead the team in the future

Goals:

  • Collaborate with the heads of each team to ensure a good learning environment is created on the software team and people have a variety of opportunities to learn and improve their skills

  • Learn how to manage several projects and collaborate with teams of engineers

  • Make a set of products that they can be proud of/ discuss with other students or employers

  • Increase retention and decrease burnout of people in heads/ leads roles

Goals

Universal Goals

Goals for every semester

  • Teach web development and other related skills in a way that will prepare members for co-op

  • Reflect on previous semester and revise accordingly

Conclusion

If you read this far, thank you! You must care a lot about the software team to read a whole charter about it. If you have any feedback or questions, feel free to reach out to me through email or Slack.