Psychology in Programming:

The Worst, The Bad, and the Ugly

The long hours of remaining stagnant in a chair while staring at a bright screen heavily influence the condition of the mind and body. Unfortunately, computer programming professionals require individuals to endure such grueling hours of being in front of a computer. Thus, the psychological outcomes of computer programming are worth noting when assessing computer programmers’ mental and physical health. Compared to the average person, it is generally easier for a programmer to fall victim to two psychological conditions: human fallibility and imposter syndrome. Computer science is a large field that can be stressful to navigate as a professional. Understanding the worst parts of computer programming — the psychological risks — and combating them will help individuals achieve mentally healthier goals.

Historical Roots

Technology has been an essential part of the ever-evolving society. With so much of our world becoming automated, heavy reliance is placed on the ability of humans — and sometimes even animals — to efficiently interact with machines. In fact, without software engineering, you would not be able to use your cell phone, Xbox, or automatic cat feeder. Computer programmers play an extremely vital role in helping society achieve various evolutionary stages and deserve tremendous recognition for their hard work. Therefore, this section is dedicated to establishing the historical roots of various vital milestones that helped bring modern machines to fruition.

Due to the development of Charles Babbage’s Analytical Engine, the early 1840s marked the creation of the very first mechanical computer. Alongside this came Ada Lovelace, who developed the Algorithm for the Analytical Engine, also known as the first computer language ever created in 1883. The significance of Lovelace’s fame lives on through Ada Lovelace Day (ALD), which is celebrated every second Tuesday of every October. This day allows the world to celebrate the glorious women who continue to impact our world through Science, Technology, Engineering, and Mathematics (STEM). However, this is just one of many contributions to programming.

Through John Mauchly’s Short Code, the early 1950s marked the first high-level programming language for electrically powered computers, much different from Ada’s language built for mechanical computers. Both the Binary Automatic Computer (BINAC) and the Universal Automatic Computer (UNIVAC) were the first of their kind to utilize ShortCode. Although Short Code was a prolonged and complex process that required manual conversions, UNIVAC and BINAC helped initiate the new age of “Big Iron”.

The age of Big Iron was the beginning of the technologically competitive scene between various companies and laboratories to build computers. Although these machines were big enough to fill an entire room, many of these computers were restricted in capability; solving challenging math problems was these machines’ specialty. Aside from lack of general use, computers were also costly and complicated. The demand for these machines was relatively low, thus requiring application programs (word processors, database programs, operating systems, etc.) that would allow the broader business and scientific markets to utilize computers better. While these applications would need — yes, you guessed it — programming language to help bring them to life, research was minimal and complex. Thus began the hair-pulling, psychologically stressful aspects of software development that have continually affected programmers until today.

Fallibility in Humanity

One day my mother asked, “Sweetie, can you go to the store and buy one bottle of juice? If they have eggs, buy 6”. I came back home with six bottles of juice and no eggs. She angrily asked, “why did you buy six juice bottles“? BECAUSE THEY HAD EGGS!

I think we can all agree that humans possess limited knowledge. Even when we feel we were given adequate information, enough is not enough. Or, as Yuval Harari puts it, “…we think we know a lot, even though individually we know very little because we treat knowledge in the minds of others as if it were our own”. People are not mindreaders; it is impossible to know what others are thinking without being precisely told. One of the most complex parts of making mistakes is the internal and external frustrations that come with it. Internally, we sometimes feel like our work is not good enough when errors occur. Externally, other people — like my mother — become frustrated with the work we produce. Computer programmers are very familiar with the abundance of mistakes that present themselves, accompanied by varying degrees of frustration. But when is ignorance bliss?

To be fallible means to tend to make mistakes or be wrong. Humans are highly fallible simply because we are far from being perfect. While this is not inherently a bad thing, according to Australian Public Law publisher Jonathan Crowe “…the limits of our knowledge routinely prevent us from realizing just how much we do not know”. In other words, human nature in psychology is the true enemy of our accustomed faults. Unfortunately for computer programmers, the fallibility issue is exacerbated when it comes to the excruciating hours of developing code. CEO of Alumnify AJ Agrawal believes that “…the hardest part of learning to code is less technical and more psychological”. Like Crowe, Agrawal recognizes all humans’ psychological faults: fallibility.

Through the coding language Python, here is an example of a Loop that develops a multiplication table up to 10. Without going into detail about what everything in this code means, the takeaway here is that some particular symbols and spaces need to be implemented for lines of code to run correctly. It is effortless to make a simple mistake such as spacing or using the wrong symbol:

