jon black

"I am in a charming state of confusion"

Perfection and procrastination

The amount of pressure that software engineers put on themselves is monstrous. Our view of world as a finite, discernible system causes us to aim for nothing less than perfection. With such high expectations, it's no wonder that we procrastinate, struggling to find a place to start. Thankfully, according to The Book of Life, this is a very honourable problem:

People who don’t know where to start are often perfectionists. It’s an honourable problem: you’re doing nothing not because you’re lazy but because you’re very ambitious. Perfectionism is one of the causes of procrastination – because it makes us so worried about getting things wrong.

Yet in spite of this honour, and when faced with the daunting task of creating perfection, we lay down our arms and reach for the white flag. We then compose a list of our inadequacies and view our perceived failure, and


Pick a language, any language

When you get started with programming one of the first obstacles is picking a language. A mistake beginners often make is asking experienced developers where they should start:

Search which language

The truth is it doesn't matter.

The first programming language I was taught was Pascal. This was long after my childhood experiments with ST BASIC. The year was 1998 and I was 17 years old. In case you're not familiar with pascal, here's its "hello, world":

program HelloWorld;  
begin  
  WriteLn('Hello World')
end.  

I've not used this language since. If you were to ask me to write a program using this language now, I'd need a book. In fact, I had to search for the example above.

That doesn't mean it was a waste of time. Through Pascal I learned basic programming concepts such as variable assignment, loops and if statements; it even introduced me to object oriented programming.

I had a


Underpaid and my own fault

Twitter is in song about the #talkpay movement initiated by Lauren Voswinkel where people reveal how much they're being paid; the intention, to expose pay inequalities.

I added my thoughts on the subject:

I've never negotiated a salary because it feels rude to ask for more money. I feel underpaid and undervalued. My own fault?

A couple of replies told me it is, and that made me wonder: why is asking for a raise a requirement to getting one? What happened to just earning it?

Negotiating for a salary makes me feel uncomfortable and tense. Sort of like this:

I was raised with the mentality that you don't ask for money, it's given to you when you earn it. I got pocket money as a child, a non-negotiable amount, and it increased each birthday. What I got when I was ten was exactly what my sisters and brother got when


The first bug I created

I was ten years old and fascinated by computers. I had no idea how these magical electronic devices worked, but I loved them.

When I was growing up we had an Atari 1040STFM. Like most children, all I cared about was games. Back in 1991 The Internet hadn't take off, and social networks were unheard of. Games were so vital to my existence, I wanted to make them. That's when my Dad introduced me to programming through the book ST BASIC Sourcebook and Tutorial:

This book has a section called The Guessing Game which had the source code listed for, you guessed it, a guess-the-number game:

I wrote out the code and got it working. It was an amazing feeling. Then I started to mess with it. Big time.

I found the RND function and used it to generate a random number up to a limit given by the


Give developers autonomy

I've always been a self-motivator. Extrinsic rewards such as increased pay or improved benefits, whilst attractive, have always felt like a compromise. At work motivation can be a challenge, and it wasn't until I watched "The Puzzle of Motivation", a TED talk by Dan Pink, that I realised what most jobs have failed to offer: autonomy.

Most software developers I know are a strange breed: we'll spend hours of our spare time doing for free the same thing we get paid to do at the office. We are so driven by the technology we work with, we'll make a conscious effort to learn and master our skills, even giving away the fruits of our labour.

When the software development process is driven by intrinsic factors like cost and deadlines, creative thinking and motivation stagnate. You may care deeply about a problem and have great ideas for solving them, but you're