Our customer has a "No unnecessary code" policy. And the people they have assigned to my project thinks this includes:
- Dianostic code
- Cross platform compatibility code
- "Software" faultcodes. ("Software doesn't break therefore these are unneeded.")
- Class methods that aren't used for THIS application ("Customer Code Review Issue : Please verify all methods are actually called and remove unused code." Say hello to a divirgent code base.)
- Anything that THEY believe the end user won't care about. (They never actually ask the end user.)
They told me I can have a version I use for "verifying algorithms" but it has to be removed from the customer submittles. I try and explain I can't verify to a different build than I'm submitting, but they don't seem to get it. The cross platform stuff is significant because we typically start both hardware and software designs at the same time, early development has to use a different set of hardware for testing/debugging.