Characteristics of great software - Speed
This is the first of many posts discussing the characteristics of great software. The topic for this post is Speed.
Great software needs to be fast. If a software application is slow, users will get frustrated and stop using the software. This is the case even if the slow software application is still faster than performing the task manually.
There are many techniques available to software developers to improve the speed of their applications, some examples of these are:
- Better hardware. Adding more RAM, more CPU power, more Servers can definitely help improve the speed of a software application. This is typically a more expensive way to resolve speed issues, and is generally not as scalable as other options. Cloud computing does help to alleviate the scalability issues.
- Better coding. Writing code that is more efficient is usually an option for improving software speed. Typically software code will not be optimised for performance in its first iteration, it is important to allow adequate time for refactoring to ensure optimum efficiency. This refactoring should occur once the functionality is complete, but also retrospectively as other later developed functions could be having an impact.
- Asynchronosity. My spell checker tells me that isn't a word, but I am going to go with it anyway. By this I mean running work processes in the background, without requiring the user to wait. This is not always an option, for example it is generally import to wait for "login" functionality to complete before proceeding to log the user in. An example where this might be used is your email client, there is no need for you to actually wait for the email to be sent after you press "Send" on an email. Your email client can let you get started on your next email, while the sending of the previous one happens in the background (asynchronously). This is a way to improve the speed of the software, without actually needing to improve the speed of the processes.
While talking about speed of software, it is also relevant to note that the perceived speed of software is always relative to the expectations of the user.
Over time, users have been conditioned to expect different performance levels from different types of applications. Users will expect a windows application (or even mobile application) to operate a lot faster than a web application.
Partly this is because historically web applications have been a lot slower due to internet speeds, but also this is largely due to a different characteristic "Responsiveness".
Whilst closely related, responsiveness is quite different to speed, and will be discussed in a future post on Characteristics of great software.
It is important to note that as a user you should expect fast software.