Post-Pre-Conceptions

 

imgres-1.jpg

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.

imgres.jpg

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.

19-lg-logo-parody.jpg

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.

url.jpg

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.

  1. 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.
  2. 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.
  3. 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.

url-3.jpg

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.

Caricature;_Faraday_giving_his_card_to_Father_Thames._Wellcome_M0012507-1.jpg

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.url-2.jpg

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.

 

 

Preconceptions

“Never assume. It makes an ASS out of U and Me”

– Anon

Screen Shot 2015-12-30 at 15.43.28.png

Most people will tell you that preconceptions, prejudices, assumptions and biases are totally not cool. I prefer to think of them as educated and imaginative guesswork and part of a system of trial and error.

Assumptions enable you to make quick ‘near enough’ decisions when lacking the time to collate the necessary information to make a fully informed decision.

When I decided that I’d learn to code at Makers Academy, I relied on assumption and preconceived notions (coupled with a hefty dose of idealism and imagination) of what it would be like to be a computer programmer. After all, I had never been a computer programmer, so how could my decision to spend all my savings and the next four months of my life learning to do something I’d never done before be anything other than an ‘uninformed’ decision?

Here’s a post-rationalised list of the assumptions and preconceived notions I had of coding that informed my uninformed decision.

What coding is:

Everywhere.

Pretty much everybody has come into contact with something that has been programmed.

Magic.

Nobody seems to know how computers work. That I can access any information in the palm of my hand, whilst remaining entirely ignorant as to how and why, is pure wizardry.

Difficult.

Get your head around this.

You tap a small silver box with a black ‘U’ on your iphone, then tap a box labelled ‘set pick up location’ hovering above a map with a blue dot signifying exactly where you are and tap where you want to go on that map, then, within minutes, a nice person arrives in their new smelling immaculate car at exactly the point where you are standing to drop you off at exactly the point where you tapped on the map, then departs without having to ask you for directions or even money.

Imagine understanding how that worked.

Then imagine being the person that made that work.

I can imagine that’s what being a genius feels like.

When coders say “anybody can code”, this reads to me like a well-intentioned humble-brag. It’s well intentioned because it keeps the dream alive, reminding us that it’s not impossible. But at the same time, if it were actually easy then saying “everyone can code” would literally go without saying. Nobody would say “everyone can code” if it really were that obviously true – it would be like saying “everyone can breathe.”

Therefore coding is difficult, challenging and thus rewarding.

Objective.

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.

One word: Dopamine.

Meritocratic.

In most other careers, success is based on being subjectively good at your job. Objective feedback is rare. Many succeed through navigating office politics seamlessly – which, don’t get me wrong, is a skill in it’s own right, but just not one I find as rewarding to develop. I can play politics, but it just feels a bit false.

Your computer doesn’t not like you if you don’t listen to the right music, or if you’re a smoker, or chew too loudly when you eat. It only likes you if you get the code right. Your boss will like you, first and foremost, if you get the code to work efficiently. Your boss may also like you if you laugh at their jokes, but, for some reason this feels less important for a programmer.

I feel that people accept that programmers might get along better with computers than real people – it seems to come with the job.  I only know two programmers, and this seems to be the main reason they like their jobs. They say there are some politics, but usually, when you’re one of the few with the pre-requisite knowledge to make things actually happen, people prize your knowledge over and above your personality.

I’ve sat in appraisals where my worth to the company has been based on pretty much everything other than my tangible achievements. Although they say “don’t take this personally”, given the lack of objective reasoning as to your contribution to a team, you can only ever take it personally.

In the rare occasion of your value to a company being more objectively assessed, it can feel like success is pretty much luck. Let’s face it, there is no exact science to knowing why people might buy one book over another, or why some people like some music and not others, or why some people believe renationalising the railways is a good idea and not others. You never really know why you’ve succeeded in doing your job ‘better’ because you don’t really know how much you, doing your job, has contributed to whatever metric of success you are being measured against.

You know if you’re getting better at programming because you can make more complicated things work, more efficiently, faster. And the computer will tell you. With no bias.

The better you get at programming, the more languages you can programme in, the more problems you solve, the more efficiently you solve them, then the more you’re worth and the more responsibility and money you’ll earn.

Who codes:

An insider club.

Coding feels like an insiders club. They have insider jokes (which I’ll dedicate a bit of my blog to, because they are just so brilliantly esoteric) and insider knowledge that bonds them together. They’ve connected across time-zones and continents, forming a tightly knit community with it’s own quirks and charms born from a common insatiable desire to solve problems.

Collaborators.

They use their own time and expertise to help others master coding, most of whom they’ve never met and will never meet, for free and for fun

They spend hours trawling through StackOverflow to answer other coders’ questions. I’ve never seen a troll on StackOverflow.

They make coding puzzles for other peoples’ enjoyment – www.codewars.com being my favourite.

