Time to talk about ethics for professional programmers

As a professional software developer, you are interested in everything about programming. You follow blogs, read books and take online courses about programming. You really love your profession. That’s great! But unfortunately, I must tell you: this is not enough.

To become a programmer nowadays is just a matter of discipline and passion, one does not need to buy equipment difficult to find or study expensive courses to become a coder. Never before we had so much knowledge that’s so easily available and with such quality.

Still, I feel that we are forgetting an important part of what is to be a professional programmer in the media nowadays: ethics. That’s it, ethics. But what it means to be an ethical programmer? And why is that important? Does it improves your coding skills and productivity? Not necessarily, but I’m gonna talk about why you should strive to be an ethical programmer as much as you strive to be a great coder.

You know, I’m not a programmer for a long time. I graduated only 2 years ago in Computer Science, and I’m working as a web developer for that long too. But in this short period of time I participated in a few projects in different companies, with different teams and technologies. It hurts me to say, but working in some of these projects wasn’t fun. Lots of things happened that I did not believed that were right, but since I didn’t have much experience I kept telling myself: “This is the real world, things don’t go as smooth as they should and thats the way things are.” But some months ago, after living the same situations over and over again, I read a book that changed the way I work forever: The Clean Coder, by Robert C. Martin, also known as Uncle Bob.

In his book Robert tries to put a code of conduct for professional programmers. But what does that mean? Talk about ethics in the software engineering field does not seem as straightforward as, e.g. talk about medical ethics. And it seems like many of us don’t even imagine that such a thing matter for us and keep repeating the same bad practices, hurting their teams and their companies sometimes without even noticing it.

Did you ever send code that was not properly tested? Did you ever said ‘yes’ to unreal estimations, knowing it won’t be enough time? Do you code based on “faith” that it will work? Do you only warn your team that you gonna miss an important deadline a few hours before it expires? If you ever did something like that, you have worked unethically. It may not sound that terrible, we all have seen this kind of behavior happening many times. But as long as stuff like this keeps happening we will work in environments that are not good. We will go to work unhappy, get burned out and damage ourselves and the projects that we are suppose to build. But how do we change that?

First of all, I believe we must acknowledge that we are not machines and we don’t code for machines. It’s easy to be lost in the logical side of programming and forget that, in the end, what we do is done by humans and for humans. Every line of code we write is going to impact someones life, and that’s a big responsability. Denying that is not only unethical, it’s unresponsible. Great coders write code that is both fast and readable by humans. Despite that being an obvious fact, it’s not rare for us and our coworkers to treat ourselves as machines. We even joke about it! By accepting the human nature of programming, we can allow our workplaces to be less stressful and more benefical.

An ethical professional is not afraid of saying ‘no’ when it’s the right thing to do. Managing our clients and coworkers expectations is hard, and it needs to be done responsibly. Saying ‘yes’ when you know that the anwser should be ‘no’ is not only bad for you, it’s bad for everybody. People need to know when something is not right, and they should know it as fast as possible.

The scenarios above are only some basic ethic issues that we face everyday. If we dig deeper, many other dillemas will appear in front of us. If your employer decides to make some obscure experiments with your users data without them knowing it, are you, who have written the code for that experiment, responsible too? If an autonomous car suffers an accident due to software problems, are the programmers responsible? With the advances in technology, questions like these and many others will become more common.

It may look cool to say that software is eating the world, but we can’t forget that software is only a tool. A tool that was written by humans for other humans, and not something magical that is not accountable for the damages that it may cause to peoples lives. Specially nowadays when new startups are created everyday and many have as their biggest concern just grow as fast as possible in order to raise lots of cash from investors(unfortunately, sometimes ethics don’t go very well with money). I would love to see some talks about how the big technology companies handle ethic issues, both in the programming side and also in a broader level…

Being an ethical professional is not easy. They don’t teach it at school, and there’s not a JS framework for it(at least not yet! ;) ). The opportunities to act ethicaly will appear every day, and in the end, it’s a personal choice of each of us. I hope you make the right choice.