Java - Programming Training For FRC Teams - Veterans and Beginners

Hello! My name is Jimmy, I am the lead of programming on 5727 Omegabytes, this off-season I was tasked with training programmers (new and old) to program robots for this upcoming season “Charged Up!” and with this post my intention is to give other teams an insight into training with tips and strategies for training programmers effectively. Also I will include some good resources that I have used, and that have worked out well so far.

When I started kind of planning for training, I had to keep a few things in mind:

  1. Is that you have to be patient with this, it is going to take a lot of time to teach how to program a robot.
  2. Everyone learns programming in a different way, a mentor on my team when I was first planning this out said “you don’t want to assume everyone has the same knowledge to skip over something, but you have to progress fast enough to actually get somewhere. Everyone has their own way of learning. For someone it may be a playlist of videos, for others it may be just messing around and figuring it out themselves and for others it may be college courses before they get it. Teach the way you best know because that’s the only way you won’t get confused yourself.” TL;DR: Find the way that works best for you.
  3. Teach Logic, BEFORE you teach Syntax.
  4. Be consistent when teaching.

With the first point of you have to be patient, is that some people that come into programming may not have any clue what they are doing, it’s perfectly fine if they don’t know, that’s what training is for. It will take a bit from nothing to intermediate, some learn faster or slower than others. My advice is that, try and go in depth into each topic, some need more info than others, your results may vary.

Before you start teaching syntax at all, teach logic first. Logic first learners in my experience do better than syntax first learners. Teaching logic first will make some stuff down the line less confusing than teaching logic while also teaching syntax. Less confusion the better. ALSO when teaching logic and syntax, incorporate robot examples, like for example: “If a color sensor detects a red ball if we are on the blue alliance, the robot ejects it out.” or something like that.

After I taught logic to my programmers, I dived into the syntax. The way I did this is that I got certain meeting times where it was just a programmers meet, so no other distractions while learning. We used codecademy to teach syntax, it is a pretty good resource to use to learn any syntax in my opinion, we spent 6 weeks going through all topics in the Java syntax in depth as well, I had a slideshow in the beginning of every meet (I will link those below), basically going in depth about the topic of that week, then they worked through the codecademy lesson.

During the training we always have 2-3 breaks in there to go get something to eat, drink, take a walk, so don’t go for a 6 hour training session straight, that will cause burn out, we don’t want that.

After we learned logic and syntax, we dived straight into robot programming, I gave my programmers a past robot, and told them to program it. Here is the hard part, you need them to be self sufficient. You have basically walked them through all the basic now it’s time to take the training wheels off, and let them bike by themselves. You want them to find solutions on how to do something by themselves, you want them to find the solution, you don’t want to hand the solution to them. I gave them an arcade drive robot, and told them to look at WPILib (WPILib is such a good resource for everything), or google the solution. Half of a programmers job is to problem solve, it doesn’t matter how they find the solution as long as they find a solution, whether that be a Chief Delphi post, a YouTube video, or a stackoverflow question from 10 years ago, if it works, it works. TL;DR: They need to find the solution themselves.

That’s about all I have to say for programming training for any FRC team, I will be linking the resources below, and I am open to any questions in the replies down below, thanks for reading :slight_smile:

Resources:
Variables.pdf (89.3 KB) Two-Dimensional Arrays.pdf (59.0 KB) Inheritance and Polymorphism.pdf (59.2 KB) Access, Encapsulation, and Static Methods.pdf (80.0 KB) String Methods.pdf (73.2 KB) Loops.pdf (49.4 KB) Arrays and ArrayLists.pdf (74.7 KB) Conditionals and Control Flow.pdf (63.2 KB) Object-Oriented Java.pdf (82.5 KB) Hello World Review.pdf (70.6 KB) WPILib | My Github Profile | 5727’s Team Github Profile

7 Likes

True but that’s something mentors have to get over worrying about. We heard loud and clear from our past teams that they did not appreciate hours of learning logic then syntax then WPILib then apply to the robot. Our attrition has been high. They had come to do robots and they got a college education instead which is not what they wanted.

This Fall our software team of about 7 rookies and one returning sophomore had approximately four hours of logic and syntax then pairs each got a Romi which they’ve now had for four hours. We’ve completed four 2-hour weekly sessions and engagement is amazingly higher; we are optimistic we’ll retain most of the students.

[And our build team upgraded Falcons and SDS modules. One freshman was so proud of her crimped power terminations she asked if she could take her first practice piece home to show her father. Watch out World’s - we’re on our way this season!]

3 Likes

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.