TL140,
The MOST important factor is to get to know your customer's maintenance department and learn their capabilities. What they are used to seeing, their ability to learn new things.
I have changed my tune over a few years now, and have decided that it's not my responsibility to program for maintenance. Over the past five years the projects I have worked on were either greenfield (no maintenance team hired until near operational), maintenance had an electrician that could force IO on a PLC5, or maintenance didn't have someone who could understand the 'big picture' beyond just the PLC(Servers, RDP, SQL, SCADA...etc). Its the facilities responsibility to staff for their needs, not for me to dumb-it-down for their needs.
That being said, I do feel they are important, and will make sure to train them as well as I can during system turn-over. However, if they can't understand the philosophy of our standard (follows S-88 philosophy), that's not my problem. If they choose not to participate, that's not my problem. If they need 'ControlLogix 101', that's not my problem.
I also don't see the maintenance team the ones to 'debug' the software either. 85-90% of it should be sorted out before you commission, 95-98% should be sorted out by the end of commissioning, the remaining might be odd-ball issues that come up over the warranty period where I get a call about it.
If problems do come up, the HMI/SCADA displays should provide useful information to the problem, if maintenance always has to get online with the PLC to figure out the issue, then something is missing in the overall design of the control system.
I'm mostly talking about large systems here, 500-1000+ hours of PLC programming and efficiency is the key to making $$. Program for maintenance and you'll be over-budget and full of 'change-orders' to try and make up for it. Causes you more stress in the long-run. I've found that most people buy into our standard fairly quickly, those that don't are stuck in the I:0/5 days.