The Hidden Superpower of Every Great Software Developer

[Note: This post is adapted from a talk I gave at the Tech Olympics hosted by InterAlliance in February 2019.]

Good software developers have broad skill sets: problem solvers, a passion for learning, deep focus, and mastery of multiple languages are just a few. Good developers are able to troubleshoot issues and write code that works. They’re able to deliver on time and keep projects moving. Many have the same experience and expertise of great developers.

There’s a hidden super power great software developers wield on a daily basis: effective communication. Great developers can effectively communicate in a host of different ways with all team members. This includes other developers, UX/UI developers, business analysts, testers, subject matter experts, and users.

Great developers are like stand up comics; they know their audience. Developers are not typical users. Great developers don’t communicate to non-technical persons as though they are fellow IT professionals.

Types of Communication

There are many types of communication: Body language, active listening, verbal, visual, and written.

Body Language

There’s countless advice around body language and communication. One rule great developers keep in mind: There’s only one Mark Zukerberg so take off the hoodie. I love my hoodies and wear them often but never in a work setting with non-developers. Instead, know your audience and dress & act accordingly.

Active Listening

Active Listening is really just listening. Fully understanding what’s being communicated without judgement. The “without judgement” part is one of the hardest. Here’s some easy tips for active listening:

  1. Listen instead of thinking about what to say next.
  2. Maintain eye contact and other body language to show you’re engaged.
  3. Take hand written notes about what is being said.
  4. Understand what’s being communicated instead of just what’s being said.
  5. Repeat back, in your own words, what the other person is trying to communicate.

Verbal

Verbal communication is one area I’ve noticed a lot of developers struggle with non-developers. Especially when it comes to expressing technical concepts. We all tend to develop bad habits when we’re talking about a passionate topic. Mine? I tend to talk fast and mumble the more excited I get about a topic. And I tend to leapfrog important ideas which can break continuity.

Great developers on the other hand try and find the least technical person in the room and make sure they can follow along. They enunciate clearly so everyone can hear. Most importantly they give relevant context. Often times technical issues seam to come out of nowhere for non-technical persons. They might need some extra help understanding how you came to your conclusions and great developers will lead them there. If all else fails, analogies work wonders.

Visual

Some people are visual learners so embracing visual communication is key. There are a wealth of tools available to developers. Some are the same as everyone else: whiteboards, graphics, infographics, emojis, etc. A few are leveraged by developers: flow chart, UML, and data visualization. Great developers will understand their audience and use any and all appropriate visuals to make sure their ideas are understood.

Written

Written communication is the most pervasive and critical for all developers. This is where great developers really set themselves apart. Written communication in the form of email and documentation down to the code we write.

Keep two rules of thumb in mind when writing emails. One, the subject should summarize the entire email in a few words. Two, the KISS principle applies to email as well as code. Try the Five Sentence Email Rule. It works.

There’s plenty of existing resources online for effective technical documentation. Great developers document processes, domain & data dictionaries, artifacts, and code. Most importantly, they document as they go instead of assuming they’ll have time at the end. (Which most of us never do). Unfortunately, inline comments are not documentation.

Coding Practices

Great developers understand the importance of clean code. Clear intent. Easy to read. Easy to maintain. They (rarely) fall into the trap of making code too clever for their own good.

Clear intent when naming variables and methods. The code’s intended purpose should be clear at first glance. This means making descriptive names for variables and methods.

Clean code should be easy to read. Keep all the code for a method within a single screen is a guiding principles a lot of great developers follow. If you have to scroll up & down or left & right then the method is too long.

Clean code is easy to maintain. Anyone picking up the code (including your future self) should have no problem troubleshooting and fixing any issues. Great developers don’t write bug free code. They write code where bugs are easy to track down and resolve.

Ultimately we are communicating with the end user through the code we write. Most importantly, great developers create usable software. Software that is easy and intuitive. Processes and features are obvious, consistent, easy to follow, and easy to use. Functionality can be used in a variety of ways based on what the user wants instead of how it “should” work.

Great developers aren’t just good at writing code. Communication skills truly set great developers apart from the rest.

Leave a Reply