Trying to do everything

I had an interaction on Twitter today which got me thinking – as Twitter discussions often do, because the amount of debate possible in 140-char limits leaves many things left over to think about. I think this blog post is mainly just to make the arguments that I couldn’t on Twitter. I’m not sure that’s a good enough reason but hey, it’s my blog.

The beginning of today’s conversation was this tweet I saw: “Dear developers: to have any sort of impact in this industry — managerial, or technical — you need to know how to people.”.

Now, in its defence, the tweet is true from at least two points of view. Firstly, the status quo argument: as things are, at present, you need to have influencing skills to get anywhere. That’s true, and it’s good advice if you want to get promotion. But it doesn’t really move us forward towards anything better: is that what we want the industry to look like? Is it the way to get the best results? Does it make us better developers, worse developers, or make no difference?

Secondly, of course it’s true that anyone needs a minimum level of people skills in order to – frankly – not be an arsehole to work with. Definitely. That’s a fairly low bar, admittedly, but some people still don’t reach it.

But in a broader sense, I think that it’s bad advice. Because it’s another example of trying to do everything.

Developers are supposed to have strong technical skills. They’re supposed to know how to code, how to test, how to architect, how to analyse a domain, how to work in a team, how to write good reusable APIs, and much more. They’re supposed to keep up to date with changing technologies, new languages, and changing businesses that use the technologies. They’re supposed to know databases, frameworks and build tools, all of which change constantly. And most importantly, they need to make good judgement calls on which of many different options is most likely to be robust, flexible and sustainable in an unpredictable future. This is a high-skill profession. It’s actually quite easy to learn a programming language and get coding, but to write good-quality enterprise software is hard.

All these skills can be learned, and are learned. Partly on the job, often in the developer’s own time, and continually. And yes, people skills can be learned too. But there are only 24 hours in a day, only 365 days in a year. The more skills a developer has to learn, the less expert they can become.

This sounds like a bit of a straw man – after all, asking developers to learn people skills isn’t a huge ask – maybe it takes 10% of their learning time. So they’re a bit less up-to-date, a bit less expert in some technology or other – will it really make a difference to the outcome of the project? Isn’t the benefit from the improved communication worth it? It seems like the answer should be yes. But…

The catch is this. Once we say that we expect developers to have people skills to sell their technical arguments – which is totally reasonable – we then structure the organisation so that the best presented argument wins. It is very easy to then say (in fact, hard not to say) that the developer who explains their idea best is the best technologist. They have impact and influence. The onus is no longer on anyone else in the organisation to understand the technical issues: the best solution is the one that non-experts understand, and the best technologist is the one who presented it.

If you promote based on ability to communicate ideas, you turn your organisation into a people skills competition1. Then the people who make technical decisions won’t be the ones who spent 10% of their time to learn people skills. They’ll be the ones who spent 90% of their time to learn people skills. And that’s not enough time left to spend learning the technology.

It would be great to have team members who can do everything, who have excellent technical skills and excellent people skills. Just like it would be great to deliver every project idea and great to include every feature. Sadly, that’s not how the world works. We have to choose: to prioritise and specialise. And if we say that the best-communicated argument wins, we prioritise people skills over technical ability and we will get bad software.

Which, I would argue, is pretty much the case now.

1 Caveat: people managers should absolutely be promoted based on people skills. But they should not have the final say on technical issues unless they also have very strong technical skills.

If I Had Free Time

I’ve been thinking recently about what I’d do with the time if I had six months off work, no income problems, and could just do what I wanted. It’s kind of like the “if I won the lottery” game, but much more interesting.

I don’t know if this is likely to happen in the near future, but it’s nice to have a plan in case the chance ever comes up.

Every so often I hear someone say “If I wasn’t doing , I just know what I’d do with my time”. It’s usually a coded way of saying “I’m really busy and an achiever”, but it shows an astonishing lack of imagination. I can always find way more things than I have time to do, no matter what.

Here’s my current top 15, no particular order. I didn’t want to bring it down to 10, but it’s already way more than I could do even in six months.

  • Finish the DIY tasks around the house: nailing up wires, painting over scratches, putting up shelves, etc.
  • Sorting out my paperwork, filing, and getting my office tidied.
  • Clearing the garden, making space to play, and planting some veg.
  • Upskilling myself jobwise – catching up with the latest tech.
  • Get fitter, do exercise at least 6 days a week. (Have you read “Younger Next Year”? You really should).
  • Improve my cooking skills, learn to plan and menu and shop economically.
  • Drop my son off at school every day, and pick him up every day. Right now that’s too often done by someone else.
  • Adopt another cat. (I can’t find the time to be at home to settle a cat in right now). And if I were going to be at home permanently, get a dog. But I don’t see that happening unless I win the lottery.
  • Learn some new stuff, take some interesting-looking MOOCs.
  • Start writing that novel I’ve planned but never have time to write.
  • Learn to sing, maybe play an instrument. Take my son too.
  • Brush up my French, make sure I stay fluent. Continue learning Spanish and German and try to become fluent.
  • Meditate regularly. Do meditation with my son. Make it into a habit, rather than something I do for a few days then forget.
  • Take time to plan fun things to do with my son: weekend trips, days out, things to do or learn together. Think about what we’re already doing and what we’re missing out on.
  • Learn to draw. Make some stories for my son, and draw the pictures to go with them. Be able to add illustrations to my blog when it helps. It would help with data visualisation too.
  • Create a children’s history book for my son that tells him the bits that I think are important. Tell him about rights, and habeas corpus, and the Levellers, and trade unions, and emancipation. Same again for the moral stuff that I think is important.

I’m sure someone is going to say “These are too big, you’ll never get anything done unless you make small, manageable tasks and prioritise”. Yes, that’s mostly true. But it misses the point.

When you think big, you can think about what’s important to you. Think about what’s missing from your life. Think about what regrets pop up regularly, but you’ve assumed you can’t do anything about. Think about that dream you’ve always had, but that you think less about each year. These things are important, even if we can’t achieve them straight away.

UPDATED: One important thing I forgot in my list. Watching the entirety of Buffy (all seven seasons), as I haven’t had a boxset marathon since my son gave up daytime naps…

How To Be Smart With Your Time

I’ve just finished reading “How To Be Smart With Your Time” by Duncan Bannatyne. It’s not the sort of book I normally read, but was a station purchase while waiting for a train. Much to my surprise, I found it excellent, and I’m applying tips from the book in my life and seeing good results already.

The book gives very much the same principles as any book along these lines – prioritisation, focus, deadlines, efficiency – but gives very concrete, simple and practical ways to put the advice into action straight away. Without having to stop to plan, without having to change your whole style at once, you can do some of the exercises, take some small actions, and see benefits.

I’d recommend the book to anyone who’s trying to juggle lots of tasks, or who seems to be always busy yet never seems to get anything done, or to anyone who just wants a better work-life balance.