I’ve been browsing CD a lot more lately, and I’ve noticed a lot of things that might be hurting people’s ability to answer questions regarding software. This is my guide (others may have a different process) to asking questions about software.
First up: Know what you are trying to accomplish
This will help you direct your question. I know for a fact that you are learning advanced PID control to use for pathplanning just because. Asking questions for a specific reason will make sure that you get the answers that you actually want.
Next: Context, Context, and More Context
This is an extremely important aspect of your question. We need to be able to know what it is you’re trying to accomplish and know what’s going wrong. Having a code example, a link to github, or something of that nature will do wonders to the people you are trying to get help from. If your code is generating errors, maybe include that as well so we can see what it is you’ve done wrong. Then we aren’t trying to solve some other part of your code that is actually working.
Also: Listen to the advice that people are giving you
This is a critical aspect of the process. A lot of times people might not just give you the answer on it’s own. Oftentimes (at least for me) people will include a sometimes lengthy explanation of their solution. Don’t just skip the lecture and paste the code into your project. Part of learning is actually learning (big surprise there). You aren’t going to learn anything by pressing ctrl+c then ctrl+v. In the end, you’re probably going to forgetting what the solution was and end up asking it again for a different iteration of the exact same thing.
Don’t forget: See if you already know/can find the answer on your own
One of the most difficult aspects of programming is that no solution will work every single time. You might get something that will work in a specific context, but not in another. The opposite applies here as well. Maybe whatever your doing is already applied somewhere else in your code and you just need to tweak it a tiny bit to work in the new environment. Another thing, and I know it’s super cheesy, but reading the docs might give you everything you need too. Try going to WPIlib’s documentation and searching for the task you are trying to accomplish. Chances are, a lot of people have done the same thing and there’s an overview of it on WPIlib’s site.
Penultimately: Don’t blame the person helping you if it doesn’t work
Sometimes when someone gives you a answer to a problem, it won’t work. Maybe part of the problem is they aren’t fully understanding the context of what you are trying to do, or it doesn’t really apply to whatever you are doing, but either way the people helping you are smart. Even if what they offer doesn’t work, you can still save that knowledge for future use. You never know what problems might occur in the future and maybe that misplaced advice could help!
Finally: Accept that the people helping you know more about the topic than you do
I know this is a pretty obvious thing, but It’s sad how many people will throw away someone’s input because they think they know more. Granted, it’s not nearly as bad an issue here, but it still needs saying. Just be humble even if you think some person is inferior to you. Honestly, you can think those things all you want as long as you don’t say them out loud. If you ask a question then claim to know more than whoever is helping you, they aren’t going to want to help you. Now or in the future. Just be a good decent human being.
Even if you are pretty good at asking for help, in my experience I’ve found that people who tend to somewhat follow these principles will end up getting the help they need and be able to have an actual learning experience so you don’t need to keep asking the same question over and over.
–Good luck this upcoming season!