Software Design Principles

Rate this post

From time to time this blog will discuss issues relating to software design and how to create fast, reliable and easy to use software. These posts will generally involve some experience with less than ideal software. I will try to avoid naming the piece of software.

software design principles
Tips in designing a user friendly instant messaging application

Problem with an Instant Messaging Application

I ran into a problem recently with an instant messaging application I use. I was starting a self-hosted web server but noticed it could not listen on port 80. The reason was that my instant message application was using it. Port 80 is the default port used by web servers. I was a little puzzled as to why my instant message application was running a web server. Some research revealed that it was done to get around firewalls. However the application had an option to turn the web server off. It continued to work with the option off.

Factors to Consider in Helping Improve Instant Messaging Application

That leaves the question why have an option that is probably only useful in certain cases but can create  issues for users? This situation could have been improved by applying two design principles. One is to default to the common case. The common case would probably be to not have the option on. as was true in my case and probably a lot of cases the software would have simply worked with the option off. If the user isn’t installing web server the software generally shouldn’t listen on port 80. It’s like when you invite someone over for a meal of pasta. It would be rude for the person to assume they can just start using your kitchen cook something else they want like hamburgers.

Another principle is to ask what would happen if everyone else did this? If every software that needed to get around a firewall ran on port 80 then they would all conflict. That would argue for at least not having the option on by default.

Image courtesy of Stuart Miles /