I will say that as a professional software engineer, one of our constant decision points is: “Buy versus Build”.
Often times we find that there are existing solutions that provide 80-90% of what we want, some stuff we don’t care about, and some stuff we wish they would have done differently. Do we invest the time “re-inventing the wheel” (but gaining full control over the software), or do we use the labor of others to reduce the time-to-market. Is the functionality something “core” to who we are? Do we think we can implement it “better” than the existing solution? If we build it “better” does that give us a competitive advantage?
When @jpearman requests prior year code submissions, and I see so many teams that use PROS and write their own PID/Odomentry/etc. I wonder what led them to decide not to use Okapilib (and whether that was even an active decision).
I know my opinion may be outside of the Vex mainline (and I’m not an educator), but I don’t see much value in re-implementing the wheel, when it comes to software. Do I think teams should take a crack at writing their own PID or odometry? Sure. It’s a relatively simple concept that can teach some basic coding skills, and maybe allow them to apply what they’ve learned in math. Their implementation is likely going to have problems (straight up errors in math/logic) and probably won’t incorporate good software design practices. Without seeing better code, I think many roboteers won’t even know that there ARE better ways to program.