Other things have been addressed, so I'll just hit this one aspect. While you don't absolutely have to have a programming track, I will say that it is desirable. If nothing else, it allows you to test a decoder's functionality without applying the main track voltage to it and possibly burning up a decoder that's been installed improperly. These days I do use programming on the main for pretty much everything, but I ALWAYS put the locos on the programming track first and query the decoder to make sure nothing is shorted. And yes, even factory-installed decoders can have issues. While having the programming track to check your own installs is an absolute lifesaver, it's also nice to have a place where you can clearly and unequivocally know whether there's a fault even with factory-installed decoders. I've only had one that came from the factory shorted out to the motor, but if it can happen once then it can absolutely happen again, and better to be able to tell them you found that out on a programming track than for them to start questioning how it got fried on the main.