For an industry that prides itself on its analytical ability and abstract mental processing, we often don't do a great job applying that mental skill to the most important element of the programmer's tool chest - that is, ourselves.

As I write this, a well-known software prognosticator and talking head finds that his website is being DDoS-attacked by what he's calling “Social Justice Fascists.” He believes they're doing it in reaction to a blog post that he wrote that expresses a strongly conservative-leaning opinion about a variety of topics related to the technology industry's responsibility around hiring, firing, conference invites, and so on. As of this writing, in fact, his four most recent blog posts are about topics that are more appropriate to a political magazine than a technical blog.

A few months ago, a Google employee wrote an informal memo to his coworkers about what he saw as misguided attempts on Google's part to allocate resources (time, energy, and money, among other things) to a cause that he believed was inefficient and a waste. His superiors disagreed and terminated his position. He's in the process of suing them for wrongful termination. The industry, meanwhile, exploded into debate over the topic.

This is not an article about that topic.

In an article that appears in this issue of CODE magazine, John Petersen talks about the ethics of professional programmer conduct, and whether or not the software industry should be regulated. He notes that development is currently not a “profession” in the same way that professional engineers (those who build buildings and bridges and such) are defined, and that if we seek to create an organization that upholds professional standards, we're asking for regulation, and that we should be careful what we ask for. In particular, John notes:

It's ironic that many software developers refer to themselves as software engineers. ... If you want to hold yourself to a higher standard, be professional, conduct yourself accordingly, and be accountable. At the end of the day, that's what being a professional is all about.

The author of the blog posts suffering the DDoS attacks has historically been the first to suggest that we as developers need to hold ourselves to a high standard of professionalism, that we should see ourselves as “software craftsmen.”

There's a thread here, loosely tied, bringing these two topics together: Professionalism is a harder thing to accomplish than we might believe. It requires a clear decision and a high degree of discipline.

A Clear Decision

Professionalism is defined by Merriam-Webster online as “the skill, good judgment, and polite behavior that is expected from a person who is trained to do a job well.” (See It's important to note that the second and third elements in that definition are not related to the skills but the manner in which one conducts oneself. “Good judgment” is, of course, a relative term, but “polite behavior” is pretty clear in casual use; contrast that with the traditional archetype of the “arrogant genius” as embodied by TV heroes such as Dr. Gregory House, who routinely abuses his coworkers and staff, yet every episode demonstrates that he's “the best damn doctor in this hospital” by saving people who would've died without his brilliant insights and encyclopedic knowledge of human affliction. Is House a great doctor? Maybe. Is he a professional? Certainly not by the above definition.

Cue to John's discussion of codes of conduct, such as those listed and described at software conferences: “Such codes… are an attempt to provide an objective standard of conduct. Put another way, these codes are meant to be objective yardsticks by which to judge behavior.” The medical and legal professions have, for decades, established what is and is not considered to be ethical behavior regarding the manner with which doctors and lawyers are allowed to interact with their clients. (House spends a great deal of each episode fighting with his boss and his staff about working around those guidelines.) Lacking those explicit guidelines, however vague or precise, we're left with an interesting and important decision: Given that the Western world permits citizens the right to speak their minds (to a greater or lesser degree, depending on the context), how professional is it to air your thoughts on a given subject in a professional workplace?

I have my own opinions on this subject. What matters more, however, is what degree you, dear reader, believe is appropriate. Because that's the decision you have to make: If you take a stand for what you believe in, and state it loudly enough, you may find yourself the target of people who disagree. This isn't even a political discussion: Over a decade ago, I wrote the essay “Object/Relational Mapping is the Vietnam of Computer Science,” which gathered a firestorm of technical debate that still rages to this day. Those who advocate the use of such tools (like Entity Framework) blasted me for my ignorance; those who had suffered the inefficiencies of such tools sang my praises. I was alternatively vilified and canonized.

When you share your opinion on a subject, you run the risk of attracting attention both good and bad, largely dependent on the degree of your position and the size of your audience.

Here's the decision: To what degree will you, as a software development professional, put your personal opinion out there onto the Internet? To refuse to share your thoughts is going to impede your technical progress, to be sure. But to share your thoughts runs the risk of stepping into a firestorm of controversy, however large or small.

But more to the original point, what topics will you weigh in on? Do you wish to take a stand on topics outside of the technical arena, or do you wish to keep your discussions more industry-focused? This is where we come back to the professionalism question: If the definition of professionalism is to use “good judgment” and “polite behavior,” you may find that certain topics inherently work against those two elements. You need to be absolutely clear in your own mind where your lines are on this subject, largely so that you can be fully ready to reap the benefits and costs of making those choices.

Please note: You don't need to blanket your position across all media. Myself, I choose to have an entirely industry-focused blog, although I do give myself the freedom to weigh in with strong opinions about the industry as a whole (such as our highly broken interview processes). Ditto for this column. My Twitter account, being more a reflection of me as a person, I allow to show my political views on topics and when I feel strongly on a subject. My Facebook account, which I keep invite-only, is generally all-personal-no-professional. I don't suggest that this is the “best” way to use social media; this is simply the plan that I've evolved. You need to make your own plan, so that you can be clear about where your opinions will go and who they will reach. Which brings us back around to the other part of this.

A High Degree of Discipline

Having made that clear delineation in your head, the software development professional now faces a truly hard task: sticking to that plan. This is where a high degree of discipline is required: You must stick to your plan, religiously, despite the myriad opportunities that exist to bring the “wisdom” of your words to the masses around you through the various channels open to you. Stick to your plan. Bring that wisdom only through the channels that won't impede your professionalism.

Without rendering judgment on the Google employee's remarks, we can still discover how he failed in his professional duties. As near as we can tell, his opinions were written at work using work resources and time, meaning they were essentially a work product; once they became detrimental to the company's health, he crossed over into the realm of “poor judgment.” This is no different than if he were to use his work resources to write an opinion piece about how his employer's competitors engage in slave labor or outright intellectual property theft; the actual subject is irrelevant to the discussion. Although some people might debate that this is an issue of “free speech,” the larger point is that he put his employer into an uncomfortable position, and one which garnered some extremely bad press. Satya Nadella made a similar mistake in the early days of his tenure at Microsoft. One of these two individuals immediately apologized and sought to right the wrong, and remains employed to this day; one of them refused, was terminated, and is currently suing his former employer.

As software development professionals, if we are to claim that term, we have to understand that our professionalism is also built around the perception others have of us as we carry out our duties. I most certainly encourage every software developer to be as engaged in their political community of choice as they choose to be, but understand that there is a clear demarcation between your personal world and your “professional” one, particularly for those of us who build a personal brand. If you choose to bring your personal opinions with you into the workplace, you also choose to accept the consequences of doing so. Right or wrong.