Big Data, mobile and cloud are technology trends that have gained prominence in the last couple of years. Much has been written on these and particularly on Big Data and how enterprises need to gear up for making their data ‘talk’ and hence reap business benefits.
If we examine the considerations needed to build good software, specifically enterprise software, the focus would mainly be on mobile, cloud, user experience and the Internet of Things (IoT). These are not ‘rends’, but something that is already pervasive in any kind of software built for customers, particularly in enterprise class applications.
Mobile technology, applications, and platforms have been around for some time. However, the change is that one should no more build an application for mobile consumption as an afterthought, rather, they need to start with it. This has a lot of advantages as the real estate on a mobile is limited. Hence, it forces application builders to first bring out the minimum viable feature that the consumer of the application cannot live without. The same application in a bigger form factor, say for a PC or tablet, may have more features as needed.
From a user experience point of view, a mobile application also forces application developers to make the application easy to use and consume, irrespective of the amount of data being handled. The constraints of a mobile user are much more than a bigger form factor and hence the application will need to be much more attractive and intuitive. Last but not the least, any mobile application that does not respond almost instantaneously after a click, loses the user’s attention. This means a mobile application needs to perform and handle any kind of datasets and return the results rapidly. The same application in a bigger form factor will also be very attractive if this speed constraint is met.
To summarize, a mobile-first approach helps build better software as developers have to take care of the feature constraint, the user experience constraint, and the performance constraint.
Today, the Cloud is fast becoming the most preferred deployment model. With the increase in use of software on the Cloud, data security and protection of customer data is given primary importance as customers run critical processes with sensitive data on Cloud platforms.
As a software builder, just like mobile, the need to offer a deployment option on the Cloud for any class of software is the need of the hour. Software builders, today, need to offer software that can be consumed both in an on-premise model (model where the software and hardware is managed by the buyer of the software) as well as through the Cloud. This trend is not only beneficial in terms of lower cost of ownership for customers, but also helps software builders to know how software is being consumed.
For instance, software developers can learn which features are most used, what kinds of users use their software, and at what frequency. The focus shifts from the need to keep adding features and asking sales to push it to building precisely what the users need and consume.
To summarize, Cloud as a deployment option is paramount for any software that we build today just to stay current with the users of software.
Design and User Experience
Good design for products and a great user experience has been the hallmark of successful product companies (outside of software) for decades. However, in the last decade or so, Design as a discipline and the User Experience (not just a great User Interface) in software has gained importance. The fundamental change is that today software is extremely pervasive and not just restricted to a few IT users. Also, the power to decide on which software and applications is to be consumed is shifting from IT departments in companies to individual lines of business and, in general, more users imply that software is directly reaching end points.
Whenever this happens, along with features and functions, the underlying design and experience it provides becomes a significant differentiator. So, as software builders, it is important that for any software that may be built, the design and user experience is a key component and investment is sufficient in this aspect.
Coming to the users of software today, they are fundamentally different and most have grown up with Feature Phones as well as Smart Phones and Tablets. Their expectations of applications are much higher in terms of experience, performance, and ease of use. As an application developer, it becomes important to not just rely on designers to provide input, but to think intuitively. This zero distance to end users of the applications built will greatly enhance products as well as bring out superior innovations.
Internet of Things
We live in a connected world today. One can switch on the air conditioner and the lights before they reach home or make an online booking for a particular hotel and the address gets automatically fed into the GPS of a car, eliminating the need to feed in the address again. There are many such examples where almost all the devices that we see around us have the capability to send and receive information.
As a software builder, it is important to understand which systems can potentially connect with a given application. At least, it is important to design and architect applications so that they have enough interfaces to not just talk to other applications but interact with data from other devices. In this context, the zero distance to end users helps a lot as one can understand the context of software usage and pre-empt capabilities for inter-device communication based on the user needs.