This post is going to be about sensitive topics that most developers rarely explore: psychology, therapy, and a healthy amount of self-reflection.
Of course, you cannot really talk about these topics without relevant education, but I'm not going to give you lessons on psychology. Even though, at this point, after 13 years of my own therapy, I think I know so much about psychology that I could probably evaluate the exams of first-year psychology undergraduates.
Everything in this article is the subjective opinion of someone who has spent a lot of time and money on therapy, so please keep that in mind.
The denial
I want to talk first about the complete rejection of non-STEM topics—the denial that the humanities are relevant to the modern world. Yes, this happens a lot, even among professional developers with a master's degree in computer science. Most of the time, I believe, such extreme opinions only reveal a complete lack of self-reflection, or maybe they mask a fear of what would happen if these individuals started probing into areas they had hoped never to revisit again.
But I'm not going to discuss this any further. If you categorically reject non-STEM subjects, or if you think psychology and therapy are nonsense, then this article is not for you.
Why I work as a developer
I come from a highly dysfunctional family. As a child, I often experienced extreme moments of violence, threats, humiliation, and severe emotional neglect. It was mostly a sad childhood full of stories children should not experience, but I'm writing this not for sympathy, but for context.
My childhood shaped my psyche, my overall personality, and deeply influenced my career choice. Even as a child, I knew I wanted to be a programmer—an engineer working with computers.
Sitting in front of a computer, either playing games or trying to hack something cool together in MS Frontpage or Visual Basic, was a safe haven for me. My parents didn't care; they could leave me at the computer and would find me still sitting there when they came back.
Many years later, I got my master's degree in software engineering. I also attended my very first therapy session around that same time.
Overengineering
As a developer, I find satisfaction in solving problems and completing coding tasks. But it used to go deeper, to an existential level.
Sitting in front of a computer was part of me, part of who I was—an important part of my identity. Playing PC games and focusing on coding problems had become a way to tune out everything else. It was a step into a completely different universe where things made sense, and I didn't need to feel fear or be extra careful about anything. It was a place where I could, to an extent, express myself safely.
When I focus on coding tasks today, I still feel the pull towards satisfying solutions... but it's no longer a pull accompanied by a metaphorical gun pointed at my own head. You see, the severity of childhood trauma correlates strongly with how much you're willing to protect the moments that bring you happiness, even to the point of hurting yourself.
And this is one of the reasons overengineering happens so often in this field. Developers with a lot of internal pain are trying to reach for the nice feeling of a complete solution. The greater the pain, the more they tend to overengineer.
However, there is a good side to it: I really used to love analyzing anything. I feel like the pull towards the satisfying feeling of a complete solution can be fulfilled by conducting a comprehensive analysis of a certain problem (instead of coding the problem immediately and analyzing along the way). You are actually allowed, even required, to kind of "overengineer" those. An analysis where you consider everything, every detail, and every point of view, has a high chance of being a good analysis.
A developer's identity
I no longer consider coding to be part of my identity. I've learned that what you do is not who you are. It is all just a mask.
I used to think that if I presented myself as "the IT guy," I'd have a higher chance of landing a job, which is horrible for many reasons. Putting on masks never leads to a more fulfilling life, at least not for me.
There are also psychopathic people in the industry—employers, HR, managers—who want to take advantage of your broken psyche, which desperately wants to win their approval through the identity you are unconsciously constraining yourself to. And if you cannot maintain that facade any longer, they prod you in the most painful ways, forcing you to hold the pose for longer.
The attention deficit
A developer's job is very focused but mundane. The industry has so many things to focus on that we don't really waste time with small talk. We're so used to it that we talk about code even during lunches, team-building events, and even when we're drunk.
And this is not very comfortable for adults with unresolved pain stemming from the lack of attention they experienced as children. These kinds of developers tend to DRAMATIZE!
The most esoteric linter rules are the most important! The code that loads a few more bytes of memory than needed! The algorithm that runs in O(n) instead of O(log n) in code where n is no greater than 21... The insane(!), critical(!) security bug they found in a POC someone wrote 7 years ago—oh, the humanity!
They do this (I know I used to) because being dramatic is what children normally do to get attention. The tendency to dramatize disappears in adults who got plenty of attention in their childhood... but not in those who didn't.
Trauma hidden as introversion or ADHD
I've been programming since 2004, and I feel like nowadays my colleagues are mostly... normal people. People with lives, families, and character. Well-clothed. Clean. Looking back, however, I feel like developers used to be a bunch of weird people (myself included) trying to hide from society in a basement, wearing cargo pants and oversized shirts.
The popular stereotype, however, still seems to be that developers are introverted people with ADHD.
Well, for me, introversion is no longer an important personality trait. I believe that often it's not about being an introvert, but about being fearful of other people due to unresolved childhood trauma.
The same goes for ADHD. True adult ADHD is very rare (don't take my word for it; ask a psychiatrist), but the symptoms of ADHD, such as inattention or impulsivity, overlap with the symptoms of unresolved childhood trauma, PTSD, or CPTSD.
For most people, acknowledging childhood trauma in the first place is very hard—often impossible (especially with CPTSD) to even touch without the help of a therapist—but self-diagnosing yourself with a condition you were born with is much easier.
Top comments (2)
This resonates, though my route into it was a bit different. For me the pain came from the people around me rather than from home, so as a kid the room with the computer became the place I retreated to. Friends, social stuff, the usual mess of growing up, that was the part I needed distance from back then. These days none of that shyness is left, but at the time it was where I felt safe.
What pulled me in specifically was wanting to know how things work. Not just in pixels, but in the real world too. Code was where that curiosity was safe to follow, because it actually answers you. You ask the machine a question and it tells you the truth, no games. That kind of straightforwardness was rare for me back then, and I think that's a lot of why it stuck.
The overengineering point lands hard by the way. I recognize that pull toward the complete solution, and your reframe of channeling it into analysis instead of code is something I've half-figured out on my own without putting words to it. Good to see it named. Thanks for writing this, takes some nerve to put it out there.
Do you know about people who can help a young dev.to author (not me, but muso_hailu) with some tips/review about Kotlin app + Py-FastAPI BE?
The problem is that I'm not Kotlin, neither Py, so I cannot give that dev any good advice.
I think that person would benefit from a little bit of talkie-talkie/review-youdontdothisyoudoitthatwayseeitisbetternow.