I guess there’s something to learn in anything. During the last few month I was thinking about what programming has taught me. When the notion of “it probably made me a better person” popped into my mind, I was pretty surprised, to say the least.
There is an embarrassing memory etched into my brain, that haunts me every now and then: I was having a chat with some fellow students, and one of them was talking about how Google was saying that there is no more reason to not use HTTPS everywhere. Sure enough, I had read an article that was talking about how that was not true.
As the article’s reasoning seemed sound to me, I told the guy that just switching to HTTPS was not feasible. He said something along the lines of “well if Google says it, it must pretty much be true”. This went back and forth one or two times, and I remember getting so angry about him not seeing why he was so clearly wrong, and I was right. I all but screamed at him how he was too stupid to follow simple reasoning.
To this day I am amazed how nobody of these guys told me, then and there, I should get myself checked.
That was about 10 years ago. I have been working as a full time developer since then, and spend much of my waking hours in front of a computer, trying to make it do what I want it to do. A few years ago I often got angry when something just did not work, and I could not for the life of me work out what was going on. In my mind I insisted on the computer being wrong because there was no way I had made a mistake.
Sure enough that was bullshit. It was my mistake every single time. Either I made a very stupid mistake/typo somewhere, or failed to realise how some library truly works or messed up in some other subtle way, it was always me that was wrong.
After a while I probably learned that not getting angry would make me more efficient in finding the problem. It’s amazing, if not surprising, how much keeping a cool head helps with reasoning, really. And after all reasoning is pretty much all that there is to programming.
And if I really get frustrated that’s a clear sign to step away from the computer for a while. Take a short break, or maybe just go home. Sometimes I still have to force myself to step away, because it feels like giving up. And all I want to do in that moment is to squash that bug and taste the sweet, sweet taste of victory. But then I let go and go home. And the next day I have a look at the piece of code that gave me all this trouble, and I have to roll my eyes at how I could not see the solution before.
Generally it’s pretty hard for me to let go of problems. Sometimes, particulary when I’m chewing on a especially interesting problem I’ll lie in bed at night and turn it around and around in my head. I can’t remember a single instance where I really made any progress that way. On the other hand I’ve regularly had pretty good ideas while taking a leak or having a shower. That is, I believe, because I simply let go of the reigns of my brain. And my brain goes for a ride, and sometimes when it comes back it says: “Hey, I found this for you”.
I like to think that what I learned as a programmer also helped me in my daily life as a person. If something somebody says sounds totally nonsensical to me, I never explode anymore. Quite the opposite in fact: My first instinct is to check if I could be the one at fault. Maybe I’m not understanding something correctly, or I’m not seeing the full picture. If in doubt ask more questions.
It never helps to lose one’s head. Few things frustrate me more than realising in hindsight I could have done better if I had kept my cool. And it immensely helps to not get lost in loops where I go over the same questions again and again without any new input. Arguing with yourself only gets you so far before you need to stop and step away.
These changes I see in my own character certainly have not just happend because I’m a programmer. Age and experience certainly help a good bit, too. Age also helps with getting more laid back I suppose. But it certainly helps to train to find the actual problem instead of arguing with your computer five days a week.