Is it ethical to follow company policy when you think it's wrong?
It's been suggested to me that I resign, as the company where I work is insisting that I code various functionality to work in a particular way which is only supported by Internet Explorer.
I believe I'm doing the right thing by complying with the policy, even though I've raised objections about it.
Is this the right approach?
In particular the comments by Breton, See the comments associated to the second response.
Let's not mix ethics here. Bad ethics would be stealing a computer from your workplace, lying to spread information against some coworker, or things like that.
This is about process, rules, and requirements. You must follow the company policy. Of course you can always produce a document explaining your point of view and try to convince the powers that be, but in the meantime, and in any case if you don't succeed, you still have to follow the policy.
That said, I don't like the "suggestion to quit". But that's another story.
Coding only for Internet Explorer may be politically stupid, but I would not go so far as to say that it's morally wrong. It's no more wrong than, say, selling your products only in the US. You'll lose some market, but surely that's the company's choice. If you disagree that strongly, you may not want to work there but let's not involve ethics in it.
If you feel the need to resign every time you have to make a technical compromise, you may be in the wrong career.
The right approach is the one you've taken - note the objection, and get on with the job you're being asked to do.
If, on the other hand, you're constantly being put down on technical points, you may be happier looking for a job in a company that has a similar view to yours.
In response to the JS email requiring Outlook issue - it's obviously stupid for a public web application. It's perfectly OK on an intranet in a company where every machine has IE and Outlook.
If your company's decision over which browser to support is an ethical question for you, then you need to sit down and have a long hard look at yourself. Your priorities are SCREWED UP. Unless you are a major shareholder, that company is your EMPLOYER, not your religion, and not your life.
Your company pays you to do a job, and that job is to write code. They have decided (in the face of your hopefully reasoned objections) that limiting their support to IE only will still make them money while saving them development time.
If they want you to code for IE only, then the only sensible thing you can do is code for IE only!
If you really can't stand coding for IE only, then leave. I'm sure someone else would love to have that paycheck in this economy.
In this case, your company's business decisions are perhaps economically misguided, but they're not unethical -- at least, not any more unethical than some other market restriction. And as others pointed out, if this is for an internal application, that decreases the level of significance somewhat. Besides, detecting user agents is fraught with all kinds of peril; chances are good that determined people will be spoofing themselves as IE anyway.
In short, not something to lose sleep over.
I think your organisation's decision to restrict its application to users of Internet Explorer is a business choice, and whilst it may be short sighted, I'd hardly regard it as an ethical or moral issue.
Now if your company was advocating clubbing baby seals or spraying toxic waste into the sea I think I might be taking another look at my career options. Those are real 'ethical' and 'moral' issues.
If the job pays well and they treat you nice then suck it up.
This is similar to what I struggled with early in my consulting career. As a consultant (telling the client what to do, not a contractor, where they tell me what to do) I often told them to do A and they wanted to do B. Initially this made me crazed and hard to work with (at least.) However, I eventually became enlightened (small "e") and developed what I called my "Consultant 2 step."
Me: You should do A and here is why... Them: we want to do B Me: OK, but if you do, this is what will happen . So, you should do A, and here is why (again). Them: We want to do B. Me: OK.
I realized "it's not my system and not my project." and Life goes on.
and,from the Tao De Jing: 57. Conquer with Inaction Do not control the people with laws, Nor violence nor espionage, But conquer them with inaction.
For: The more morals and taboos there are, The more cruelty afflicts people; The more guns and knives there are, The more factions divide people; The more arts and skills there are, The more change obsoletes people; The more laws and taxes there are, The more theft corrupts people.
Yet take no action, and the people nurture each other; Make no laws, and the people deal fairly with each other; Own no interest, and the people cooperate with each other; Express no desire, and the people harmonize with eachother.
put this into perspective.
you have a job.
this is a minor issue of dissagreement.
keep your job.
IMHO it's tricky.
I'm a contractor and at the end of the day, regardless of what I think is right or wrong, they would replace me with someone who was will do do as he is told if I refused. Looking at the climate we are in being in a job is a big bonus. I do however suggest better ways of doing things, but if the client is not willing to listen then nothing will change.
I can also see some of their reasoning, they know only people running IE will be using the functionality and thus they can lower their testing and development costs.
The suggestion to quit was phrased as so:
By coding specifically to IE and outlook, you're participating in an unethical corporate lock-in strategy. Maybe you can live with the future pain and suffering you are causing to all web developers, and users of the system. If I were in your position, I would have to resign.
The "Ethical" issue discussed is that you're contributing to Supplier Lock In. Although I can understand where the commentator is coming from, pretty much everything you do as a programmer contributes to some kind of Supplier Lock In. The sheer weight of historical code means that it's going to be difficult to program in languages other than those that have been used before. (Try writing that fancy .NET code in a way which makes it easy to transfer to a new language) The fact that your users are trained to use certain packages, and there is data in these packages that cannot easily be transferred to other systems also means that you're locked in.
You're looking for a technical solution to a problem, and because of a combination of the packages currently used, inbuilt package security and corporate policy you're gonna have to suck it up. No need to resign, and there's no real ethical issue here.
If you do have a problem with how this is going, make sure that you compartmentalise the code to both open up Outlook and populate the fields. If you do this, then replacing the module with an "Open this up in Eudora and populate the fields" replacement will be a bit easier.
I think it's easy to get heated about something like this, but when you put emotion aside, I don't believe it is a complicated issue.
If your company is only using IE right now, then coding only for IE solves the problem. If, however, there is a negligible cost to coding in such a way that it works for more than IE/Outlook (In the example you've cited), then to do so adds value to your work by improving the solution you are providing for your company in the event that they do change browsers, and still use your code.
As user 42 stated, perspective is important here.
Resigning over that is a stupid move. You've raised your concerns and maybe they might be taken on board next time.
Doing something only supported in Internet Explorer is something I've done in the past. Try coding in a warning for other browsers or something to at least show you're aware.
I would say yes. If it's you company policy, and you have explained your position on the subject but they still want it that way, then yes.
It's not an Ethical matter, it's a work matter, and at the end you must follow you employer work lines.
Something people seem to be missing is most good developers have pride in their work. They want to make systems that work great and provide minimum disruption to users (e.g. having to fire up IE for certain sites).
I have worked at places where the code never gets refactored, classes are often 5000+ lines long and the UI is inconsistent and dated. There's no pleasure to be had working in an environment like that. For many people, bad design decisions from management / architects can really destroy your ego and drive to develop.
I admit in this case it doesn't seem to be much to get worked up about but obviously the original poster feels strongly about the restriction. Not to mention the high probability of other bad management decisions considering they are abandoning / annoying a large percent of the market.
If you are able to find a similar paying job but with a better culture go ahead and resign. Life is short and it's bad to waste your talent developing for a company that doesn't follow best practices. And yes, developing solely for IE is a bad practice (with few exceptions).
Is this really any different to coding something to only work on Windows?
They may be completely alienating part of the marketplace by limiting themselves to IE, but it is not morally wrong. Just a bad business decision.
Do the work as required, but make your own notes as you go so that you can 'upgrade' the coding later to be more compliant with other browsers.
Don't be evil, even if you work for Google.
If you care enough, quit your job. Else do what your company wants you to do.