The process of building great software begins and ends with good communication. In this article, you’ll learn why communication is so important, along with five areas to focus on as you begin your software engineering career.
I wish I knew that the software development process begins and ends with good communication.
People use the software you build to either heal a pain or achieve a gain. Feeling that pain or getting to the core of what the user is trying to gain is really the first step in writing good code. You could say that good software engineering starts with empathy.
Ask yourself: what problem is the user trying to solve here? How can I make my user successful? Ask customers directly or through a product manager. This can dramatically improve your understanding. Putting yourself in the shoes of the end user will always allow you to make design decisions that benefit the group of people that you’re serving.
If you want to learn more about grasping the needs of the user, talk to a product manager that works at a tech startup. Ask them how they get perspective from the customers they serve. When you’re on the job, ask to shadow them for a few days. Great product managers ask questions that get to the core of what customers need. The better you are at getting to that core, the more effective you will be at building solutions that are in line with that need.
When you encounter an error in programming, most languages and frameworks will provide you with an error message. This error message is trying to tell you something. Usually, it will tell you what the error message was, and where the error was encountered. The creators of that language are trying to help you! They’re trying to share as much information as possible for you to resolve the issue you’re facing.
It can be easy to get distracted by other things in the code. I hear so many beginners say “Oh, I know what I did” and begin to fix an area of code that is totally unrelated to the error. Listen to the computer, I promise, it’s not lying to you.
If you want to learn more about understanding error messages, it’s really an exercise in mindfulness. When you encounter an error message when programming, it can be disheartening and frustrating. it’s important to have the presence to ask: what is the error message telling me? Where exactly in my code is this error coming from? When I started to ask these two questions every time I hit an error, it changed my professional life.
Sometimes, you and your computer may talk past each other, resulting in communication breakdown. Eventually, you’ll come upon a problem where you’ll have to ask a human for help. It was here that I learned that good communication requires good context.
If you want to learn how to get help more effectively, ask more effective questions frequently. Also, help your peers help you. Provide them with what your objective is, use a gist or a codepen to share the latest version of your code, and share any relevant error messages or unexpected behavior you’re encountering. Additionally, consider your peer’s context, and understand that under most circumstances, they’re under no obligation to help you. Be respectful of their time, patient, and courteous when it comes to asking, and show your gratitude when they help you overcome a difficult challenge or concept.
Often, when you’re working professionally as a software developer, you’ll work with a team member that serves as the customer’s proxy or representative. One day, I decided my most important job was to build a strong relationship with this person, and I learned a ton! It was at this moment where I learned that good communication comes from great relationships. While it may be tempting to reply to an email or send a note through your company’s bug tracker, the best thing you can do is get out of your chair and actually discuss issues customers are facing or may face with the introduction of new features. The better you get to know the customer’s representative and what they envision for the customer’s experience, the more you’ll be able to understand your customer.
If you want to learn more about working with stakeholders, set aside some time to actually get to know them. Buy them lunch, coffee, or a drink. They are your gateway to delivering business value. They will also be more likely to sing your praises at the next management meeting when you demonstrate interest in the customer’s perspective.
Learning to code, and really doing anything well, will have its low points. When you decide to learn to code, you’re committing to a lifetime of learning.
There will be bad days where you feel really dumb or out of your depth, and there will be days where you feel like you have a new superpower. Do your best not to listen to yourself on the bad days, and know that they will pass. It’s all a journey, and it can be a ton of fun provided you have the right attitude about it. One can only do great work when they have a positive mindset about it, so go ahead, make a mess, tinker away, have some fun, and keep at it! With such a mentality, there will be plenty of times to celebrate.
How are you currently learning to be a better communicator? Please email me at firstname.lastname@example.org and let me know!
For more knowledge around communication in software, check out Agile Estimating and Planning from Mike Cohn. For more learning, get out there in the community and start talking about the challenges you’re facing and the code you’re writing!