Ethics & software development
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:
- You shouldn’t send an invite if you can’t set a goal and an agenda for a meeting.
- The goal and agenda for a meeting should be shared in advance to allow people to prepare for said meeting.
- If a meeting requires an outcome, limit it to five people. Only some people will get time to speak when you have more than five people. Usually, these are the most outspoken people on the team. For town halls and other single-direction communication meetings, it can be acceptable to have more people.
- Give people time before or after a meeting to take a break before their next one starts, and stick to the planned time slot.
Continuous learning
Developers should be open to learning new technologies and tools at all times, and companies should provide learning opportunities.