Developers – You are not just the sum of your technical skills

I’ve been pondering the fact that when I started out on a career in development, I focussed on the technical side of it almost to the exclusion of all else. This was especially true for me since I was coming from a non CompSci background after spending years sticking electrodes in people’s heads and doing biological research. This made me painfully aware that in an industry like programming, if you don’t know your stuff you are useless to your team and your company. Worse, you run the risk of ending up a Net Negative Producing Programmer and reduce your team’s output to less that it would be if you weren’t there.

Thus the first few years of a my career as a developer were spent focusing entirely on technical matters. I fought hard for the expertise in the areas that I worked in: Java, JavaScript and C, web development, back end services and multi-threading… the list is long and mostly distinguished (EJB’s… blergh!). I wanted to be that go-to guy for all thing technical and do my part in making my team the best in the company. As a contractor, my skills were the yardstick for how I was judged for new roles so of course I was interested in keeping them up to date.

After a relatively short time it became obvious that this wasn’t enough. Being technically adept is the foundation of our job but certainly not the totality. Even before you get your first job you realise the importance of communication. Not just in communicating your skills to get that first job but then once you’ve got it, then communicating with the rest of your team including the non technical members. This is especially true in an Agile world where you have to be able to tell others what is going on in a way that they will understand.

Once you have your own work to run, you realise that your time management and project management skills get exercised. You need to be able to plan your work around that of your co-workers and make sure that it gets completed when you say it will. Other people will be directly dependent on your output, and you won’t last long if you don’t follow through when you say you will.

So you get work with someone with a different level of knowledge than you – break out the mentoring and education as you are either going to be teaching someone or just as likely be taught by someone and either way you don’t want to waste a minute. One point to make here is that a common feature of all the best programmers I have ever worked with is that they are always learning. This is just as true for people outside of the technical tier as well. The moment you think that you have something down something else will come up, smack you upside the head and show you how little you knew all along.

At some point you’ll be put in charge of a team, so obviously leadership is important but how to create that balance of dedication, humility, passion, enthusiasm, openness, delegation, honesty, supportiveness and responsibility that a good leader needs? Back up to mentoring and education again. Hopefully you already have someone to look up to, someone to model your behaviour on without losing your own special strengths. There is nothing simple about these so called soft skills and the ability to learn what motivates people is a huge asset.

If you want to enlarge your team then you’d best figure out your recruitment process. This is a key area that people seem to be happy to ignore but the reality is that A players only like playing with other A players and if you introduce a sub-standard player you can upset the entire team. You need to figure out how to get the person you want for your team, how you can attract them, vet them and entice them to join.

You have ideas about how you can improve how you work? The QA process can be improved or maybe the company can really benefit from continuous delivery or there’s a new technology that would seriously improve your productivity? Then dust off your sales skills since persuading people is not just for vendor reps, you need to be able to sell your ideas to both your peers and your higher ups. Diplomacy and persuasion are not dirty words and you need to understand how to use them to get done what needs to be done.

Even when you are an individual contributer (or a “card consuming meat machine” as the Agilists would have it!) every one of these skills is one you will need at some point. Each one of these skills could be the subject of a lifetime’s work and take just as long to master but don’t worry because that’s exactly how long you have!

5 thoughts on “Developers – You are not just the sum of your technical skills

  1. Artim

    Interesting points but for some of them you might want to dig deeper. It is good to build a list of what you should be able to handle – communication, leadership, mentoring, recruiting or sales – but… what does each involve when you are a developer?

    Here is an example of someone digging deeper on the “developer as a leader” topic: Success as a technical leader in software development

    I like to read this kind of articles based on real life experience. Keep up the good posts.

    Reply
  2. H

    I liked this. I often catch myself equating my self-worth to the quality of my technical output and have to remind myself of this. There was one somewhat unrelated thing I saw at the end that prompted me to comment though.

    Each one of these skills could be the subject of a lifetime’s work and take just as long to master but don’t worry because that’s exactly how long you have!

    Another thing I try not to lose sight of is specifically that the above is not true. You have however long remains until the moment of your death, which could be tomorrow or next year for all you know.

    I know some people who are so committed to realising their potential in this industry that their takeaway from this post would be “Oh shit, he’s right, I need to dedicate some extra time to my soft skills as well now!”. If you’re that type of person, consider this a reminder to also put some time aside to enjoy your one and only youth before it’s gone forever.

    Reply
  3. ZVanderveen

    Great post–I can relate, as a Philosophy PhD-turned-developer. Coming in as an outsider has its pluses and minuses. You have to play catch up on the technical side, but I certainly learned communication (from teaching and giving papers), time management (from finishing the degree in a timely manner), and self-study. It’s crazy how few programmers will open a book to learn something! But this comes naturally to me.

    Cheers,
    Zach

    Reply
  4. Nathan Hallford

    I agree the most with your time management point. Although usually I am on the other side of the equation; waiting for others to finish their work so I can continue mine. I usually find that when you manage a team or work with other developers you really have to know their work output and their style of working so that you can work together seamlessly.

    Reply
  5. Pingback: If you bring your developers in house… | Flying Magic Unicorn Pony

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>