I started reading The Clean Coder: A Code of Conduct for Professional Programmers, written by Robert C. Martin (“Uncle Bob”). It’s a fantastic work and a must-read for anyone practicing software development. In this article, I review the first chapter of the book.

The Weight of Professionalism: Responsibility

It is a wonderful feeling to call yourself a professional. The title imbues great pride and a sense of purpose to one’s life. It brings with it distinction, honor, and respect. But, the accolades and recognition are only one side of professionalism. Professionals also take responsibility–especially for their mistakes.

“Nonprofessionals don’t have to take responsibility for the work they do–they leave that to their employers. If a nonprofessional makes an error, the employer cleans up the mess. But when a professional makes a mistake, he cleans up the mess.”1

It’s imperative that those of us practicing software development begin to hold ourselves to a standard of excellence. Uncle Bob draws an interesting analogy between software developers and doctors.

“The human body is too complex to understand in its entirety, but doctors still take an oath to do no harm. If they don’t take themselves off a hook like that, how can we?”1

Now, let’s be fair. No one is perfect. No software is perfect. What is required of professional software developers is to strive every day–and throughout our careers–to approach the asymptote of perfection. What is required of us is to hold ourselves to account for creating the best possible software we can.

How can we do that? How do we take responsibility for our profession? Uncle Bob lays out an interesting adaptation of the Hippocratic oath, tailored for professional software developers.

An Hippocratic Oath for Professional Software Developers

  1. Do no harm to function
  2. QA should find nothing
  3. You must know it works
  4. Automated QA
  5. Do no harm to structure

They key concept underlying these goals is testing. Test your software. One more time: test your software. Have you ever been afraid to make changes to your software? Have you ever been concerned about breaking it?

When you write tests for your software that cover as close to 100% of the code as possible, you will simply not be afraid to make changes to the software. You can change models and class names

Do not treat testing as an afterthought. Do not consider it a “nice to have” feature that you’ll get to once you have an MVP (minimum viable product).

Does that sound too draconian? Is it too much to ask? Is it too much responsibility? Reflect on this statement for a moment:

“Professional developers are so certain about their code and tests that they are maddeningly casual about making random, opportunistic changes…In short, they treat software the way a sculptor treats clay–they continuously shape and mold it.”1

Professionals Work Hard

While crafting functional and flexible software is the primary responsibility of professional software developers, Uncle Bob makes the case that it is also our responsibility to take ownership of our careers.

Uncle Bob discusses the skills, attitudes, and practices that professional software developers adopt to hone and improve their trade. Briefly, these include:

  • know your field
  • continuous learning
  • practice
  • collaboration
  • mentoring
  • know your domain
  • identify with your employer/customer
  • humility

In Closing

Professionalism requires responsibility. As software developers, we must take responsibility for the software we create. We must also take responsibility for advancing our knowledge, understanding, and skills.

Professionalism is not an end goal. It’s more than a title (i.e. ‘Professional’ Software Developer). Professionalism is a way of being and doing. It pervades all aspects of our trade and has implications for how we spend our time each day.

It can feel overwhelming to hold oneself to high standards. Here’s the good part: we don’t have to be perfect to be professionals. We just have to beat yesterday. We have to continue taking small steps in the direction of perfection. It is in the practice of professionalism that we become professionals.

References

  1. Martin, Robert C. “Professionalism.” The Clean Coder: A Code of Conduct for Professional Programmers. Upper Saddle River, NJ: Prentice Hall, 2011. N. pag. Print.  2 3