Humans suck at communication. Don't get me wrong, we are social animals that do it everyday. Some are better than others, but across the board, we frankly suck. That's why we build communication tools. I'm not just talking about tools like Slack, Discord, and Zoom. I'm talking GitHub, Terraform, photo apps, and the list is literally endless. Every alerting system, every sharing system, every marketplace, every banking system, is a communication tool. A company is communicating your financial health and balance to you. You are sharing pictures and text with friends and family to communicate with them. You get an alert/notification that a system has an error. You login to a website and are communicating your credentials to the server that you are who you say you are. It all may seem like a stretch, but once you really sit down to think about it, the world makes a lot more sense.
It permeates every industry. The most successful B2C (business to consumer) apps are about communication. Dating apps, social media apps, chat apps, podcast/music apps, etc. You could maybe classify some of it as “distribution”, but distribution of information or content is basically communication. When we speak or write, we distribute our thoughts to another person. So how does this apply to building software? Honestly, I feel like it's obvious at this point, but let's dive in.
Everything boils down to communication. Every feature should make communication easier. Whether it is communicating the information faster, more clearly, or providing more than before, it is making communication better. Frontend changes or backend changes, it doesn't matter. It is probably aiding communication. But what if it's not? Should you still build it? Will anyone use it or find it valuable? Is the solution the best one for improving communication, or would another one be more appropriate? I use the words “user experience” all the time, because that's the vernacular that most are familiar with, but I really think it comes down to just communication.
So with this newfound realization, where do we go from here? Well, we've taken the first step by addressing it, and to be clear, I'm not saying it is a problem. Quite the opposite actually. I think it's a superpower. It level sets the conversation and puts everyone on the same page. Now we can clearly ask “does this improve communication?” when evaluating a new feature. The answer should be pretty definitive, but everyone communicates a little differently, so that's not always the case. However, it does make it easier to come to an agreement on the proposed solution. The next time you are evaluating a new feature, ask yourself whether this will improve communication between your users. I think you'll be surprised where the thought process takes you.