Unprofessional Software Professionals


Before I talk about the software professionals, let me first say a little something about American politics. Boy, this blog post has gone off the rails quickly. Don’t worry; I won’t talk about Trump.

Here is one of the best and most well known quotes of all time from any American president:

“Ask not what your country can do for you – ask what you can do for your country,”

This quote speaks to and appeals to people’s sense of patriotism. It inspires action, incremental improvement, and inclusion.

In contrast, here is another often-used phrase in American political “debate” that also speaks to patriotism:

[You are] un-American.

It is easy to hear this phrase daily in American politics. Sometimes it is used to directly describe a person or just their ideas (but that has the same effect). It meant to appeal to people’s sense of patriotism; however, it does a much poorer job than JFK’s words.

This “un-American” statement is usually used in a highly illogical manner. It is used to describe people that have American birth certificates and passports; i.e. Americans. It is very easy to prove they are American, but they are described as un-American. This phrase marginalizes people. If they clearly are American and not an American at the same time, then this contradiction means they cannot exist and are nothing. In most contexts, it immediately puts a person on the defensive. It causes division between those that are and are not American; even between people that are suppose to be on the same team.

This phrase prevents action because it changes the context of the conversation from some actionable item that is currently under debate to a philosophical discussion on what it means to be American (with no action items). It does not speak to what should be done, but instead focuses on what should be believed.

The reason to use this phrase is usually to attempt to shut down a debate. It does not encourage further action or debate. If debate does continue after this statement is usually turns more vicious. If the conversion stops after this statement it is not because the argument has been won, it is because people do not wish to turn the conversation in this vicious direction.

Back to the Software Profession

The reason why I am writing this blog post is to advise software professionals avoid calling their colleagues “unprofessional”. I have heard this phrase used on Twitter and at conferences and in those contexts my reaction was “Hell, yeah!” However, many years ago I have used this statement in my workplace and heard others use this and it never ends well.

Never call someone that is paid to deliver software as unprofessional. By definition, if they receive a paycheck, they are a professional. This is completely illogical and easily disproven to say otherwise.

I know that my definition for a “software professional” (i.e. anyone that is paid) is a somewhat over-simplistic and controversial statement. Our industry does have a bit of problem that there is not a clear, universally accepted definition of what it means to be a software professional. It is a common theme of Uncle Bob (see here and here).

However, despite the lack of an organization accrediting who is a software professional and who is not, some common values tend to come up repeatedly when we speak about software professionalism.

  1. We should provide value to our customers. (hard to get paid if you are not doing this one)
  2. Quality of software should be paramount. (hard to get paid for something that doesn’t work)
  3. There must be continuing learning and improvement.

If you are doing these things then it should be easy to be paid and be able to call yourself a software professional. If you are not doing these things then it will be harder to stay employed.

There are days when I’m at a meeting at work in some heated discussion and I think to myself that I am the only one in the room that cares about our customers, or quality, or progressing to a new technology. In addition, I am sure that every one of my colleagues have felt the same, perhaps even in the same meeting.

At a political rally, you might be able to get away with calling people un-American. When you are in church, there are things that can be said when preaching to the choir that are inspiring, but when taken outside the church sound “preachy” and condescending. On Twitter and at software conferences it might be safe to accuse those that do not put quality above all else as unprofessional, but it is usually unwelcome, untrue, and unhelpful in most other situations.

Ways forward

When you are tempted to call your colleagues “unprofessional”, take a deep breath, count to 10, and try to remember JFK’s words.

The reason you are tempted to call someone unprofessional is usually frustration that “the country is not doing enough for you”. You have some expectations on what your company and its employees (i.e. your country) should be doing for you and you are disappointed. Calling them unprofessional is another way of stating that they are not doing enough for you.

Here are a few statements that you might be familiar with that reflect disappointment and division with others:

  • Customers or business analysts didn’t do a good enough job specifying requirements
  • Developers put too many bugs in the software and/or aren’t following best practices
  • Testers didn’t do a good enough job doing testing

These statements all blame others for essentially being unprofessional. Instead of making statements like these, think of JFK and ask what you can do. What are you doing to improve customer value, quality, and knowledge by yourself and of your teammates?

Sit down and make a list of all the things you are doing to improve customer value, quality, and learning. List the things you are doing personally, not want you wish others were doing. It is hypocritical to demand things from your colleagues if you cannot come up with a list of the things you are doing yourself.

Then come up with a list of things you are doing or could be doing to help your colleagues do their job. Do not list of the things you wish you colleagues were doing on their own; list only the things that you can provide assistance. Ask what you can do for them.

Make sure that this is productive. Do not simply do their job for them (that old “give a man a fish” saying). If your plan is to teach them something, be sure they want to learn and you are not doing this in a condescending way. Many hands may light work; if you can get a team to collectively progress towards a goal this may be more effective that picking on one person to do the work.

Asking JFK’s question of “what you can do” should be part of every retrospective. Have a list of things to do in the next sprint, and a backlog of things you want to do over the next few months.