Volume 30 Number 7
Upstart - Why It’s Hard to Talk About Tech
By Ryder Donahue | July 2015
The hardest part about developing software could be talking about it. Every day, developers must articulate deep technical detail and broad logical concepts, often to people with only a passing understanding of what they are talking about.
I see people struggle with this all the time and I don’t think it’s because they’re poor communicators or have bad ideas. It’s because talking about something as abstract as code is extremely difficult. This wouldn’t be such a problem if communications were a rare occurrence in software engineering, but in fact the opposite is true. Effective communication is at the heart of every successful, team-based software development effort.
Even if you’re a freelance programmer, trying to understand and deliver what a customer wants can be strenuous work. The challenge gets even tougher on large projects with many developers, where each team member is working on different pieces of a puzzle that must fit together.
Showing someone some code, or even pseudo code, can be a great way to get your ideas across, but sometimes the code isn’t available, or it’s too large to be immediately grasped by others during a conversation. As a result, we’re often relegated to hand waving and lofty descriptions.
Another pitfall is when developers assume the people they’re talking to are familiar with the jargon and acronyms they fit into their explanations, or that others have the prerequisite knowledge of the helper functions being referenced. If the other party has a shaky grasp of these concepts, it will slow down—if not stop completely—the journey to understanding. As soon as a person hears an unfamiliar acronym, much of the following dialog is lost to them as they struggle for context.
More broadly, a successful dialog about programming requires that both parties hold a similar blueprint in their minds at the start of the conversation. This blueprint can be the context of the code you’re writing or even the architecture of the whole project. While this bit is normally explained out of necessity, it’s not always explained very well—UML diagrams are normally too inconvenient and often there simply isn’t time to review all of the objects and data structures in detail. The upshot: Teams often fail to meet requirements to drive informed decisions, yet we all continue to do it anyway.
Communication is a tough challenge and one with which I personally struggle. But it’s a weakness that, if acknowledged, can be worked on. As developers, we must remind ourselves that others may not be following our train of thought as closely as we believe. On the flip side, we must be willing to let others know when we’re struggling to understand a concept before the conversation moves on to the next topic.
Given all of these difficulties, I find it to be a triumph of software engineering that a product like Windows even works at all, given the thousands of engineers who have worked on it over the years.
Maybe talking about tech will always be difficult, or maybe as the relatively young discipline of software development matures, we’ll see more effective methods of communication develop. Perhaps the solution lies in technology itself, with better tools for collaboration and more focused and evolved programming languages. If the programming languages of the future are designed with clearer and intuitive syntax, and do away with the verbose baggage carried over from primitive languages, we may see code that we can more quickly read and whose meaning is more easily absorbed. Maybe part of the solution lies in newer, better programming paradigms, which will allow for better analogy-driven explanations than even object-oriented programming can provide now.
One thing is clear, whoever creates and adopts these solutions will gain a significant edge over those who continue to wander in the sandstorm of acronyms and hand waving that characterize software engineering today.
Ryder Donahue is a software developer engineer at Microsoft. Originally from the Hawaiian Islands, he now resides in Redmond, Wash., with his fiancée and their cat, Marbles.