Refusing to work with a technology or a tool
As a developer, assume that you are given technology or tool X and told that you need to create Y using it. Sometime it's just getting down to business and getting it done. Sometimes you realize that using said technology is a mistake. It could be that the technology isn't appropriate for the task. It could be that there are simpler cheaper solutions (things that take less of your time). It could also be that you feel that it's outside of your job: Like asking an accountant to do the floors.
What do you do?
What you feel as professional, refusal to waste money and resources, could be interpreted as unprofessional. Your refusal could be interpreted by your manager as behaving as a child:
"Developers who act like children (refusing to use a tool mandated by a customer!) are not good developers no matter what their coding skills. ..."
The above answers sounds a bit childish: Since my parents refuse to let me eat candy, they are not good parents.
Another answers deals with the role of a developer (slightly rewritten):
"you hired developers and you are trying to get them to do something else"
If it's not your job
A more experienced coworker told me that the best action is to endure. If you get to do more interesting things later on, then it could be worth hanging in there. If your manager starts to give you more of the same work, since you have done so well before, then it might be time to look for a new job. It could be that your skills as a developer are less valued than work with technology or tool X at that company.
Creating shoddy solutions?
Developers are usually driven to do a good job. I've done things I'm not proud of. I've helped create solutions that are shoddy because the underlying technology is wrong for the customer. But I've done it since the customer wanted it. I've tried to do the best job I can. I've informed my superiors about the problems. It could be that the shoddy solution is good enough for the customer. It could be that you realize that technology or tool X is really good when used specifically to do the things it's designed for. You can then help customers use X when it's appropriate.
Try to offer alternatives
It could be that the request to work with technology or tool X is simply the request to get work Y done. If that’s the case, then you can reason with your manager about not involving technical terms when talking about what needs to be done.
It could be that a change of requirements can make the technology or tool a better fit. In that case, you should try to get your manager to steer the customer in the right direction.
What should you avoid?
- Making it personal or emotional. This will only make it harder in the future to work together.
- Refusing in front of others. This might require your manager to save face.
- Talking about the technical reason to a non technical manager or customer. This will sound like an excuse to a non technical person. You should give an easy to understand summary.
- Fooling yourself into believing that technology Y, that you have not tried yet, is better. It might be better in some aspects. It might also be that it’s got different problems.
- Fooling yourself into believing that technology Z, that you usually use, is better. If you don’t know technology X, then an outright dismissal of it is without grounds. That said, you should be sceptical of any technology that you hear fearful rumours about.
- Fooling yourself into believing that you can roll your own framework that does it better.
- Fooling yourself into believing that you need a framework when all you need is a bit of code.
Comments or errors?
Fork this post and do a pull request on github