Developer Frustration

January 2, 2009 § 3 Comments

There have been a number of times when I’ve sat down to code away at a software problem, and then after a while discovered that I’m getting quite frustrated in some way. If I’m honest I wondered if this was simply me being me, hypothesising that there’s a part of me that just sometimes gets irritated if I’m investing all my efforts to reach a specific goal, and I’m being hindered in some way. It may be that I just can’t seem to go fast enough, I simply can’t do it with the resources at hand (i.e. a deficiency in my own skill-set), or if I’m being disturbed too regularly.

But after spending the majority of the previous year coaching other devs, I’ve realised – thankfully – that I’m not alone in getting somewhat p*ssed off when my best laid plans do not come off in the way that I’d expected.

Why though? I know I’d be happier in my day job if I didn’t get into this arguably ‘destructive’ mindset. I’d be better able to reach that Zen like state of ‘flow’ where the mind is cohesively primed to tackle the problem at hand. I’d be less stressed for starters, and would simply have more fun when I’m doing what I’m doing for a living. Here in this post, I’m going to have a stab at discussing some commonplace frustrations I see in myself and others, and then look at what options – if any – we have for handling them.

Before I go any further, we do have to consider if it’s really that much of a bad thing that we do get frustrated at work. After all, it’s often desirable to be passionate about what we do. Surely the upside to frustration is that we are incentivised to remove whatever blockage is in front of us that’s causing frustration in the first place?

As to avoid getting out of my depth in philosophising what exactly frustration is, I therefore choose to refer to frustration in the terms of creating a destructive mind state, as oppose to a constructive one. This is drawing on a book I read by Daniel Goleman entitled ‘Destructive Emotions’. As he writes “With a destructive emotion, there will always be a gap between the way things appear and the way things are”. From my understanding, frustration will impede us when we consequently start to get bogged down in negative thoughts and doubts. Frustration is a natural emotion, and will happen to some more than others. It’s what it leads to and how we handle it that makes all the difference.

What frustrations are there in IT? Some will immediately argue that they are abundantly obvious. For example, I can vouch that software development can be quite a stressful place to operate in. We are given expectations and deadlines, we are constantly reviewed, we act as guardians to preserve the quality of the code we produce, not to mention that business requirements are always changing, and we are frequently interrupted with various meetings and with a whole host of other initiatives.

Other pressures include those of working in a team with a wide range of available skillsets. It’s very much a part of the day-to-day that you’ll be working alongside people that know much more than you in a given area, or on the other hand with people that know very little and require extra time to get up to speed. Looking at the Dreyfus model, where it is postulated that through the process of skill acquisition we move through five different stages, from Novice to Advanced Beginner then right through to Expert, it is logical to assume that each level comes with it’s own set of nuanced frustrations – as Dave Thomas writes about with level one.

So what’s the best way of handling frustration when it occurs? I wouldn’t claim to know comprehensively what the answer is, and individuals do vary greatly. I can think of colleagues that get regularly frustrated, or of those that possess such a Vulcan-esk like mentality that they wouldn’t seem to be able to grasp what all the fuss is about.

What I would offer is that improved self-awareness of when we are feeling frustrated is a good first step towards making our work-life more enjoyable. A second step is a measure of acceptance; it’s OK to feel frustrated, everyone does anyway so I don’t need to give myself a hard time over it.

Once we’ve accepted frustration, another option we then have is to be explicit to others about how we’re feeling. This is particularly useful in pair-programming. For example ‘I’m getting a bit frustrated with this coding problem as we’ve been at it for some time’, or ‘I’m lacking some understanding here, it’s just not making sense to me’. Being explicit about our concerns gives colleagues and ourselves a chance to invent some options about what to do about it.

I was in a pair-programming mentoring role the previous week where upon my pair immediately said as we sat down to begin: ‘I want tell you up front that I’m not convinced by this pair programming practice; I haven’t seen it to be much more effective and I’m finding it very frustrating’. This guy was much better to pair with than the majority of other developers I’ve worked with. Since I knew how he was feeling I was better able to help make things easier and not to aggravate his concerns. I suspect he was happier as he’d got immediately off his chest what was bothering him, and was able to have a clearer focus on the work we had to do.

All this said, about gaining awareness of frustrations, accepting them and making them explicit if need be, is much easier said than done. Doubtless, it comes much easier to some than others.

Meditation is one tool I know of that can help us to improve in this area. By increasingly our self awareness so that frustrations can be detected earlier, we give ourselves more options for dealing with them. Having a structured work plan is also effective. Making explicit the concept of ‘core’ hours where developers are immune to meetings and interruptions, and having frequent breaks when pair programming will certainly help.

Mainly though, let’s just be aware that software development can be… or is… a frustrating practice.


  • Rob

    I am fairly new to the IT field(3 yrs graduated). I am not wet behind the ears but this is certainly the first time I have felt this way about it and I am hoping that it is only this position and not something that is quite common. I have always loved the entire development process and see myself as a strong programmer but now I find myself in a slump.

    I am a PHP/PostGre/Ajax developer working with a medium sized company and for the first 6 months out of the 1.2 years I have been working here, my job seemed great. I loved developing projects for individuals requesting them and working with other developers’ code. Since all of the other developers here are more advanced than I was, I found it very easy to update and add functionality to other programs until now.

    One of the programmers was laid off and I ended up with the bulk of his work. One of the projects being a very large billing project. Unfortunately, his code is very repetitive and doesn’t follow the standard web development coding practices. He has workarounds so that he wouldn’t have to use sessions and there is a lot of duplicate code rather than classes and functions, so anything that I do in this project I find myself having to rewrite quite a bit. I also recently had to trash and rewrite a large portion of the project because of the lack of communication between this programmer and the client.

    So now I am getting back to it to make some more major changes and fear that I am going to have to go through the same thing again. I forgot to mention that I also have my duties to my projects that I have written in the past which seem to be very easy since I wrote them specifically to not require much more than configuration changes and I have this previous developer’s project that I also have to support which are all written in the same workaround-repetitive manor so that also gets in my way. So now I am finding my deadlines falling back and at this point I am starting to get very stresses as I see no end in sight. I know that I am a good developer. I have been told so many times by other more experienced developers, but at this point my stress is starting to lead to a depression and the only way that I can see getting out of it is to find another job.

    So i started looking yesterday.

    Does this happen often? What would you do about it?

  • jon.pither

    Hmm. I’d work out if I have enough influence and skills to change things for the better (for myself and for the wider team), and if not start to seriousley think about moving on to pastures anew.

  • dave.felcan

    I think you should make it clear to management what you are dealing with with updating this person’s code. Maybe then they can adjust your workload appropriately. Also, if this project is really a downer for you ask to move on to another one. Perhaps its like a hazing project for new developers, and now you’ve done your time 😛

What’s this?

You are currently reading Developer Frustration at Pithering About.