What does is mean to be a professional programmer?

Some say that it is a specific set of skills. For others, it’s a pledge. I think both are not going far enough.

A professional programmer is a programmer who acts like a professional, like doctors, lawyers, counselors, and engineers.

In my opinion, acting like a professional means several things:

  1. Putting users first.
  2. Elevating merit and eliminating bias.
  3. Striving to find the best solution.
  4. Debating solutions and never attacking people.
  5. Putting differences of opinion aside when they are about things outside the profession.

While all of the links I provided are good introductions to what I believe a professional programmer is, I want to explain each to make my vision clearer.

Putting Users First

First, who do I mean when I refer to “users”? I mean “the people who will actually use the software.” That definition makes things a lot more complicated than it was in 2005 when the article I linked to was written.

This definition means that people who buy software, or use it, should be served by the software and that the software should not serve the interests of its maker, whether programmer, company, or government.

Elevating Merit and Eliminating Bias

Merit should always come first. As such, professional programmers should not allow their biases to color their perception when evaluating code. Everyone, and their code, should be treated the same.

Striving to Find the Best Solution

What does matter when evaluating code is whether it is the objectively the best solution. This means that professional programmers do not use their subjective opinions in debates; they use objective measures, insofar as they can.

Thus, professional programmers do discriminate between different solutions.

Debating Solutions and Never Attacking People

To discriminate between solutions, professional programmers need to debate the merits of different competing solutions. This is fine, and even good, if it is done solely on objective measures.

However, Linus Torvalds-style name-calling is something that professional programmers never do. A professional treats everyone with utmost respect.

Putting Differences of Opinion Aside

To facilitate treating everyone with respect, professional programmers do not bring their opinions about things irrelevant to the profession into professional settings, just like professionals in other professions. Doctors do not talk politics; neither do professional programmers.

Open Source

So what does all of that mean for professional programmers working on Open Source software? First, people are not treated any differently. This means that women are not treated any differently than men. If there are programmers with behavior that would make women uncomfortable, the behavior should be modified for everyone, including men.

Second, they should try to build a community that builds the participants, and there should never be any name-calling, threats, actual violence, or any other disrespectful behavior, no matter who is being disrespected, even a cisgender white male.

As an example, I experienced a bit of disrespectful behavior myself when I spoke about this very topic at OpenWest 2016. I went even more in-depth by speaking about the long-term implications about creating a workforce of professional programmers. That included becoming professionals to the point that some education and certification would be required, as well as not needing managers anymore, just like other professionals. A woman, who was also a manager, questioned me afterward. She called me privileged. She said that requiring education for professional programmers was not okay and that I probably think that getting an education is easy because I am privileged.

What she did not know is that I paid for my own schooling and that I know how much hard work it takes. I did not tell her that at the time (it would not have changed her mind); I just stood there and took what she had to tell me.

Yes, even telling someone that they are privileged is disrespectful because it assumes much that may not be true.


As the LLVM Code of Conduct controversy shows, culture is important.

For me, since I am working on a lot of open source projects, under one umbrella, projects that I hope will expand to more people than just me, I want to think seriously about the kind of culture I want my projects to select for.

Well, I know what kind of culture I want: I want a culture of professional programmers.

I want collaborators who can accept that I am a Christian and that won’t faze them. I want collaborators who can disagree with me outside of programming and still be friends. I want collaborators who can debate the merits of particular solutions with me and not take it personally when I reveal deficiencies in their solutions. I want collaborators who are women, minorities, LGBT+, and WASP’s.

And personally, I feel like the best way to create that culture is to be the kind of person who can work with anybody, no matter how different we are, and still have respect for them and show that respect.