Hacker News new | ask | show | jobs
by dkarl 5247 days ago
I've had a lot of different work habits over my career, mostly because of internal psychological factors and external work circumstances. What I've learned from all the variation is that when I encounter a moment of uncertainty and doubt, my brain wants to decide between two choices:

- relaxing and taking a web-surfing break (Facebook, HN, national news) until the uncertainty resolves, or

- gritting my teeth, amping up the intensity, and blasting through to the right resolution while heavy metal music wails in the background.

I think this is because I can't face the possibility that I'm actually having trouble. Programming is easy! I'm smart! I have to be, because I'm not good-looking enough to get away with being a moron who doesn't always know what to do next, who actually has to think when he writes code. What's the point of being alive if you have to be someone like that, both ugly and stupid?

Yes, my brain thinks a lot of strange and stupid things when I'm not paying attention and correcting it.

Neither of the choices that my brain sees as exhaustive alternatives is correct. The best thing to do is relax, tell myself that programming is sometimes hard and it's okay if I need a few minutes to figure things out, and keep working on the problem even though I'm confused. For most of my life I had to be either unusually excited and happy or under some kind of threat, such as a deadline or an upcoming test, before I could bring myself to concentrate on a task that I didn't find easy. Now I do it every day.

What's interesting is that the techniques I use to calm down my mind while it's freaking out over the uncertainty are exactly the techniques I use to keep my mind calm while I meditate: posture, breathing, awareness of body tension, and awareness of my mental states. I also analyze my thoughts and feelings just like I do in insight meditation. Zen coding, indeed!

1 comments

Interesting you mention this; I've recently started a new job which requires me to learn a whole new skillset (web programming with JavaScript). I've been a developer of desktop apps for a while so programming isn't new, but the language and the paradigms (async? wtf?) are challenging. This is in contrast to my early memories of "web programming" aka making a static Geocities site with notepad and wondering why everyone was so excited about the web when it was this easy to make a web page... turns out it's not that easy anymore.

The point being that it really is in those moments of confusion and frustration - where you try something and it doesn't work, or you realise you don't understand how to do what you want to do, especially when you think what you're doing is supposed to be easy - where distraction comes in and you go off track.

I've managed to realise that and am glad I'm not alone. The next step - actually doing something about it - is a little harder (hence why I'm on HN right now...!).

I had that realization today, that I was getting frustrated too easily when I had to learn something new and difficult in iOS, and inevitably I'd bring up Chrome to load HN & co.

This morning I followed the workflow in the OP, and it really improved my performance. I set a timer for an hour, really put work into understanding everything, and when I was done I took a 35 minute break (it is a Sunday). It was rewarding and productive; I'm going to keep this behavior up. Thanks Jiri

I know it sounds silly, and I joked about it for a while before trying it. I put HN, reddit, and news.google.com in my hosts file pointing to localhost. The extra few seconds it would take me to modify that file, and the knowledge that I was breaking something I explicitly put up for my own good, keeps me from visiting these sites.

On the other hand, I've learned a lot of new distracting sites this way :(

You are welcome Max! I'm really happy that it has helped you.