Varsity letter requirements

As a preface, a student isn't required to do anything. That is, they can work on as much or as little as they want and show up when they please. With that said, one must earn their varsity letter. The following is a list of guidelines for students on the software subteam to follow. Meeting these guidelines signals to leadership that one has put in a varsity-level effort to learn what is being taught and deserves recognition for it.

  1. Made a significant positive impact on the robot code base or other software project for the team
    1. Rookie: needs to make enough contributions that we can feel confident we can tell them to implement something we typically do, and they can figure it out themselves.
    2. Veteran: should be able to implement something new and exciting themselves, but not necessarily in the best way because that's what mentors are for. Mentors use their experience to suggest alternative implmentations and teach students to consider the trade-offs in their design.
  2. Was involved in the design of the robot code's architecture (requirement gathering/synthesis, state machine design, application of control theory)
    1. Veteran: can explain this year's robot code and defend their design decisions
  3. Veteran: has shown growth from the previous year
  4. Actively found ways to make meaningful contributions
  5. Basic knowledge
    1. Is proficient in C++
    2. Can use version control effectively
    3. Exercises clean coding practices
    4. See our learning outcomes for more
  6. Can work productively with the other members
  7. Can provide meaningful feedback for other members' code
  8. Maturity
    1. Handles design disagreements in a professional manner (contrast this with yelling at each other, which has happened before on the software team)
    2. Considers other people's opinions, viewpoints, and advice before making a decision
      1. Evaluates ideas based on their merits rather than emotional attachment
    3. Treats mentors and other team members with respect
    4. Easy to work with
  9. Time commitment
    1. Software strongly encourages working outside of build sessions, but that is not required
      1. Be on Slack and engage in discussion
      2. Step up and take on tasks
      3. Follow through on tasks undertaken and assigned

Keep in mind not every software team member will have the opportunity to write a piece of production software from scratch. Maintenance programmers are important too. The Ten Commandments of Egoless Programming provide a summary of what is expected in collaborative work environments (not just software engineering).