How to make technical choices
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.
- 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.