Software is Nothing More or Less than Communication


Software is complex, and while more people are learning to create it and the tools to create it are becoming more powerful, many software creators see the end result of their work as being about the tech. I disagree - it is about communication. 

Before I go any farther, everything I'm about to say is the underpinning of the topic of UX (User Experience) in software. If anything I'm saying is new and interesting do you, I courage you to go search more about UX - it is a worthwhile topic of study.

Lets start with the standard trick of comparing software to houses or cars -- your car is made of steel and plastic, but do you research the steel used when buying a car...or do you focus on the features you directly experience and their impact on your life? When buying a house, do you focus on the quality of the lumber used to frame the house... or on the layout of the house and how you would live there?

I'm sure some people do focus on the materials, but most do not. Those materials do matter to the quality of your car or home, but they are not the drivers of your direct experience. Software is the same - the underlying code and hardware absolutely matters... but does not inherently fulfill the purpose of writing software. The purpose is to have an impact on the lives of the people who use it. 

So while there will always be people whose jobs it is to maximize the quality of the "materials", we need to spend more time focusing on the larger impact of the work, which I believe is the communication that it delivers. 

Putting something up on a screen is communication to the person looking at that screen. Adding a form to a web page is communication from that person back to the system. Changing and processing data, then reporting the results to someone else is communication of those results.

At this point, the correct question to ask yourself is: "So what?" How does looking at software as communication help you make it better?

Because you can now think about what the software needs to do in terms of the people using it. You have a pile of questions to ask yourself that will tell you if your software is communicating effectively -- Does the layout of the text and images make sense to people? Is It also usable by users who cannot see well?  When people need to communicate back to the systems, are the forms easy to use? Is it clear what they need to type, say, or do? Are there any cultural assumptions that could change the communication you are trying to facilitiate?

Overall, does the system communicate effectively? Or is it complex to the point that the feedback you hear from people is, "I didn't know I could do that." Can your communication be improved? Sped up, made more clear, made to be understood by more people, more easily?

My entire reason for writing this post is to encourage people developing software to focus less on the code, the infrastructure, and the tech in general... and instead focus on communication as the point of everything you do. If you keep laser focused on communication as the goal of your work, you'll see that everything else is a tool to help you reach that goal, and your software will be better.