Well, like anything that is engineering, there are multiple ways to get there. There's no one perfect solution. You just gotta deal with it. I think the first assumption to make is that the programmer knows what microcontroller is being used and can code the very basic stuff and wire the project up appropriately. Say your project was accessing a slave device via I2C. And something happened and the decision was made to move from an Uno to a Mega, perhaps more than 4 analog inputs were needed. Much of the wiring could move from pin to pin directly, but the I2C pins are in a different location, so one might have to move the I2C wires from A4/A5 to D20/D21. The code may not have to change, but the wiring does.