They helpfully point out bugs, they collaborate on open source projects.

They make websites that they’ve clearly spent hours and hours working on to help people learn to code FOR FREE. https://rubymonk.com/  or https://www.codecademy.com/ or http://learnrubythehardway.org/

They defy the laws of behavioural and economic physics. They do all this work for free, to help other people, for free.

The humble.

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.

11825176_1603418429920793_1196420569297949286_n

There are a few reasons why only the humble can code.

  1. 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.
  2. 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.
  3. 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.

Often coders aren’t looking for fame or recognition. They just want the code to work – this is their reward.

The next generation.

I remember watching my Dad spend 45 minutes trying to send an email, muttering about how technology is meant to make things easier and angrily tapping away at his keyboard using just his index fingers.

In just a few years time, I will be like my Dad, unless I learn to code.

Coding is now being taught in schools.

There are pre-pubescent kids who have made millions from apps that they have programmed, all by themselves.

I refuse to be left behind.

Mostly men.

Women are chronically under-represented in coding. In fact, females in tech are considered such an oddity that the BBC felt compelled to make a documentary about young girls learning how to code. It was also the most patronising piece of guff I have ever watched.

I can’t see any reason why women can’t code or why this bizarre thought has even entered into discussion.

And neither can Makers Academy – which is why they give a nice discount to women taking the course. They want to make more female coders to dispel this awful myth that women can’t do it.

I’m the kind of person who will do something just because people think I can’t do it.

Bring it on.

Just Preconceptions…

At the end of my course at Makers Academy I’m going to come back to them and grade these preconceptions out of 10 for their varying levels of naivety, wishfulness and downright misguidedness.

Do let me know if I’ve got it all wrong in the comments below:

 

Inception

“Begin at the beginning,” the king said, very gravely, “and go on until you come to the end: Then stop.”

– Lewis Carroll, ‘Alice in Wonderland’

If only it were that simple.

Screen Shot 2015-12-30 at 13.50.45.png

What is a beginning?

I’m ‘beginning’ to learn to code, but I don’t really know when, where and how this began and consequently when, where and how to begin this blog.

Perhaps this blog is the beginning.

Perhaps not.

 

Does a beginning begin at the end of an end?

What came before has ended. I’ve quit my job, or my job quit me.

I was working in the soul destroying world of Advertising and innovation. It was a Dismaland inhabited by nervous Narcissists , manipulative Machiavellians and those who they have lured to the dark side under the false premise of creative freedom impossibly coupled with financial security.

I have not blogged on Advertising for over six months. That blog ended, so perhaps this blog is the beginning.

Perhaps not.

 

Can an end begin a beginning just by coming to an end?

Life is just one thing after another.

If you don’t begin something when something else ends you’re left with an impossible void.

Perhaps I’ll quit Advertising and do nothing.

Perhaps not.

Perhaps I’ll quit Advertising then become a florist, a teacher, an astronaut, a politician, a sommelier, a nomad, a fireman or an ice-cream taster.

All options of varying viability to fill that impossible void.

Perhaps not.

Perhaps an empty void is a viable way to fill the impossible void. After all, an empty void begins after the non-void bit ends.

Perhaps not.

(I had already experienced the impossibly empty void whilst working in advertising and found it unsatisfactory.)

 

Or does a beginning, by beginning, end an end?

Is it more a case of having to quit Advertising to become a florist, a teacher, an astronaut, a politician, a sommelier, a nomad, a fireman or an ice-cream taster?

After all, you couldn’t do both at once.

Or perhaps you could.

Perhaps not.

So a beginning, by beginning, doesn’t necessarily bring about an end.

Unless you want it to.

 

What makes you want to end something?

When you’re in the middle, the end is a known unknown. You know it exists, but you don’t really know what form it takes.

Why would you end something without knowing what comes next?

Why would you end something unless you felt you could begin something else that would be better than what you were doing before?

How do you know what you want to begin would be better than what you want to end doing?

You don’t know.

You imagine it might be better.

I wouldn’t have got into Advertising if Mad Men had been set in the present day and Advertising agencies weren’t so damn cool looking and well-branded compared to the corduroy clad, musty library laden microcosm of ivory tower academia at Cambridge.

Christ. I’m such a mug. Deceptively selling an aspirational lifestyle is the whole point of advertising.

 

Does the beginning of the end begin when you imagine what begins after the end ends?

I would still be in Advertising if it wasn’t for some sort of idea planted in my head.

Perhaps in my sleep.

Perhaps not.

It said “code”

I liked it.

I thought about it a bit more.

I liked it more.

I thought about it a lot more.

I liked it a lot more.

I thought about it all the time.

I got frustrated by how much I liked it.

I quit my job.

I liked it.

I applied to Makers Academy.

I liked it more.

I passed the interview.

I liked it a lot more.

I’m now writing this blog post.

So perhaps this is the beginning.

Perhaps not.