Take a seconds break from your console and think about something with me. Better yet – ask yourself this question: “How well do I, as a programmer, communicate with other people?”
I don’t mean the obvious… Your “please” and “thank you” phrases. Rather, I am going after how well do you communicate to understand the thoughts and feelings of the people you work with. How well do you understand your user base, their needs and frustrations?
Let’s imagine we are in a real world situation, a requirements gathering meeting. We have all been there. The Product Manager is outlining a vision for a product or new service. You immediately begin to visualize the service, identify the difficult sequences and may even begin to provide estimates for how long it will take you as an engineer to build. Stop right there. You have already failed the communication step of being a software engineer.
It is in our nature as software engineers to immediately try to solve the puzzle. In many cases this has led us to success. However this cause of success will also work against us if we yield to it blindly.
In order to truly create beautiful software and systems we, as software engineers, need to communicate with our fellow counterparts. Our users, our product managers, our clients. True communication is not just a task that needs to be exercised, a checkmark off the list. Rather it is more of a routine. A process of listening, asking questions, listening again. It is a yearning for understanding. A refined skill that we always need to improve. An understanding of both the required system as well as the intentions of that system.
The old phrase, “To truly understand someone, walk a mile in their shoes” rings true for understanding your project requirements. Although you may easily grasp the required inputs and outputs of your system as laid out, strive to truly communicate with your audience. Discover the reasoning for what led them to need this project. Walk a mile in their shoes to understand how this software will benefit them. As a software engineer, strive to truly communicate with them, not just have a conversation with them.
As a software engineer, when you are able to walk a mile in someone else’s shoes, you will be able to truly communicate with them. You will be able to program beautiful solutions to the problems that they encounter. You will become a truly talented programmer in deed.