Professionalism

Back in January, I had a bicycle accident that shattered my left elbow, leaving me unable to ever fully extend it again. Part of my rehab required a brace to help my mobility. After being measured at the medical office, I was told it would take 2-3 weeks to get and that they would call me when it arrived. 6 weeks later and nothing. After calling in, I was told there were no updates and it took me walking into the clinic to finally discover they only just submitted the order that morning because they forgot about it until I called to ask where it was. Tim, the person who was in charge of my order, gave a sheepish sorry and said he would get it to me as soon as possible. Tim is not a professional.

After filing a formal complaint, something I’ve never bothered to do before, I received a call from Cyrus who reviewed the paperwork, called their manufacturer on my behalf, and personally ensured I had it in my hands two days later. Cyrus is a professional.

We are Tim. We may demand fancy titles, like Senior Software Engineer, and the money and respect to match, but shirk much of the responsibility that should come with it if we truly intend to be treated as actual professionals. We leave that to Cyrus. Professionalism doesn’t require fancy clothes, flashy titles, or a big office, nor is it incompatible with having nerdy hobbies and interests, but it is the set of standards, attitudes, and behaviors with which we work.

Over the years, I’ve had a growing discontentment with the immaturity of many of my fellow engineers. One former coworker had to be told, at 30 years old, to do his chores by our older colleagues, because his coworker-roommates couldn’t resolve the issue at home and repeatedly brought it to the office. Others were fired for bullying an LGBT coworker because they failed to understand the toxic behaviors common online are not acceptable in the workplace. These may be more extreme examples, but they’re not complete outliers. I believe that we, collectively, have a lot of growing to do if we intend to be taken seriously as professionals.

Here are a few concepts that I believe define a software professional.

Know the Business & Know the Customer

Understanding the industry your company is in and who their customers are is the foundation everything else is built on. This can be difficult when, if like me, you have worked for companies in wildly different industries, but it is no excuse. “We make ___ software for ___” is about all most of us know, which is inadequate. We need to know more.

  1. Who are the different types of users who use our software?
  2. What are the primary tasks each type of user wants to accomplish?
  3. What devices do they mostly use? What screen size?
  4. What difficulties do they have with our software?
  5. If they have a problem, what do they do?

These are questions about the end-users of our product, but a team’s customers can also be internal. If your customers are other teams because, for example, you’re a platform team, then knowing how your product is used by those teams is important as well. But, anyone who works with a product for end-users should know the answer to these questions, even if their own work does not directly reach them.

I think it’s unfortunate that there is often a large degree of separation between customers and engineers. It’s not scalable to allow completely open access, but the ability for customers to talk with the actual engineers would greatly help to understand those customers.

Proactive Ownership

Proactive ownership means taking an active role in improving our applications to fit customer needs. It means taking the time we need to do our work correctly, to our best ability, and spotting issues before they reach the customer. When we understand the business and the needs of our customers, whether they are end-users or other teams, we can better shape our applications to fit those needs and should do so without prompting.

Proactive Ownership is the idea that we should actively seek solutions and understanding, that we should maintain and improve our applications, and that we should define and decide our process of doing work without waiting for managers or product owners to do so for us. “Here’s what I’m going to do,” over “what do you want me to do?”

This can be a difficult shift in the way we work, because it’s dramatically different from the way we typically do things, but switching to this style empowers us to do better work, deliver high quality results to customers, and is the path to professionalism.

Effective Communication

English was always my best school subject, much to my chagrin. I never liked writing and always wished my best subject was something useful, like math, but over the years, I have come to enjoy it and realized that the ability to communicate effectively may be the most important skill of all.

Most of us, frankly, cannot write. We fail to communicate effectively in any form, but writing is easier to criticize than someone’s social skills, so I choose to focus there. Our lack of communication skills alienates us from non-developers who do not think like we do, but it can be difficult to see when others have learned to simply work around our incapability and other developers communicate the same way.

This is not something that can be fixed with a mentality shift, or working style, but is a skill gap, pure and simple and one I believe to be the most important in being a successful professional. If we were all 10% better at programming, nothing would change, but if we were all 10% better at communication, we could make an enormous impact.

Write more.

Conclusion

A fancy office or title does not make one a professional, but it is the set of attitudes and behavior that defines professionalism. If we desire the respect and treatment that comes with being considered a professional, then we need to make substantial changes to the way we operate. Nerds can be professionals too, but only if we choose to be.