gypsydave5

The blog of David Wickes, software developer

This is a draft — work in progress.

The three virtues of a (junior) developer

This post it based on a talk I gave back at Makers Academy a few months ago.

We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris.
—Larry Wall

You may have come across this quote before. It comes from the first edition of Programming Perl by Larry Wall, and gets bandied around regularly as a bit of a motto or a mantra.

It makes sense in context - my laziness inspires me to automate and write clear code, impatience makes me want to make things happen faster, and hubris is the gods-defying pride that makes me think I can do this all in the first place.

But I can’t help but think that these aren’t good virtues for a current software developer - they’re very insular and isolating. And they definitely aren’t appropriate for a junior who’s just starting out.

So I’ve tried to think about what my cardinal virtues of a good junior would be. And perhaps they’re also those of a good senior too.

Ignorance

I know nothing except the fact of my ignorance.
—Socrates

OK - maybe not the most obvious one. But if you’ve ever heard the phrase ‘turn a vice into a virtue’ before, then you’ll know where I’m coming from.

The great thing about ignorance is that you have so much of it as a junior. It’s a limitless resource. And we’re confronted with it every day we write code. There has not been a single day that I’ve been sitting in front of a computer that I’ve not felt dumb in some way.

So I suggest that we get used to that feeling, get really comfortable because, as far as I can tell, it never goes away. And that’s OK.

If there’s one thing I learned at Makers Academy, it was to be happy with my ignorance - to embrace it, and to turn it to my advantage. Every time you don’t know something, find out. Be dogged, enjoy the chase, and in the end you will know something new. As long as you have a way of turning base metal into gold, as long as you ‘know how to know’, then your infinite supply of ignorance is an infinite supply of knowledge in disguise.

Through the alchemy of learning we turn ignorance into knowledge.

Enthusiasm

When you start working as a junior you know practically nothing. I arrived halfway through the creation of a multi-web-app-microservice-architected-web-scraping and alerting project, written in Groovy and NodeJS and hooked together with RabbitMQ and MongoDB.

And of the above, the things I was most comfortable with were the Node and the Mongo. And I was [really uncomfortable][jsdragon] with those.

So, presented with that, what do you have to offer. Well, you’ve got a few handy mantras you can throw in to the mix now and then (“We should write a test”), and happily most programming languages have the same ideas and principles behind them (Groovy is enough like Ruby to wing it).

But those sorts of skills are not going to be in short supply whererver you write your code.

What will be in short supply is enthusiasm for coding. The other developers you are working will have been doing this for years, if not decades. They may be jaded an cynical, they may be enthusiastic, but there is no way that they can be anywhere near as enthusiastic as you are right now. You’re living the dream, right? You’re writing real life computer code for a living!

So hone in on and harness that emotion - see if you can increase it. Just being amazingly pleased and excited to be working on whatever you’re working on, all the way up to 11, will inspire your pair to work more. They’ll want to explain more, want to work with you more, become more enthusiastic themselves because of your enthusiasm.

If you aren’t enthusiastic about coding at this stage of your career, when will you be?

Bravery

When you’re going through hell, keep going
—Churchill

You must be brave. If you’re not brave you will find it near impossible to do what I’ve already outlined above - because learning to code and being a junior developer is really, really hard. This is coming from someone who has deliberately cultivated a persona of effortless skill for most of his life. Do the same if you wish, but don’t kid yourself that beneath that serene, swan-like progress, there are a pair of legs kicking out furiously just to stay still.

You must be brave in order to cope with your ignorance, to face it and accept it every day. To know that you are going to be defeated and humiliated by your computer and yet come back for more. You must be brave to do that and to still remain enthusiastic.

You must be brave because everything is and will always be frightening. Everything in coding comes with such big words that everyone else seems to understand, with a new library coming along every two minutes and a host of computer science concepts you’ve never heard of getting bandied about by your colleagues. Coding has its own culture and cant (in the sense of a secret language) that you’ll be desperate to get inside of, if only so that you can get the jokes on xkcd. And it’s scary.

You must be brave because one of the scariest things to say in the middle of a team conversation about how you’re going to create a message queue is “Sorry, I don’t know what a message queue is”. And you need to say it, and you need to keep asking what seem like stupid questions of your colleagues, or you will be wasting everyone’s time - especially yours.

Victor Hugo has it that “curiosity is one of the forms of feminine bravery”,[^1] and this is the also the sense of bravery I’m driving at - of daring to know no matter the danger to your self-esteem. You will feel better and be better for it.

You must be brave enough to feel stupid all the time, and to still be curious.

Conclusion

[^1]Ninety Three, Part 1, Book 1, Chapter 1

[jsdragon]: {% post_url 2014-09-28-the_JS_dragon.md %}