In my previous post, I briefly mentioned how working with clients as a psychotherapist is analogous to programming. Part of being a good therapist means understanding how a client sees the world and why. Similarly, while learning to code, I continuously find myself discovering how computers see the world and why. Two important aspects of both human and computer interactions are communication and problem solving.
Being a therapist relies on effective communication with clients, which is very complex and nuanced, especially from person to person; we learn how to communicate in an individualized way with every person that comes through our doors. However, there are core components of communication with humans, that overlap with those in computer interaction. Communication requires knowing the parameters of interaction, which consists of learning syntax, operating within mutually agreed upon defined concepts, and becoming familiar with common patterns.
In programming, we do exactly these things when we conform to proper syntax, define concepts via variable/method/classes/object creation, and learn patterns like if statements, while loops and iteration. Therapy and writing code both share the idea that you are working within a language that has a certain framework, to achieve a goal.
Problem solving is another important piece of therapy and some would argue, the point. Typically, when working with clients, we focus on a specific life area that is causing them discomfort. Together we discuss the pieces of the problem and develop a plan on how to change it, which involves creating and maintaining new behaviors, testing these behaviors, and evaluating them to see if they are useful in helping alleviate our original problem.
In a similar vein, programs are often created as an answer to a “problem”, whether it be: to automate routine tasks, improve on existing tools, collect and analyze data, or a myriad of other reasons. Programmers run through a similar process where we develop, maintain, test, and evaluate our programs. A great example that mirrors therapy is debugging. It is particularly relevant in showing how we work to find a root cause for a problem and work to fix it through this process.
Overall, I hope this post demonstrates that writing code and psychotherapy are more similar than you think! Both require strong problem-solving and communication skills to be done effectively to work towards greater goals.