"What Is Code?" How I Explain What I Do
You're at a party and someone asks you what you do. You answer that you’re a developer, or you’re a software tester. “What is that?” the person asks, and you begin what is usually a much longer answer than the listener can bear. Soon, the person interrupts and says, "Hey, I'm thirsty. Let's get a drink!” Anything to get you to stop all the technobabble.
The work we perform is complicated by the objects (modules, methods, applications, systems) that we work on. Yet, given the ubiquitous nature of software and our passion for our profession, it's easy for us to conclude that everyone understands (or should understand) software. However, using our software engineering community lingo to explain what we do gets us “deer in the headlights” looks quickly!
I recently read the Bloomberg article "What Is Code?" It's a long but good article that uses examples and interaction to describe what code is and how it works.
Still, it leaves the question: How do we simply explain what we do in thirty seconds? One approach that seems to resonate with those I interact with is to first ask the person you’re explaining your profession to, "How many computers do you think you've used today?" After all, any good question deserves a question back, right? Then I remind them of all the places code is present in their lives—the TV remote, credit cards, the ATM, cars, elevators, drive-through windows, and several hundred other places. Then I ask, "Ever have a problem with any of that technology you use?" Given the high probability of a resounding Yes!, then it's byline time: "I help people develop and deliver better software."
If asked for more information, I continue:
- “You see; software is a series of imperfect translations. It starts with someone like yourself needing something, such as displaying your calendar on your mobile phone, and it goes through hundreds of human translations (conversations) and programming (code-writing steps) that deliver you this capability.”
- “A person, usually called a software programmer, develops the code that runs things. Another person, usually called a software test engineer, tests the code that runs things.”
- “Your need is a requirement. The requirement gets turned into a design, and the design is turned into an application. The application has features that are represented in code called modules, objects, and classes, eventually down to individual characters, and finally bits and bytes that the computer processes.”
Full disclosure: I seldom get to that third bullet before eyes glaze over!
As software engineering professionals, we each have a role in educating everyone in our circle of influence about just what software is and how critical it is to people’s everyday lives. Regardless of the approach you take in having this conversation, I encourage you to be an evangelist. In a world run by software, everyone should have at least a foundational understanding of what code is.