I'd call myself experienced at programming mobile electronic control systems but not an experienced computer programmer at all. I've used a few other platforms besides GUIDE, so I've got some point of reference. With that all said, I would advise that the decision to model your program as a state machine depends more on the application.
If your specific application with driving a tracked vehicle can be described primarily as having discrete modes of operation then you might program it as a state machine. Conversely, if the logic is more of a mix of dependent and independent functions then you might separate out each machine function and program it that way. I've more frequently dealt with the latter type of system.
For example I might have my logic grouped into functions such as 'engine governor', 'engine on/off', 'diagnostics (hydraulic & engine)', hydraulic logic', 'input signal conditioning', 'valve output signal conditioning', and 'winch control'. To borrow from the IEC you can call these logic groups Program Organizational Units (POU's) which have input, output, and internal variables. You might, for example, have some signals going from the 'engine governor' logic to the 'hydraulic logic', but for the most part these are separate programmed functions.
All of that said, I sort of cooked that strategy up myself without any sort of experienced mentor, and it works for what I'm doing. Some of the much more experienced developers on here might have very different ideas.