How to Design Software for Modern Workplaces


Computer systems in the modern workplace have become indispensable to productivity and efficiency. Simultaneously, the ways in which people work have changed. In this era of increased globalization and digitization, software must be designed to meet the demands of these changes specifically, to maximize productivity.

Fortunately for employees, there are a number of design principles that can serve as a guide when structuring software for this shifting context:

context-awareness, seamless integration with external systems and services, attention to cultural factors such as language and customs, modularity to accommodate change over time.

The article argues that it is critical for all of us engineers, designers, and managers alike to understand these principles. To this end, this article offers an overview of the relevant literature on workplace transformation along with specific advice for software architects, developers, and designers compiled from .

How to Build a Modern Workplace: The Complete Guide

Workplace transformation

Workplace transformation is the term used to describe the shift in how people work that has taken place in recent years. This shift has been driven by changes in business practices as well as advances in technology. Globalization and digitization have flattened organizational hierarchies and increased geographic distance between teams of workers . Mobile technologies have allowed people to work outside the confines of their offices (e.g., at home or on-the-go). And the Web has given rise to new forms of work, including telecommuting, crowdsourcing, and cloud computing. All of these factors have created demand for software that supports the ways people are now working.

Shifting context:

Software must be designed to maximize productivity. Productive systems are those that are task-focused—that is, they encourage the user to complete their desired tasks with as little friction as possible. Writing code that supports productive systems is critical today because computing has become ubiquitous in the workplace. 

According to one MIT study, approximately 90% of corporations have deployed some type of enterprise application that is used by more than half their employees on a routine basis . Moreover, the total number of software projects has since risen by more than 30% per year. To help combat this leap forward in terms of what is being produced, the article suggests some design principles that can act as a guide for software construction.

Context-Aware Design : 

For example, it is important for users to be able to move throughout the system without losing context of their tasks (or without having to rely on external systems). This can be achieved through self-contained functions (i.e., functions that are not dependent on other functions). Such an approach would allow users to move freely within the application, which is crucial when employees are working at different locations.

Seamless Integration : 

For example, software needs to be able to integrate with other systems (e.g., email, calendars, chat) that are widely used in the workplace . It is also important for applications to be able to connect with external services designed for consumers (e.g., Google Calendar). The idea of integration can apply at different levels within an application. For instance, it is important that the software allows users to search for information across documents or records stored in different databases or applications . Further, it can support rapid transfer of data between instances of the same application running on mobile devices and on desktop computers . One way this can be achieved is by using APIs (application program interfaces) between different services .

Attention to Cultural Factors : 

The article proposes that software must take into consideration cultural factors that can affect how users interact with an application. For example, if the target audience for an application is composed of non-native English speakers, the software would need to be designed to accommodate these differences . If the majority of their interactions with an application are done through voice recognition systems, the system would need to be designed accordingly. This means that there would need to be an agreement on terms and language breakdowns.

Modularity : 

Modularity refers to the notion that components within a system must be independent and loosely coupled. For example, this could work in tandem with context-awareness by reducing dependencies between modules of a system . For instance, an application that will have modules that maintain different records in different databases can be more modular if each of these modules are independent . This approach would allow users to operate the system without needing to integrate with other modules.

Change Over Time : 

The article supports the notion that software must be designed to accommodate changes over time. For example, if a user plugs in new information on a mobile device, the software should be able to seamlessly incorporate this new data into existing datasets . Or if new hardware is introduced, the system should be able to migrate existing data over time . A change of context always entails some amount of disruption within an application. Therefore, it is important for designers to account for how various systems might react when changes occur.


Please enter your comment!
Please enter your name here