Software development has traditionally been associated with strong left brain activity, i.e. a high degree of analytical skills applied in solving computing problems through logical reasoning and structured thinking down to the lowest level of granularity required by technology.
While this has remained at the core of a software developers’ psychological makeup the environment around them has constantly been evolving and changing, even more so in the last ten years. Technological advances have produced newer and newer types of infrastructure and utility software to work with (such as libraries and higher level languages). They were primarily intended to improve productivity by “canning” solutions to frequently encountered programming requirements so that developers could spend more time focusing on the business problem than on computing issues. At the same time, their introduction required less and less development effort on each layer of software architecture.
With so many readymade functions, layers and utilities available out of the box, the software developer’s job has slowly changed scope and focus, moving from being focused on a single area of technology skills required for one particular layer of an application software to being able to work with all the complementary technologies required to build a complete working application, including a front end, a middle (or business process) layer, and a backend which involves data storage and/or integration with other software. What this has also called for is for the software developer to increasingly become more creative as well, in terms of being able to produce solutions by picking and combining various techniques and technologies to create a whole. It has also required a better understanding of the user’s perspective, in particular, the user experience and user interface aspects of software.
In addition to being skilled with the technologies required to develop the front ends of applications, software developers today are frequently expected to also be able to conceptualize and design screen layouts, navigation flows and user interface elements. This ability has also been naturally facilitated by the adoption of certain agile development techniques which require developers to work closely with users, understand their needs and rapidly prototype entire working business functions starting with an understanding of how a user would interact with the system to be developed.
So now, in addition to be left-brained, but not as deeply perhaps, in some cases, the software developer must now also know how to use the right brain, to be creative not just in solution building, but also in creating good visual and functional user experiences. In other words, the developer must now also be a bit of an artist.
Is this really the case? An artist is a person who produces works in any of the arts that are primarily subject to aesthetic criteria, whether it is visual arts or performing arts or applied arts. An artist is also someone who creates things with great skill and imagination.
There were days when we used to see any plain looking (but functional) applications or portals or websites, as a great work delivered by developers. Adding some intuitive improvements by images, navigation, flash or animation etc. used to get an award for the work. Then came the age of user experience specialists, who could focus on creating the concepts and details of great user experiences. But this, too, is a skill that is increasingly being expected of developers themselves, given the way software is developed today.
Now developers are not only expected to make their software functional but must also pay attention to creating a great user interface and user experience, just like an artist does. Many state-of-the-art apps are the result of imaginative and innovative ideas that produce a delightful end to end user experience. Moreover due to widely used social media, the users’ expectations have been elevated significantly. If one is not able to engage the user and not able to get the user back to the portal or app, then the functionalities of it are not much of use. In enterprise applications, if the users’ expectations are met then change management becomes so much easier for the management.
Nowadays developers have to consider functionality, visualize user interfaces and creative ways to user engagement, create great user experiences and follow an iterative process of continuing to improve the result more and more, pushing the boundaries of excellence. Like artists, developers need to use imagination, transform it into reality, fail and discard the work many times during the process, once done they need to fine tune it to give it a final touch to make it delightful for the users. Then, why shouldn’t we call software developers as code artists too?