As more developers get their start through freeCodeCamp, Codecademy or any of the multiple available bootcamps we all must adhere to a few principles. Ethics as it may. Not only should we strive to learn Web Development but we should strive to do our best. To help others. And to do all work as ethically as possible.
If you haven’t seen The Programmer’s Oath video from Uncle Bob Martin YouTube video I would definitely suggest you check it out. I’ll be linking to it here if you want to watch the video on YouTube.
I will not produce harmful code.
Creating code, be it knowingly or unknowingly, willingly or unwillingly, that is harmful.
As a Web Developer it is your job to preserve and defend the profession of programming. You should strive to create code or software that does not harm a company, the profession or yourself.
The code that I produce will always be my best work. I will not knowingly allow code that is defective either in behaviour or structure to accumulate.
Creating good quality code should be something you strive for. Releasing incomplete or “bad” code should never be seen as good work. Ethically and morally. Code that is defective in structure will not only impede your work but your teams’ work as well.
I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.
Creating code, that can be at any moments notice, proven to work as it should. If you add a new feature or fix a bad structure in another part of your code it should not break the entire program. Your program should be thought out and written well.
I will make frequent, small, releases so that I do not impede the progress of others.
Everything you do in code, everything you do in projects should be done in small steps. Building a feature, fixing a bug or re-writing a piece of code shouldn’t impede nor take such a long time that fellow coworkers cannot progress with the project.
I will fearlessly and relentlessly improve my creations at every opportunity. I will never degrade them.
Everything you work on should be constantly improved. If you see a bad structure or bug in your code you would jump at the chance to fix it. Even if you do not have a problem, you should still be looking at your code thinking of ways to do it better. To improve your code at all times.
I will do all that I can to keep the productivity of myself, and others, as high as possible. I will do nothing that decreases that productivity.
You need to be thinking of your work colleagues, associates and the people that rely on your work. For instance, don’t checkout a part of the program that someone else depends on for too long. Don’t write extremely long tests that runs forever. Write short and concise tests.
I will continuously ensure that others can cover for me, and that I can cover for them.
In software, a program or a piece of code should not be understood by just one person of the team. Being a coder means working as part of a team, which means that if someone is sick or unavailable, someone else should be able to stand in.
I will produce estimates that are honest both in magnitude and precision. I will not make promises without certainty.
When you make an estimate, you need to make it clear that it is a guess, not a promise. Always try to make estimates in 3 cases. Best case, worst case and nominal case. Make sure that everyone knows that the worst case can always happen.
I will never stop learning and improving my craft.
You should always be learning new languages, frameworks, techniques and processes. You should always look to learn going forward and how to implement what you learned. Not all of these promises are practical at all times. But they should be followed as closely as possible.
Thank you for taking the time to read this. Please check out some of Robert C. Martin’s books. My personal favorite was Clean Coder and once I picked the book up I couldn’t put it down. It isn’t as technical as Clean Code but it was a fun book to read.
Found an issue or have any recommendations? Please open an issue on my Github repository.