What does a programmer do? The easy definition is “someone who types at a computer to make the computer do something”. But that misses a big part of the programmer’s actual job. Let’s imagine that Eustace, the programmer is typing away for hours, then days, then weeks. And then they complete their project in more or less working order! A working program is their job, right? Yes, but let’s back up a bit. The project didn’t start when Eustace started coding. What happened first?
Someone came up with an idea. Marcy from XYZ Incorporated contracted Eustace to create a widget that would make her job easier. Marcy had the idea. But Eustace had to implement it. There had to be some form of communication between people before any machine became involved.
Programming is all about communication. Communicating intelligent, context-sensitive people’s intentions to a dumb, but very obedient machine. Therefore, my definition of a programmer is “someone who can translate human requirements into an explicit language a computer can understand and execute”. A programmer must understand both humans and computers. And if they don’t, then everybody has a hard experience with the project.
How do you tell communication didn’t go well? Stakeholders don’t get what they want. I hear people say about some developers “they were uncommunicative for a few weeks, and then showed me a program that wasn’t what I wanted. It’s the programmer’s fault.” And I hear from programmers, “The client has no idea what they want. It’s their fault they couldn’t explain it better.” Both these problems could be solved through better communication.
What makes communication hard? People come from different cultures. Different backgrounds, different corporations with different buzzwords. Understanding other humans is hard – especially when your job is translating someone else’s requirements into a complete explicit language that can be executed repeatedly for years to come. It’s hard, even for brilliant programmers, to read a client’s mind.
So how can you, as either a programmer or stakeholder help this communication? Use tools! Some tools I’ve found effective over the years include low-tech tools like whiteboards to diagram, Power Point presentations to show the different screens in a web application, even simply writing a list of the steps in a business process you want automated. Verbal communication is a great start, but some written form of requirements/specification is where programming can truly begin.
There are more high-fidelity prototyping tools you can use certainly, and they are appropriate for larger scale projects. If visual look and feel are a key feature of your app, put together an app mockup with one of many tools available. If there is a very complicated formula involved in your program idea, then that’s a great place to start.
Good communication is the bedrock of people and systems working together well. That’s why at Code Pros, one of our core values is “We and our clients understand each other.” We believe that we can provide an exceptional service by knowing how computers think as well as understanding your business, your goals, your dreams, your corporate culture. And improving communication is one way we help you make your life easier by automating systems.