If you’re working for yourself, in which case do whatever your little heart desires, but if you’re building something for a client then your primary concern should be making ethical technical choices.

**When someone else is paying you to code, your responsibility to them is foremost to create the most value possible for their cash investment. **

Time and time again, I see developers making technical choices that go against the following principles, and while they may not deliberately set out to be un-ethical, and can often make elaborate justifications, the net result is ultimately a question of ethics.

Ask yourself:

  • Am I unnecessarily constraining my client’s future hiring pool by using this technology?
  • Is this technology the most reasonable fit for the problem?
  • Do I know enough about this technology to say that it will be reliable, documented, and well supported?
  • Will this technology allow the project to be delivered within the timelines or is their a risk that it could in fact swell timelines?
  • Does my client understand as completely as possible the implications of the choice I am making?
  • Is my client insisting on the use of a technology without understanding as completely as possible any of the above questions?

Or you could turn these questions on their head and make statements. Working for a client is not:

  • An opportunity for you to explore new technologies that your client can’t find anyone else to work on.
  • An opportunity to use a technology for exploring the problem.
  • A way to grow your skill set on their time and money.
  • An opportunity to introduce more risk into a project at the expense of the client’s timelines.
  • An opportunity to blame the client for being ‘stupid’.
  • A chance to tread gray areas in order to expand your resume for the future.

Do you agree? Email me at john@mcdowall.info.