R – How to get a customer to accept better practices and cross-platform debugging during development

testingverification

Our customer has a "No unnecessary code" policy. And the people they have assigned to my project think this includes:

  • Diagnostic 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.

Best Answer

It's not clear who owns your code (your employer or the customer) or whether your customer is unwilling to pay for this code or simply unwilling to ship with it. If your customer thinks they don't care about cross-platform, for example, they're quite right in being unwilling to pay for something that may benefit them only in the future, or may benefit only your other customers.

Also, if your customer is developing for an embedded platform, every byte of ROM and RAM counts, and again they're right in asking you to eliminate unnecessary code.

So how do you maintain a single, unified, non-divergent code base while still satisfying the needs of this customer? Specialize!

I have a colleague who founded a company whose sole business is the USB software stack. They have unbelievable cross-platform issues, configuration, and so on. Their solution to this problem is to have a single code base, and then they automatically specialize it for each customer. The automatic specialization includes things like removing code deemed "unnecessary" on a particular platform. Without knowing more about your problem, your business, or your other customers, that's the path I would recommend for you.

Related Topic