Prototype early so that you have time to debug the hardware with the software and make changes as they come up.
Have backups for each component just in case something breaks at a critical moment.
Create the full assembly CAD early on so you can visualize potential interferences more easily.
Space on the chassis is valuable so be smart with how and where you place components.
The multimeter is your friend for finding shorts and checking for connectivity.
Check every pin for connectivity/shorts immediately after soldering because it will be difficult to find once everything is hooked up.
Put electrical tape on the backs of the boards and hot glue jumper wires together to ensure they don't come loose during testing.
If you want to use your encoders to implement some type of control, make sure they are on the same PIC as your motor input pins. It will be very difficult to communicate error/micro-adjustments between the leader and follower if you have encoders on one PIC and motor control on another.
When you are designing your first state diagrams, remember you need to divide what services go on what PIC early on and communicate with whoever is designing electrical to make sure you have enough OC channels/analog pins or whatever else you may require. Once you start writing code, it becomes increasingly difficult to move things between PICs.
Never try PPS unlock. Anything with the term "SYSKEY" will totally break your interrupts even if that command is on a different service. This can be a very challenging bug to find!
Our bot the PIC destroyer, who burned up over 11 PICs over the course of the project.