rows=10 # Multiplication table up to 10columns=10 # column valuesfor i in range(1,rows+1):for j in range(1,columns+1):# inner for loopc=i*jprint(“{:2d} “.format(c),end=’ ‘)print(“\n”) # line break

Therefore, making mistakes is an integral component of instructing the computer — and what it means to be human — which will be crucial to understanding how to combat the effects of fallibility in a later section of this article. While this is just one psychological condition that many individuals within the information technology profession are forced to come to terms with, the next section will cover a psychological condition that may surface concerning human fallibility.

Beware of the Imposter Syndrome

Imposter syndrome is defined by various feelings of self-doubt and the need to work harder, so others will accept you. An article by the Harvard Business Review found that the imposter syndrome “…disproportionately affects high-achieving people, who find it difficult to accept their accomplishments. Many questions whether they’re deserving of accolades”. Regardless of whether an individual is entry-level or professional, feelings of self-doubt may develop throughout their career. While many studies focused on a cohort of women, a few large-scale studies that included large samples of both men and women will be cited throughout this section.

According to a Prevalence, Predictors, and Treatment of Imposter Syndrome research study conducted in 2019 that reviewed 62 other studies, anywhere from 9–82% of people reported having thoughts of feeling like an imposter — and these percentages were on the higher end for ethnic minority groups. According to the Harvard Business Review, women of color cited feelings of marginalization or disillusionment at much higher rates than their White colleagues. This type of exclusion exacerbated imposter syndrome, a key indicator of psychological distress that led to the affected individuals quitting work. While this research study does not mention which percentage of participants were within the computer science department, a robust literature cited varying associations between the imposter syndrome and job performance/satisfaction.

Joseph Mania recently wrote an article on Why Programmers Experience Imposter Syndrome. Some of the key reasons behind imposter syndrome are the debugging process, the difficulty level of software programming, and the fear of making mistakes — AKA human fallibility. Programmers generally have difficulty figuring out what went wrong with a project or assignment they are working on. Spending hours in front of a computer screen with no human interaction can also be very stressful.

Thus, the imposter syndrome has become one of the worst computer programming aspects involving much self-doubt feelings. This psychological condition may push an individual to feel unsuccessful at work — especially within the ethnic and minority groups — causing them to quit their job. While human fallibility and the imposter syndrome have been shown to affect the mental health of professionals within computer science harmfully, this next section will help develop an understanding of how to deal with these mental health issues.

Mental Health in Combat

Hello fellow developers, the information in this section is specifically for you but can also be utilized by anyone else in any profession. Your mental health is essential, and you are never alone. No doubt, psychological distress impacts many individuals in computer science. Therefore, it is necessary to establish the different outlets you can utilize to help better yourself — not only for mental health but also for work productivity. Here are a few additional articles that discuss the many ways you can tackle mental health.

An article published by Better Programming offers four helpful ways for all developers to prevent mental health issues. Whether a web designer, OS developer, or Systems Software Engineer, the first step revolves around self-awareness. Things such as Irritability and stress are harmful symptoms that should be accounted for. The next step is to reach out to a preferred community — this could be your coworkers at your workplace, an online community such as Reddit, or an online tech community such as the Portuguese Women in Tech (PWIT). Being vocal about your issues in one way or another is highly important to help you manage your mental health. The third step is to develop and maintain healthy habits. This ranges from getting enough sleep and eating healthy meals to partaking in physical activities and reducing unhealthy habits such as smoking. The final step is to reach out to a professional — therapist or personal coach — if the previous efforts are unsuccessful for you.

Jason Humphry details many outlets for positively impacting mental health within his article Programmers and Depression. Humphry emphasizes the four ways mentioned in the previous article but adds a few of his own to keep the information clear and concise. Having confidence is another step to improving your mental health, especially if you want to combat the imposter syndrome. Humphry expresses the idea that if you “…act as if you are the way you want to be”, you will find yourself making it through tough times more often. One other solution Humphry notes is for people to find the power to stop comparing themselves to others. This is because “…comparing ourselves to other people regarding paying, skill, respect — it’s the death of all things good because you’ll never be good enough”. Only compare yourself to yourself.

Key Takeaways

In summary, the worst programming aspects are understood as being psychological. Developers of all ages and genders are prone to fall victim to human fallibility and imposter syndrome. While there is an abundance of posts that offer advice on how to combat these mental health issues, the articles posted by BetterProgramming and Jason Humphry summarize the best advice that should be taken seriously. Have an awareness of your problems, reach out for help, maintain healthy habits, have confidence, stop comparing yourself to others, and reach out to a professional if all else fails. Please remember to take your health and well-being seriously, as this will ultimately help you achieve a healthier and more prosperous career.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store