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
Foster a supportive community that prioritizes growth, learning, and communication
Maintain high-quality and reliable applications
Constant reflection and learning from our software projects and club processes
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.