How do your software team is structured?

how dose your team structure their software team?


We have a software leader
And a few software subteams leaders

We have 3 software subteams: Data, Controls and Localization.

And we also have projects, that each student takes a part out of some of them, mostly in their subteam work enviorment but also someone in Controls could work on a Data project.

1 Like

Normally we just have one person that cobbles together something that functions half the time, but this year we had almost 4 (!) active programmers. I was the only senior so I led the other programmers by setting the overall design and direction of our projects, and the others would give their input and I would assist them in coding. Our team is still really small so extra projects like scouting, vision, or pathplanner this year were usually one or two interested people working on their own.


We just have two people and one is vice president so just a lead which will teach freshman next year(if we get any)

1 Like

We split vision and robot programming into 2 sub teams. Each has a sub team head and around 3 core members

We have a subteam lead which leads couple person

What do you mean by the data subteam?

I’m assuming controls make most of the commands for the robot, all of the subsystem control. And I assume Localization is to optimize odometry using apriltags and cameras, and they would make the Auton Paths. Correct me if I’m wrong

Our programming team is very small, consisting of just 4 people:
Lead (me), Co-lead, programmer, and newbie programmer

I (lead) work with the programmer to write autonomous code, logging data, and more complex subsystems and commands.

Co-Lead and the newbie programmer write the controls (our co-lead is the driver so he gets to design the button mapping, and what controllers we use), less complex subsystems and commands, and handle the software/application things such as installing tools, updating vendor software, and configuring devices via the software.

1 Like

I wrote a synopsis of ours here (other good posts in that thread too)

1 Like

We don’t have anything nearly as formalized as others in this thread, but I figured I’d share as an additional example when teams are coming up with ideas.

The last couple seasons we’ve had 6-8 students and 3 mentors that make up our software subteam. All our work is organized using GitHub issues (with milestones for weekly goals throughout build season) and a GitHub project to track what work is ready to start, in progress, etc. As work is created, pull requests are submitted for each issue, which are reviewed and built/tested using GitHub actions to ensure a certain level of quality.

In general, everyone helps with everything as needed, but we do informally have the following roles:

  • Planning & integration lead (1 member)
  • Subsystem planning & integration leads (3-4 members)
  • Contributor

The “planning & integration lead” is one member (typically a mentor who works closely with 1-2 more experienced students) who is responsible for high-level planning and software integration to ensure the team meets goals and deadlines. They are responsible for facilitating communication within software team and with mechanical/electrical subteams. They review or (delegate reviews) of contributions before integration into the main development branch. They tag releases and perform other housekeeping tasks for the software project as a whole. Many responsibilities are delegated as other members are interested and are ready to contribute to the project in a technical leadership role. The student and mentor filling this role will typically be “on call” or in the pit during competition to address issues as they arise or to quickly identify the correct team member to resolve problems.

The “subsystem planning & integration leads” are more flexible depending on what major subsystems we need deep expertise for development and maintenance throughout the season. This is typically one student with a designated mentor who is responsible for development and work planning for a specific feature on the robot and they become the expert about that subsystem. Some examples have been vision, shooter, autonomous path planning, and climbing in recent seasons. These individuals perform a very similar role as the overall planning and integration lead with a smaller scope of responsibility, so it’s an opportunity for students to begin developing technical leadership skills.

“Contributor” is what I’m using to refer to all the other software team members. They will assign themselves issues on GitHub that have been prioritized by the overall and subsystem leads and take responsibility for the development and validation of individual features. Leads also perform these tasks in addition to their leadership roles. Contributors may focus on specific subsystems or contribute across the project to build a more comprehensive understanding depending on individuals’ interests.

We have historically avoided explicitly designating individuals as leads and have instead delegated more responsibility to team members as they demonstrate interest and aptitude. Members tend to take on more responsibility and leadership over time as they learn and are recognized by peers as subject matter experts. As students (and mentors) learn, they teach more junior members to build our team’s collective competency. In the end, we’re all on the same team working towards a common goal and when work needs done, whoever is available will pitch in whether or not they’re a “leader” or a “contributor”.

It is new subteam we are starting that will work on the logs and Akit part of the robot (like do a reseaech about Akit and how to implement it etc…)