Programmers: To be considered a professional, you need to act like one.
Being a programmer is a profession. It is a high-skill job that demands a large initial investment of time as well dedication to continuing education to stay at the top of your game - much like a doctor. Yet, programmers often lose sight of the fact that the skills we bring to the table are only part of the equation; like a medical professional, our "bedside manner" is incredibly important to our overall professional success.
The Evolution of the Programmer
Programmers have a reputation for fringe personalities or being anti-social. I believe this perception stems from years and years where programming was a largely academic function, reserved for universities who could afford massive computers that occupied whole sections of buildings. People drawn to programming in the early days were people with bumper stickers that read "I LOVE MATH" or hardcore physicists. By contrast, today, with the democratization of computers the need for programming is everywhere. It is part of our everyday life (websites, apps, etc.) and is becoming more mainstream all the time. Gone are the days when programmers were academic types shuffling around campus with a box of cards in the hands; today's programmer is front-and-center, as key members of almost every company's staff.
How You Say It Matters
So, if the programmer is playing a more central role in business and life in general, we are well past the stage of needing to validate our trade. Everyone understands the importance software plays, so it's now a question of leveraging our expertise in ways that people will listen. To do that it is important to always keep the following five elements in mind:
Let's explore this in detail.
Honesty comes from a place of respect and is critical for maintaining a good relationship with anyone. Drawing a parallel between doctors and programmers, I think we can all agree that if we ever found out a doctor we had visited had lied to us, not only would we feel betrayed, but we would almost certainly find another doctor. Honesty first is an important foundation.
One of the more tricky parts of programming is accurate estimation, however getting good at it is core to building a good rapport and establishing trust. I'm sure we have all met a programmer who colored their estimates with how much they want to work on a project, or often provides wildly inaccurate - and unhelpful - estimates: "That will take FOVEREVER", "I can do that in one minute". Connecting with the medical profession again, accurate diagnosis is important; you should never tell the patient they are going to die if there are treatment options available or things really aren't that bad.
I once heard a customer complain, "all programmers think everyone else's code is crap". They were tired of hearing us rail about how their existing codebase was poorly written, and even though it was, they didn't want to hear us complain about it. In this situation, there were two important things to keep in mind: 1) the customer didn't write it and 2) complaining about it wasn't going to change it. Diagnosing technical debt is important, but once it is out there try not to dwell on it. Often, patients are not responsible for the current state of their health and even when they are (smoking, etc) doctor's need to treat the problem, not harp about what could have been. In programming, sometimes bad customer choices (cut rate vendors, bad PMing, etc.) have contributed to the problem, but more often than not it is just bad luck. If someone is working us and we are truly professional, they have taken the first step in making things better and should always have our respect.
4. Good Stewardship
Like most other professionals, programmers these days are able to command relatively high hourly rates and/or salaries. That's great news for us, but it also means we have a higher level of responsibility in terms of how we utilize our time. If we are skilled enough to command a high rate, we need to be careful and deliberate about how we spend someone else's money. Don't propose solutions people can't afford or bill people for things they don't need.
5. Always Help
To many people programming is mysterious. Much like a patient showing up at a doctor's office for help, people coming to us are often confused, uninformed about our trade and don't know where else to turn. With this in mind, we should help even when we can't. If someone asks for help and we are not the right kind of specialist, we should try refer them to the right person. This kind of help will always be warmly received, as it indicates you care about someone's success even when you won't benefit directly from it.
Following these rules whether you are an independent consultant or an in-house programmer will bring greater professional success. People will see you as a "go-to" person, someone they can count on and look to for advice. It will do much more to improve perception of you as a highly respected, talented professional, than adding a new language or library to your roster could ever do.