Ethics & software development

Published on - Updated on

This article is an opinion. I‘m sharing this opinion to provoke a discussion and put my thoughts on paper. As my views evolve, I will return to this article with updates.

In this day and age, where many users’ data is up for grabs on the internet, software developers must work according to a code of ethics that they adhere to daily.

Below are some of my thoughts on what it means to be an ethical software developer.

Privacy-first development

When implementing a new feature that requires additional user data to be stored, ask yourself if there is any other way the functionality could work without storing this data. If the data is needed, inform the user about the additional storage requirements.

Once user data is stored, a company is responsible for keeping that data secure. This means implementing a strict password policy for all secrets, using two-factor authentication where possible, applying the principle of least privilege, scrambling user data when it is moved to non-production environments, and solving security issues with the highest priority.

Honesty

You might think: “Of course, honesty is an important trait. Why even mention this?”. In reality, though, being honest can be very hard. You might have to give an estimate that seems unreasonable to your manager. Or you might have to give an unpopular opinion. Sometimes you don’t want to hurt someone’s feelings, …

Let’s dive into one example. Your manager asks you for a deadline on a business-critical project. You know he expects you to come up with an estimate within one week. However, the project requires changes to a codebase containing significant technical debt. In this scenario, honesty means giving your manager the deadline he doesn’t want and opening up the discussion on what can be done within a reasonable time frame.

Another common scenario happens when giving feedback to a fellow developer or, even more difficult: to a manager. In this scenario, it is often easiest to say everything is all-right. However, the right thing to do is to open up a discussion on some things that can be improved. The key here is to remain constructive and respectful.

Finally, sometimes our natural reflex to avoid hurting another person’s feelings can prevent us from giving the feedback that this person needs to become a better version of themselves. Be careful, though: There is a thin line between honesty and disrespect.

Being honest without being disrespectful can be challenging sometimes, but being an ethical developer means constantly improving how you give honest and respectful feedback.

At Netflix, this principle is integral to the company’s culture.

Transparency

This one is easy. If you do the job, you don’t have anything to hide. Open up your calendar, share any meeting notes you‘ve taken, communicate if a deadline seems to be at risk, …

Respect people’s time

Respect for people‘s time usually comes down to rules of meeting hygiene:

Continuous learning

Developers should be open to learning new technologies and tools at all times, and companies should provide learning opportunities.