Hackernoon logoThe Ethics of Software Development with Uncle Bob Martin by@gabor-zold

The Ethics of Software Development with Uncle Bob Martin

Gábor Zöld Hacker Noon profile picture

@gabor-zoldGábor Zöld

The clip is an excerpt from episode 15 of the Level-up Engineering podcast:

You can find the full interview with Uncle Bob here:

Clean Code: The Manager’s Guide to Building Quality Software

I recently ran into this hot take from Uncle Bob Martin (surprise!) on the need for ethics in the software industry. He makes some very interesting points in this interview that I think is worth considering.

Spoiler alert: I really don’t have a lot to add to what you heard, but it made me think. I’d like to know your thoughts about the issues he brings up.

1. The growth of tech is a global issue

Tech is everywhere. Code is everywhere, and more developers are needed everywhere.

The number of software engineers doubles every five years based on data from Stack Overflow. This means there aren't as many experienced engineers around as we'd like, while true veterans are next to impossible to hire.

Based on my own experience this seems to correlate to reality. Most of the new hires in our company are junior engineers as well, as they’re far easier to find on the workforce market.

The data from Stack Overflow also shows that engineers get more efficient and more knowledgeable as they gain experience over the years. This is an interesting issue, because developers new to writing code may make avoidable, but costly mistakes.

It hurts everyone across the globe. Yet it’s not obvious if there is anything that can be done about it, beyond what we’re already doing. Namely: prioritize knowledge sharing.

2. There is no ethics in tech

As it’s mentioned in the podcast, there was an important precedent in the Volkswagen case. But is it the right one? Is it at least a good one?

Their engineers in question built a program that determined whether the car was used on the testing rig and adjusted the engine settings accordingly. They didn’t technically cheat. They did their job and created something that was used for cheating.

They also must have known full well what they’re building, what it’s going to be used for, and they did it anyway. They could have reported their company, and they could have said no. Is that a realistic expectation though?

What is the responsibility of software engineers in how their software is used?

Is it zero? Is it 100%?

Should it be determined on a case by case basis? If so, based on what criteria?

What if you build a program, and you actually don’t know that it’ll be used to break the law? Can you still be sentenced?

I think we need clear rules and laws around what program is illegal to build, and with what intent. But I have no idea what it should be precisely.

3. Is there a need for software engineers to get a license?

Nothing works without software. This is painfully true, and I can’t even point my finger at the exact moment it happened.

Given this responsibility and the issues above, we seem to need more than just regulations around how software can and can’t be built. There seems to be a need for a similar set of ethics medical doctors and lawyers have.

This also demands the creation of some kind of licensing process, to “get into the bar” for software engineers. Maybe that should come with some kind of oath. What might be the values that software engineers need to consider above all else?

This also implies a need for the requirement of a formal education process. But is that realistic?

Currently, degrees aren’t a high priority when hiring engineers in 2020 according to the State of Software Development research; and my personal experience lines up with that. Wouldn’t it slow down the growth in the number of engineers in the world? Or can it actually be beneficial?


Maybe a formal education isn't necessary, but there is a place for a hybrid system. Junior engineers may get to learn by themselves and on the job under the supervision of a licensed engineer, and they only get a chance to get their license once they reach a fairly senior level. Would that make sense?

What might be the solution?

Do we even need one?


Honestly, I’m not trying to jump to any big conclusion here. I’m just asking questions. I certainly find it an interesting topic to think about, that may (should?) rise to the forefront of discussions in the industry.

Do you have any thoughts you’d like to share about this?


Join Hacker Noon

Create your free account to unlock your custom reading experience.