Most teams reach for a ready-made template. Here's the engineering case for writing your own drivetrain wrapper instead — and why it makes your code easier to understand, easier to defend to judges, and genuinely yours.
There's nothing wrong with a good template. EZ-Template and PROS get strong teams to a working autonomous fast, and we teach both on this site. But somewhere between rookie season and a serious competitive program, a question is worth asking: do we understand the code that drives our robot, or do we just trust it?
Spartan Design's answer was to build a small drivetrain library of our own — a thin wrapper over PROS that exposes exactly the methods our students use, named the way our students think. We call it SpartanDrive. This page isn't the library itself; it's the reasoning behind building one, so any team can decide whether the same move is right for them.
This is the philosophy, openly shared. The actual SpartanDrive source, API, and code generator are part of our competitive toolkit and stay with the team. The idea is the gift; the implementation is the work. You should write your own.
When you wrote the method, you can tell a judge exactly what it does and why it's named that way. A black-box template makes "explain your code" a much harder interview.
Your library uses the words your team uses at practice. The gap between "what we say" and "what we type" shrinks, and rookies onboard faster.
You can't wrap a PID controller you don't understand. Building the library teaches the underlying control theory better than any tutorial.
EN4 rewards original work you understand. A wrapper you designed is the cleanest possible answer to "is this your code?"
If you do build one, these are the principles that kept ours clean and teachable. They're transferable to any team's library, regardless of language or framework.
A wrapper should hide boilerplate, not behavior. If a student can't predict what a method does from its name, the method is too clever. Favor five obvious methods over one configurable one.
Methods should read like instructions a driver would give: drive forward, turn to heading, stop. The vocabulary at the keyboard should match the vocabulary at the field.
A method that both moves and turns is two ideas wearing one name. Split it. Composition is a student's job and a great learning exercise; hiding composition inside a method robs them of it.
Keep a quick-reference for daily use and a deeper explanation for understanding. A student looking up a method signature shouldn't have to read control theory; a student learning the theory shouldn't have to dig through API docs.
If you build a library, the library is your work and you can explain it — that's exactly what judges and the notebook reward. But the code you put in your competition robot still has to be code you wrote and understand. Learn the patterns anywhere; write your robot's code yourself.
Want the beginner paths first? Start with the VEXcode V5 Guide or the EZ-Template setup. When you're ready to think about architecture, the code organization guide covers structuring a project cleanly.