How can I improve my programming

Hello,

I’m currently trying to improve my programming. I will program our robot in the season but I don’t know how can I improve. Any help will be appreciated.

3 Likes

Watch tutorials, read code, ask questions, practice code.

I have been asking my newer students to go through https://www.frcladder.com/ it has some videos for Java and some simple exercises, this will cover the watch tutorials, read code , and practice code parts of the equation.

I also think the channel Zero to Autonomous on Youtube does a great job of covering FRC concepts.

As for asking questions Chief Delphi is a great spot to ask questions, it is a friendlier corner of the internet than most and there are many knowledgeable people here who are willing to share. When asking questions you will get better results if you state what you are trying to do and the results you are getting. Share the code, share the errors, and share what else you have tried.

One more thing to remember is be kind to yourself. It is too easy to tell yourself negative stories when things aren’t working the way you want to. Making ‘simple mistakes’ is a part of programming. Also when it comes to programming and especially to programming mechanical systems you won’t know everything. It is a huge field. I have a been a programmer for 30 years, doing java for 25 though mostly insurance related applications. When I started helping with FRC I had so much to learn and I am still learning so much from this forum.

Good luck and welcome to the joys of FRC programming

7 Likes

Thank you for your help

1 Like

I would say the number one thing you need to learn as a programmer is learning by reading.

Youtube videos are great for introducing concepts, but at some point your success will be proportional to your ability to read API documentation, or other text things and apply them.

Remember with programming you’re learning a new language, that has grammar, syntax, rules, and other things. Once you learn the “programming language” basics, then learning a specific programming language gets much easier.

So you need to choose which dimension you want to learn. Do you want to improve your programming in general, or do you want to improve your robotics programming.

The paths for those are actually pretty different. If you want to learn robotics programming then things like the FRC ladder and Zero to Autonomous are great resources. If you want to learn to be a better programmer, you probably need a different set of challenges.

1 Like

Two pieces of advice… less programming related and more “learning” related.

A big thing that might be obvious, but to be sure it gets stated… this learning is a bit different than the classroom. There’s no teacher planning out exactly what to learn and when, or observing your progress and adjusting on the fly. Instead, you are that teacher, and responsible for picking that strategy to best ramp yourself up.

Advice 1

The biggest meta-skill that helps this learning process, at least in my experience: Practice balancing how much you question versus trust your own assumptions.

A common pitfall students face is being certain they’ve done something right, even though there was an issue. Another common pitfall is getting caught in “analysis paralysis” - constantly questioning and never moving forward.

Learn to learn - be watchful in yourself for these situations, and adjust your strategy. If you’re finding yourself frequently confident today but proven wrong tomorrow, spend a bit more time checking your assumptions. If you’re constantly behind and not getting software out the door, start to carefully make simplifying assumptions.

Advice 2

Read the “Think *” series for your programming language:
Java
Python

1 Like

Practice, practice, and practice!

agreed. however, i find myself struggling to find things to practice on in the lab… any suggestions on what you would do?

1 Like

when I was a rookie, we had working robot code, and what I would do is make my own project, start from scratch and try to re-code the entire bot, and consistently look for a better way to do the robot, optimize it a little more each time.

You could also look for ways to improve your current code, just practice, practice, practice.

Experiment with things you have not tried before (for ex. if you have a PID controller on your mechanism, try adding in feedforward, etc), the robot is never done, there is always room to improve don’t think you have done something in the best way (you never will, there will always be a better way to do something), and hey if it fails, it’s okay, you at least learned where it went wrong, and then you can repeat the process, then you could apply that knowledge in the future.

3 Likes

Lots of good suggestions here, but I’ll add two more.

  • Find someone to mentor you who knows about software, ideally an actual professional software engineer. Get them to review your code. You can learn a lot this way, both things you might be doing that are actual wrong, but also just alternative ways to do things.
  • Document your code. This means both commenting the code fully, but also writing a document that explains the code structure. This is a fantastic way to improve your code. You should be able to explain and justify everything you are doing, which is often surprisingly difficult, because you discover that you do not understand all the code that you have written. [Aside: Like rubber duck debugging, doing good documentation forces you to look at the code in a different way from writing it in the first place, which leads to finding problems and new insights].
1 Like