Professionalism

We are not professionals. Doctors, lawyers, civil engineers. They are professionals. In comparison, the development community are a bunch of monkeys. We are banging on keyboards, hoping to knock out the works of Shakespeare.

There isn’t consensus on what the word professionalism even means. But like pornography, we all know it when we see it. Some common themes seem to be:

  • considerable training, over and above most jobs
  • vocational
  • continued training for life
  • entrance exams
  • a code of ethics
  • upholding standards
  • membership of professional bodies
  • working for the public good

In exchange society grants:

  • higher pay
  • protected designation
  • autonomy on deciding what is good practice
  • self-regulation
  • respect
  • higher status

Software development hits some of these highs. We have professional bodies like the IEEE, ACM, BCS but not everyone is required to be a member to call themselves a developer. We do tend to get people who view it as a vocational career and care about the broader implication of their work in the community. But we don’t have a universally recognised code of ethics. We do not weed out bad actors effectively or rank junior to senior members consistently.

How many times have you said no to your boss when you know what they are asking you to do will end badly? Not because you don’t want to do it, or you think it is the wrong business decision, but because your professional opinion about the code tells you it will not work. Business leaders are suppose to make business decisions. If the company really thinks that after careful consideration, getting the new product out before CES is worth so much that they are willing to pay to fix all the bugs afterwards, then it can be ok to rush ahead, move fast and break things, if that’s what it takes to win. But often they haven’t understood the risks, they don’t know how much it will cost and you can see disaster coming.

I’ve asked developers I respect about this issue and most of them have stories of when they have said no. When it was just so clear that this change wasn’t a good idea that their ‘professional pride’ wouldn’t let them stand ideally by and allow it to happen. But for most people these stories are the exception. They happen so rarely that they are stories people tell to prove a point. There are far more stories that people tell of being forced into doing things that they knew would end badly but they did them anyway in order to avoid a fight with their boss. Anyone working as a developer has something to lose by fighting with their boss. A livelihood for their family, stock options, reputation, or just the loss of a comfortable situation. It’s not easy to say no and risk loosing all that. I think part of the reason we don’t push back more often as an industry, is that we aren’t sure ourselves which things we should be taking a stand on.

Compared to other industries, software development has not been around that long. We had a very slow start from Ada Lovelace in the 19th century to teams of developers in the 60s to a recent explosion of millions of developers today. But we still don’t know how to teach it that well. We don’t have an agreed upon practice of how to build software. Or an idea what our place is in the hierarchy of a company. There is a new javascript framework out each week but we still haven’t agreed on the ideal way to test. Unlike some industries we work on the insubstantial, the invisible. You can’t jump up and down on software as you might a bridge to test if it’s strong enough to drive over. People outside of the industry can’t tell how good our software is until it breaks. Most developers find it difficult to judge other’s work objectively. We have a lot to learn, that keeps changing under us, but no where near as much as doctors have to contend with.

So what do we need to do? I think it is going to be a long journey. I cited doctors, lawyers and civil engineers at the start of this post as professionals. They have all been practicing a few thousand years so we have some way to go yet. But there are a few signs that we might be heading in the right direction.

We have a lot of passionate people who consider it a vocation. We have a lot of people who view the public good as one of their main motivations. We have professional bodies who try to raise standards. If you are reading this then you obviously take continued professional development seriously.

So what next? I think if we keep pushing the boundaries of our knowledge of patterns, best practices and hold one another accountable then each day we will be taking a step in the right direction.

I have a friend who told me that when they started medical school they where told that it wasn’t a competition. Other departments grouped students in to top 10% or bottom 10% etc. to award grades. This created a zero sum game where the worse someone else did the better it was for you. Why would you help a fellow student in that situation? But here in medical school, you would fail if you didn’t help each other. There was no way that anyone would get through medical school if they didn’t have the support of other students. The course was designed such that you couldn’t complete it on your own. The advice was clear. Help each other, share knowledge and encouragement. You won’t make it alone. Developers are often quick to criticise each other, to point out the flaws in arguments because we see our profession as so logical and data driven. But that doesn’t mean we can’t help each other. If someone doesn’t know something that you do, great, that’s an opportunity to help someone and increase the total competency level of our profession. It’s also the right thing to do.

As a final note I wanted to mention that there is an argument for defending amateurism. G.K. Chesterton said “If a thing is worth doing, it is worth doing badly.” He was subverting Philip Stanhope, 4th Earl of Chesterfield who wrote “Whatever is worth doing at all, is worth doing well”, but he is often misinterpreted as meaning that any attempt is better than no attempt. In fact he was writing in his book “What’s Wrong with the World” about the importance of amateurs. He said “that the most terribly important things must be left to ordinary men themselves – the mating of the sexes, the rearing of the young, the laws of the state”. Professionals might have many years of experience, they may be able to draw on the research of other professionals in their field. But the amateur does these things out of love, not for money.

Many people get into the world of development, not through formal training but through enthusiasm. They are self taught ‘hackers’. These are the people who stay up all night to solve that one last problem. Without these people the Open Source community would not exist. Companies have now pilled on because of how popular it has become, but I don’t believe they would have started what we see today as Open Source on their own. With amateurs we get passion in our industry. We get nonconformity. We can avoid gatekeepers and broaden the demographics of developers. Becoming more professional in the work place is surely a good thing, but lets not forget about the amateurs.

About the Author