Most of us have moments in life where we question ourselves, often forced into being by some personal crisis or difficult situation. During one of these I enrolled on a course to learn Counselling, a form of Cognitive Behavioural therapy that is popular in the NHS and privately in the UK. I studied for about two years, and afterwards took a course in abnormal psychology. Even though I never qualified to become a counsellor, it's one skill I use often, even in web development.
Here are some of the main takeaways I gleaned from my course:
1. Drink more water
It amazed me how much of our psychology changes with our eating and drinking habits. I'm not talking about drugs or stimulants here: my tutor noted that we often compensate for tiredness by drinking coffee, however a good glass of water would often have a much bigger impact.
Similarly with getting sufficient sleep: if we get 7.5 hours or less, our thinking is impaired. The less we sleep, the more irrational our thinking becomes. I realized the truth of this statement most clearly one occasion when I hadn't slept for three nights, drove my car, and crashed it into a truck.
If you're having an issue with some code, take a break. Have a nap. Drink some more water. It amazes me at how often this helps me to solve coding problems.
2. Everyone has different perspectives
You're on the way to a close friend or family members' wedding, driving down the motorway, and running late. You see a puppy on the side of the road, in distress, clearly malnourished.
What would you do?
Some people would drive past: taking care of the dog would make them late for the wedding; something they've been planning for a while. Others wouldn't hesitate to stop to help the stranded animal. In fact, they might only attend the wedding once the dog has been safely cared for, no matter the time that might take.
Everyone has a reason for what they do; and these perspectives often drive our decisions. The person who stopped to pick up the dog wasn't being inconsiderate to their friend who was getting married; they simply judged that another had a greater need at that moment.
Conversely, the person who ignored the dog wasn't being heartless: they merely have different drivers for their decisions.
Some people have a preference to write with the right-hand, others the left. We're all inherently have these preferences for our personalities too. We can train ourselves another way, like a left-handed person can train themselves to write with the right hand, but our overriding preference doesn't really go away.
This taught me that we should respect others' choices, and stop judging them, they have good reasons for making their decisions. They are also their decisions, not ours.
We should take into consideration these perspectives when we're writing software. We should also be writing software with other people - not necessarily developers, but other people invested in the outcome. Because if you're writing software in isolation, how can you take into consideration other people's ways of thinking, or even be aware of things like their skin colour or facial features? What about their physical or cognitive disabilities?
3. Psychology theory is just theory
One of the most famous psychologists, Sigmund Freud, was obsessed by evolution, and therefore the base instincts a person has. This led to some pretty interesting ideas about the activity of the subconscious, but also some pretty horrific viewpoints on racism.
Carl Jung was a natural successor, and I often think of him as ... kinder ... to human nature. He's the one who came up with cognitive behavioural theory (CBT), that a person can change if they have enough awareness and motivation.
Isabel Briggs-Myers and her mother Katherine Cook-Briggs subsequently came up with the Myers-Briggs Type Indicator (MBTI), which suggests there are four differentiators (like a preference for writing with the left-hand or right) that combine to form a persons' personality. They tested loads of people on this, and quite often the results were a remarkably good fit. Their ideas form the basis for a lot of personality tests you see today. However, because nobody knows what is really going on in our heads, it's still just a theory. We can't say it'll fit every individual. For example, by suggesting a person has certain personality traits, are they more prone to adapting to show those traits? Or to not show them over time? I've taken the same MBTI test with a 10 year gap. My personality type the second time was significantly different to the first.
As developers, we can be tempted to strictly categorise and compartmentalise everything - specifically people, but other things too. But these will ultimately break down and become less relevant. Sometimes you just have to go with what works.
4. Just listen
Most of the time, the most powerful thing you can do to help someone is to listen to them. As much as it gets repeated on social media, memes and other places, actually, really, attentively listening to someone is a skill we often lack.
The main thing that gets in the way is ego: we strongly desire to share our experiences, our solutions, to validate ourselves, or to compete with another person.
But once we let that go, instead focusing on the needs of the other person, we put ourselves in a place to really help them.
What I mean by really listening is active listening: hearing what they say and then validating it, either by reflecting it back to them (using different words to say what they just said), or asking pertinent questions. If you didn't understand what someone said, don't be afraid to ask them, "what did you mean by that?", or check your understanding by reflecting back and welcoming their explanations.
This can help us in many aspects of web development: at the planning stage when a feature is being explained to us, when listening to feedback on a feature we've just written, or when doing user interaction research with customers.
How does any of this help me in my web development career?
Some people take up software engineering to get away from people. However, if you're tempted to do that I think you'd probably be disappointed. We primarily engineer software to help people, and people are intrinsically involved in deciding what we build, and how we build it.
Also, every day we interact with our team mates, and other colleagues. One day, they're going to experience a crisis and will need our support. I consider it part of my job to be there for them when they do.