Post-Pre-Conceptions

Within two weeks of graduating from Makers Academy, student lands a job as a software developer.
The student in question, despite having little to no experience at using Microsoft’s .NET framework (which she was surprised to hear has nothing to do with fishing) and C# (of which she remains unconvinced of the existence of an auxiliary non-musical definition of) will be mastering these at her new role in Software Development – despite the Makers Academy curriculum focusing on Web Development.
To be fair, that’s hardly new news. Makers Academy get their students jobs. Something around 85% of them last time I looked.

Little known or read blog about coding will continue. It will continue to have nothing to do with syntax, coding hacks or programming technologies and frameworks. It will continue have everything to do with the idiosyncratic and illogical side of coding.
You have been listening to the news at whatever time you’ve been listening to the news.
After the break, Illogicode.
*Illogicode’s jingle*
I realise it has been about a month and a bit since I posted something to the interwebs. Actually, thats not true, I’ve been posting git commits and making whole websites.
Here’s the final project that emerged from our team/the proof that I can now make websites: http://local-host.herokuapp.com/
So just forgive me for now, and I promise to get back on with blogging. Seriously, I don’t make promises that I can’t keep.
In the spirit of keeping promises…
In my first post I promised to go back and review all my naive preconceptions about coding that ultimately made me cough up for the Makers Academy course.
Bizarrely, most of those preconceptions still hold true. That’s not to say that they have any value.
I managed to have concrete hunches about things that quite literally don’t matter. Not even one iota. Like standing on speakers corner claiming that you have prophesied the coming of sandwiches for lunch today. Who cares?
There are far far far more important things that I was totally unaware would be much much much better reasons for me to sign up to a coding bootcamp than ‘tech is everywhere’.
Puuur-le-ase.
Thats the kind of insight Advertisers get excited about basing an entire campaign around. Ie. Totally meaningless.

But there are two places where I wasn’t vague enough to now claim that my preconceptions hold true. These:
Coding is Objective:
What I said:
Whilst few know precisely how their computers, iphones or PS4’s work, even fewer care – until the moment they cease to work. The programme either does what it’s meant to do, or it doesn’t. It either works or it doesn’t. The Uber driver either arrives at the right place, or he doesn’t.
Feedback is vital in ascertaining whether you have been successful at something. If you’re a performer, feedback comes in the form of applause. As a programmer, your code works or it doesn’t. And you know straight away.
What I should have said:
Coders are obsessed with ‘Quality’ and ‘Craftsmanship’. If I asked you to tell me what these mean, you might struggle to pin it down. You could probably point at something you deem to have ‘quality’, or to be ‘well crafted’, but you might not be able to tell me why.
To be odiously pretentious (yes the pretension of using the word ‘odiously’ was pretentiously intensional) the philosopher Immanuel Kant grappled with this very issue in his 1790 hit ‘The Critique of Judgement’. He couldn’t understand why everyone seemed to recognise the same things as having having an objective ‘quality’ or ‘beauty’, yet the way people came to that same unanimous conclusion was entirely subjective.

All schools of thought follow best practices and aim for quality. They just have different ideas sometimes over how to interpret and prioritise different best practices.
Everyone agrees ‘readable code’ is a good thing, but they all differ in what code they consider to be ‘readable’ and why. After all, not everybody likes the same authors.
Some people think you should type Array.new rather than [].
Everybody aims for SOLID principals yet people may differ when faced with having to make a compromise between two principals in which they would prioritise.
Some people hate testing private methods. Some people like it.
Coding is subjectively objective. There have been a few coders who I have very much respected for owning up to this fact. Some don’t. Which brings me on to my next piece of hindsight.
Humble People Code:
What I said:
Despite being an elite group of super-humans that not only understand the mysterious world of technology but actually built it, they never see themselves this way.
They are the unsung heroes behind some of man’s greatest achievements. You probably have no idea who Margaret Hamilton is – you definitely know who Neil Armstrong is. Despite being rockstars, they’re usually only ‘famous’ amongst other coders.
There are a few reasons why only the humble can code.
- The more you know, the more you realise how little you know. It would be near impossible to know everything about coding, to learn every language. The more you know, the more you realise that there is much, much, much more to know. You never can feel like a know it all. You have to be happy about dealing with uncertainty and not knowing.
- Computers tell you ‘no’ all the time. There are no marks for ‘effort’, or ‘nearly there’ – you get nasty error messages in angry red type if you’ve screwed up. You have a man-made object telling you that you’re doing it wrong every few minutes, and you can’t dispute that it is ultimately your fault.
- You stand on the shoulders of giants every day. You didn’t make the Ruby coding language, you aren’t Alan Turing. You are NOTHING in comparison.
What I should have said:
Coders are _?__?__?__?__?_.
In retrospect, the word ‘humble’ wasn’t the best choice to describe coders. I’m not saying that they are ‘arrogant’, that would also be a poor adjective to choose. I might have to settle with the word ‘snobbish’, but I’m not really comfortable with that either. It’s much more nuanced than that and definitely less negative.
To be honest, the word I’m looking for probably doesn’t exist, so I’ll spend the next 200 words or so trying to pin this elusive adjective down.
TL;DR – I don’t find the right word, so you’ll have to read all the words.
It is arrogance because coders have the courage of their conviction. They can be pigheaded when they know they are right. At the same time, it isn’t arrogance, because they kinda want to be proven wrong. Being proven wrong is how you learn something new, otherwise, all you’ve done is reinforce/broadcast what you already know. They also know deep down that nobody can be an expert in a framework that only emerged 2 years ago.

In a way, it is a sort of snobbish quality, and intellectual snobbishness at that. Calling things ‘Code Smells’ or ‘design smells’ sounds like a put down. Being told your code ‘smells’ can sometimes feel like being told you, yourself, need a bath or some deodorant. It is actually down-right rude to tell anyone that they, or anything attached to them, smells. I would happily campaign for this ridiculous phrase to be banished in favour of something a bit less bizarre and reminiscent of 19th century cartoons where ‘paupers’ were depicted as emanating a certain stench that poshos would wrinkle up their noses at in disgust.

But it’s not snobbery because is not at all meant in a ‘I’m better than you’ kinda of way.
Because coders have a snobbish attitude to themselves.
Their own code rarely matches up to the high standards they set for themselves and for others.
It’s more like the good kind of pride, as in a pride in doing things well and not the Jeremy Hunt type pride that makes you do things pigheadedly badly because you’re scared of losing face. The line between the two, in practice, however, is much more subjectively objective.
For example, you may be utterly convinced that Array.new is a better way of declaring the existence of a new array than []. Your pair partner believes the converse. You may debate this for some time each thinking that the other is being pigheaded. Neither are being pigheaded, both are just taking pride in doing the right thing. No matter how small and navel-gazey the detail, it all matters.


Ok, they don’t resort to cryptic metaphors, but they do make you struggle.



































































