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!
Â