The important role of Psychology in Software Engineering

Anyone who had been involved in a software development project may have notice that psychology plays an important role in the performance of this discipline, e.g. from team management to requirements elicitation. However, our field can receive even more benefits from this science.

If you are reading this post, it is very likely that you have been involved, or somehow related, to a software development project. In such case, you probably have noticed that psychology plays an important role in the development process.

From the very beginning of the project, we need to establish a communication with the customer and try to elicit the requirements, which sometimes is difficult due to the differences in the language that a technical person uses with respect to the customer. Many times we get frustrated because requirements change a lot but, in my experience, a considerable amount of times those changes are caused by communication problems.

Besides this, software engineering is a team discipline and requires management to be able to get the most out of the team. Although I particularly prefer a very horizontal team where everyone takes responsibility for what they prefer doing, always there is a need of someone to take the role of the leader. Nevertheless, many people get confused by this leadership and transform it into despotism. I am not going to go into more detail about this, many people have written about this before, and you probably have experienced it yourself.

However, this is very basic Psychology; nothing different from what you can expect in performing any other job. What I wanted to point out is that we can obtain further benefits if we apply hardcore concepts from Psychology into Software Engineering. To illustrate my point, I want to share a couple of videos that I have watched recently.

The first one is Code, Crime, Complexity: Analyzing software with forensic psychology, by Adam Thornhill, where he applies concepts from forensic psychology to detect problems in your code, and consequently in your design. I don’t want to spoil anything from the talk, so watch it yourselves:

Code, Crime, Complexity

By the way, he also has written a book titled Your code as a crime scene, which looks very promising. It’s in my To read list, so I hope I can get it soon.

The other video I wanted to share is Cognitive Science and Design, by Alex Faaborg in Google I/O 2013, where he explores how Gestalt perception principles can be related to the design of User Interfaces.

Cognitive Science and Design

Those two are examples of how a combination of very different disciplines can result in a big improvement in the performance of some activities. I hope that we can keep getting important enhancements into our field by exploring other sciences. If you know any other examples of similar explorations, please, share in the comments below!

Dialogue & Discussion