Organizing a programming team.

This year as the defacto head programmer for my team I am in charge of my team’s programming sub-team. This is the first time my team has had more than one able programmer. It is also the first time that my team has had any real programming goals and major software projects to complete. On my own I am more than capable of completing the software we have designed and meeting all of the goals we have set out to reach.

The programming team consists of 3 students that have limited experience with C++, 1 student who has experience with Real Basic but no C/C++ experience, and 3 freshmen who are still learning programming logic. One of the freshmen is very enthusiastic and I had no trouble teaching him to program my teams older robots in PBasic.

So far we have not made much progress on any of our software projects, nor have we met any of our short term project goals. I am having trouble directing the team’s efforts and I was wonder how teams with many programmers are able to organize themselves to complete small software projects on time. The project is big enough to give everyone a small part to work on but I do not know how the project should be divided.

Here, we have one person writing the code, one person reading the code, and one person testing the code. (Or, at least that’s the plan.) If you go with that setup, then everyone is familiar with the code, and you can rotate positions once a programming task is completed.

What exactly is the role of the tester? I normally test as I write.

So, I just wrote some new driving code. It has three modes of operation: pivot in place, go straight, or arc. Ideally, I write up the code, and someone reads through it to make sure that it makes sense. Then I compile it, and send it to the RC. Another person hooks up the OI, and tests the various operations to make sure that it works as intended, and that the controls are manageable. (When coding a control system, it often makes sense in your head, but comes out far too sensitive for the drivers.) Robot programming is not like computer programming, where you can instantly test little parts of code with some printf (or cout, or System.out.println, depending on your favorite flavor) commands on a console window. I’ve found that it’s much more efficient to write large things all at once, because it’s very time-consuming to compile the code, power up the robot, download the code with IFI Loader, and test the code. That’s why it’s nice to have someone else around to take over the whole process.

I’m new to robotics this year, but I have a year of C++ experience and I’m trying to learn as much as I can from our programming head this year. Because of all the graduating seniors, next year I will be the only senior and probably the only one with much programming experience on the programming team. I’ve never programmed a robot before so I’m trying to gather as much information this year to prepare for next year. If anyone has any advice or information they can give me I would really appreciate it.

We struggle with a similar problem every year. We get a batch of new students who know nothing about C or programming and it’s up to us turn them into productive coders. The best advice I can give is start them out simple. Find a small piece of code with well defined inputs & outputs and walk them through it. A good example of this is turning the pump on & off, or actuating a solenoid when a button is pressed. Then get more elaborate. The key is that you need to create a function or a block within a function that has well defined inputs & outputs and very rigid requirements and then the team needs to write the code for it. You can either work as a big team or partner the semi-experienced programmer with a newbie and see what they churn out. It’s difficult because you have to keep one step ahead of everyone and plan out the evening’s code before you get there. That’s what we’re doing; we (the mentors) write the function skeletons, including comments explaining what each section of code should do, before the meeting and have the students write the code and test it during the meeting. It’s worked so far.

well… my team has 2 juniors who are experienced with C++, and they somehow manage. and there is one person on my team… First day, i asked her if she knows programing, and she was like yes… and went on and on about how good she is at it… then she asked me what a CPU is…(uncomfortable silent) ehmmm,
so i was like"what the!" worst part, she wasn’t joking…
My advice to you… have the "experts program and others who are “learning” do the testing. simple and effective.