Musing about ethics and software develpment

There's something that I haven't seen in education plan of IT degrees ever - professional ethics, and I think it is huge miss. Ethics is being taught for lawyers, MD, teachers and lots of other degrees. Ethics tells us that there's something beyond our job responsibilities. Ethics reminds us that the one who is footing the bill may not be the final decision maker of everything. That if something is legal, it is yet does not mean it is a right thing to do.

Let me share a story about one of my previous project. I was working for a IT services company and we were helping our client to deliver a new version of software. A peculiar thing was that if there were a bug in the Product, than something horrible could happen (in the worst case - somebody could die). And I was the quality guy on a project.

Our sponsor (the one, who was footing the bill, and ultimate decision maker) had his deadlines. He already made a demo for marketing people and wanted to ship the software. Users we craving to get the new version. But there was a problem.

The problem though was that software quality was a CRAP. Software code was a CRAP. Underlying algorithm was alright, but implemented CRAPpily. It was years too late to start building quality into the Product. And this guy wanted us to ship. He told he was taking the responsibility. He didn't see problems with quality. It was not his concern.

We had "no warranty" in the readme, so legally we were fine. My company management was OK to ship (client approves). Client was OK to ship. Seems like we did our job and there was nothing we could do more, lets move on?

But there was something bugging me. It was utterly wrong. One just can't ship Product not having level of certainty about Product's quality if associated risk is that high. I just could not stand it. I was NOT OK to ship. I consider this to be not ethical to be OK to ship under such circumstances.

Yes, we're here to help to solve one's business problems, to generate more revenue and to service our companies. But there should be a line somewhere one does not cross. There's something that companies should not ask us to do, and we should not agree to do.

I also didn't have ethics classes in university, so I don think I can coach that, but there's one heuristics that I have. Whenever we're trying meet our company goals and advancing its business we should never do things that have high probability of damaging interests of our Product users. That is unethical. And if we have self-respect - even the most generous bonus should not outweigh this.


Popular posts from this blog

Test automation framework architecture. Part 2.2 - Two-layered architecture

Test automation framework architecture. Part 2.1 - Layered architecture example

Test automation framework architecture. Part 2 - Layered architecture