Table of contents
- Ease of installability on local devices and web reachability
- Standalone Desktop Application vs Online Software as Service
- Application understandability
- Navigability, Accessibility and Language Localization
- Product feature documentation and user education
- Multi-platform/Operating system support
- Dependency on propriety infrastructure versus open-source infrastructure
- Handling of user data
This blog post is different from the normal ones. This blog post does not talk about the programming language internals nor does it talk about how the software should be written. This post talks about how the end user sees the software that he or she uses to make his or her life simpler. As software engineers, we sometimes get too lost in making sure that we use the most recent technology to write software, that we make sure that all use cases of the software are covered and that all regression and unit test cases always pass. But what we forget is how the software provides a service to the users themselves. Let us pause for a moment and don the hat of an end user of the software for some time to understand how and why any user would want to use the software that we architect, design and develop with so much care and consideration.
Ease of installability on local devices and web reachability
What is the first thing that you see in any computer software application, be it a mobile application or desktop software, if you intend to use it? The software application should be easily installable on the host operating system of your mobile device or computer without the need to manually change any configuration files for the application. If the software is available as a service that can be accessed over the internet, it should be readily reachable over the web.
If the application is too difficult to install on the computer/mobile or is difficult to reach over the internet, then not many users will like to use the application.
Standalone Desktop Application vs Online Software as Service
In relation to accessing the software, let's think about how the access to software on the local machine via desktop application or the access to software as an infrastructure over the internet, may affect users' choices on picking up the software of their choice.
If the software application is online then the users get to access the software application using a web browser. This does not require an installation of the software application on the host operating system. Moreover, things like online storage on the cloud and live chat sessions for help could be offered to the user for such types of software. Also, any software updates to such online software applications can be made available to the end user instantaneously. However, the downside of an online software application is that the end user cannot access the software application when the Internet connection is not available. Also, any degradation of the software as a service cannot be remedied by the user. It needs the intervention of the engineering team that owns that software service.
The installation of the tool on the user's local machine enables the user to use the software at one’s own desired time, even without the Internet connection. However, local installation means that the software updates for the desktop software application will be available only with an Internet connection. Also, the software updates to the local installation of the software application cannot be made available instantaneously.
Application understandability
Most users prefer to use a software application that will enable them to achieve their objective of using the application in the smallest amount of time or with the least number of steps. If the software application is tedious to use or understand, the end users become frustrated and move to the next option available to them. This fact is more prevalent for first-time users as they could quickly move to another application software, which solves the same problem for them easily and less tediously.
Navigability, Accessibility and Language Localization
The software application should also provide a clean and understandable user interface so that the user can easily understand the workflow of using the application. If the application is too difficult to navigate on the computer/mobile user interface then not many users will like to use the application.
Accessibility in the user interface is another important realm that enables users with different kinds of disabilities to use your software effectively. For instance, if the user interface of your web application cannot be used by low-vision users, then your application is said to be inaccessible to users with low vision. There are various similar accessibility checks that you could build in your software to make it accessible to users with disability.
Language localization is the process of adapting a product's translation to a specific country or region. Even though English is a universal language, for many people it is not their first choice language. Hence, the text in the software applications needs to be translated from English to their first choice language. This process of localizing the software interfaces into the local language according to the geographic location helps in better adaption of the software across various geographical regions.
Product feature documentation and user education
Have you ever been hassled by the inability to use a feature in the software application even if the software supports it? The presence of a feature in the software but not being able to use it drives the users to search for online videos, product screenshots and forums where they can find help on how to use that feature. This annoyance of having to look around at how features of the product work could drive users to look beyond the software that they are using and push them to explore other available options. Hence, the software application should provide sufficient demonstration videos or software workflow screenshots to enable the users to use the software more easily and effectively. When some guided tours in the form of videos or screenshots on how to use the software are available in the software itself or its accompanying website, the user can learn to use the software effectively without getting hassled.
Multi-platform/Operating system support
The functionality of the application software should not be tightly dependent on a particular operating system or a particular web browser if the software provides an online interface. If the software functionally or the performance of the software is tightly dependent on the operating system or web browser then it will not be usable for a large number of users. Imagine, that in your workplace you own an Apple MAC while your other co-worker owns a Windows PC. For instance, if you find a cool software that helps you optimize some important activity in your work on the Apple MAC and you were to attempt to install a Windows version of the software on your co-worker's Windows PC to find that there is no support for that software on Windows. You cannot seamlessly use that useful software in a team setting. The software, hence, should be available on different platforms for it to be more usable across a large realm of users.
Dependency on propriety infrastructure versus open-source infrastructure
In a world of open-source software, end users have plenty of choices with most kinds of software. They tend to spend less on software that they use daily. Software that depends on other propriety software to work will force users to buy that propriety software to make that software work. The dependency of some software on some other propriety and costly software makes little sense. Instead, if the software has more dependency on open-source software infrastructure which is readily available without any additional cost, it makes a more viable case for the end user to use your software.
Handling of user data
Handling of user data has become a very important aspect of software systems in recent times. Users are given more freedom in terms of how software systems handle their personal data and user application data. Regulations like GDPR refrain companies from storing, using or selling user's personal data without their consent and give users full control over their application data (with delete privileges). Hence, while designing software systems we need to make sure that we don't inadvertently misuse user's personal data and allow users to handle their application data as they desire.