2023-10-02 PM meeting

Roles background:

  • Individual contributor: Defined task to complete, move onto next, eventually learn about entire system

  • Senior member: Specialized knowledge, adept in language, reviews.

    • Senior member is still an individual contributor

  • Project manager: Huge scope change

    • Vision about entire system, how components fit together

    • Integration with other systems: This means communcation

    • Testing

    • Supporting individual contributors: Clarifying tasks, debugging, PR review

    • Documentation and management

Report progress and ask for resources:

  • Subteam leads and directors: They focus on the programs and the projects required to make sure the program succeeds

    • Example: AEAC 2024 competition program, ZP program, pilot program.

  • Project manager reports progress to leads

  • Also ask for resources: People, hardware, space, food

    • Leads are here to support!

Documentation and management:

  • Documentation and task descriptions need to be clear so that individual contributors know where to start

    • If they have to ask for clarification, you have failed (to communicate properly)

      • Not a big deal, make sure to be clearer next time

  • Prioritization of tasks: Which tasks will create an MVP that will at least somewhat work?

  • Unblock tasks

Decoupled codebase:

  • Single responsibility principle: The component does 1 thing with input, output, and expected behaviour

    • Is there really a case where this can’t be applied? Is there really something that can’t be abstracted through an interface?

    • Is this really the place to add a new feature? Is this component really supposed to support this new feature? Can the new feature go somewhere else? Should it be its own component?

  • Examples in projects:

    • IMACS 2.0: Communciation layer with drone

      • Drone side should not affect widget side and vice-versa

    • Airside System: Multiprocessing

      • Workers get input, pass to object they hold, get result, forward to next worker

      • Workers are responsible for communicating with other workers

      • Object is responsible for actually doing the work

    • Pathing: A series a functions that are called one after the other

  • Good code begets good code, bad code begets bad code

    • Someone new to the code will try to copy the style of the current code

      • Often there will be copy pasting

      • If the codebase is bad then they will write bad code!

    • One of the worst things to happen is hitting a bug from code someone else wrote

      • Delays occur, someone else has to fix the bug before it can be completed

      • Hacks and workarounds

      • Vicious cycle: Well, the tests don’t pass, so merging the new code should be fine, right?

    • Keep tech debt to a minimum

    • Examples:

      • Airside system tossed all of the 2022 competition code and rewrote everything from scratch

      • Pathing tossed all of the 2023 competition code and rewrote everything from scratch

Time contribution:

  • Individual contributor: Minimum 1 hour per week (just showing up to subteam meetings)

  • Project manager: Minimum 4 hours per week:

    • 1 hour: Task creation, organization, prioritization

    • 1 hour: Documentation, design, architecture, research

    • 1 hour: Supporting individual contributors, including PR reviews

    • 1 hour: Subteam meetings

    • Integration meetings: Expected to attend

      • Example: AEAC 2024 competition sync

  • Keep on top of this! You can’t disappear for e.g. a month and not expect things to keep going smoothly

    • Project manager is a huge commitment (much bigger than individual contributor), since it impacts a large number of people

Mistakes:

  • You will make mistakes, that is normal and human

    • Just learn from them, others can also learn from them, and learn from the mistakes of others

  • WARG is for learning!

Â