How I Learned To Code

I don’t regard coding for the web as a particularly unique or special skill.  The massive numbers of other people out there who can do it better, faster and cheaper attest to this.  What I really value about this skill however, is how it allows me to use my creativity – mash things up, build something that’s useful to me and generally just make my ideas come to life.  You know that idea you’ve had for a web site or app but you don’t know how to build it?  When it’s my idea I just build it.  After the recent earthquake in Japan, everybody (including me) was worried about the radiation from the reactors in Fukushima.  Watching the TV, scouring the net and watching facebook and twitter, there were so many figures being bandied about – microsieverts, millsieverts, CPM, grays – it was all too confusing.  To try and put things into perspective, I built a radiation units calculator which, although extremely basic, was an instant hit getting about 17,000 unique visitors in the day after I launched it.  With kind help from friends it quickly had Japanese and Chinese versions.  Even though it’s extremely basic and I haven’t made any improvements to it in 3 12 months, it’s still accessed about 60 times a day (mainly on the Japanese site).

Anyway, I digress.  On to my journey to becoming a web coder and why you should care.  If you’re already a web coder, maybe you can relate, but maybe your path was different.  If you aspire to write code, I don’t know, maybe this will be encouraging!

As with so many in my generation, it all started with my Dad bringing home a hefty piece of digital hardware in the early 80s.  The computer was the BBC Model B with an incredible 32KB of RAM.  To play games (there was non-game software too but I have no recollection of what they were!) you had to hook up pretty much any old cassette deck, make sure the cassette tape with your software was fully rewound, enter the run command, then hit play on the cassette deck.  5 minutes later, if the game hadn’t crashed while loading or the cassette player hadn’t started munching the tape, you were ready to go.  Games were expensive and I didn’t have a lot of funds, so instead I bought books from the bookshop that contained games written in BASIC and fantastic illustrations that were completely unrepresentative of the final product.  I would painstakingly enter the lines of code, then spend even longer trying to spot the one mistake that was stopping the entire game from working.  Most of them were crap, but it was so much fun making little alterations so that the games were mine.

After drifting away from programming as computers became more and more complex through the 80s and 90s, the opportunity was presented to me in the form of a summer internship in 1996 to build a web site for the Institute of Languages at the Norwegian School of Economics in Bergen.  Although I had zero experience, I convinced the director Magnar Brekke that I would buy a book on HTML and make him the site.  My first ever site was in about 5 languages and was a glorious showcase of large type and bevels.  I was amazed with how so much code could be copied from the web and how I could finish the site within the first two weeks of my internship and spend the remaining 5 weeks surfing the web!  Unfortunately, after my departure, the site was promptly replaced by someone who had a clue about what they were doing.

After this, I built sites for friends and experimented with a site profiling local bands complete with MP3 downloads which took about the same time to download on the 56K dial-up connection as getting in your car, stopping for a coffee, buying the track at a record shop and then driving home.  Only the record shop was more reliable because it didn’t rely on my mum not picking up the telephone half way through the download.

After a few more years and my move to Japan, I again got the chance to get into coding when I was given a job at a small Japanese IT company.  For what felt like the first month, I was just told to make as many web designs as I could – the weirder the better.  Gradually, I was allowed to work on projects using the Microsoft ASP coding language (basically server side VB script).  I really floundered and made just about every mistake that one could make – luckily I was allowed to make those mistakes and to learn from them.  Within a year, I had my first epiphany – Object Oriented Programming.  Once you start to make reusable objects and you realise the advantage, there is absolutely no going back – literally.  I just don’t understand how anyone can write linear, function based, spaghetti like code.

After a couple of years at the company, it was time to move on.  I taught English and started to do freelance work at the same time.  I also decided to throw the ASP out the window and shift to PHP.  Ironically, it was the huge paradigm shift presented by ASP.NET that actually pushed me to PHP.  The thinking was, if I need to change from what I know, I might as well change to something that isn’t proprietary and won’t require clients to make big layouts on software licenses.

Since then, my experience as a coder has been stepped – periods of learning new things interspersed with periods of consolidating skills.  First it was MVC followed by version control, then the CodeIgniter frame work and more recently JQuery, HTML5 and CSS 3.  Perhaps it’s just a function of growing older, but it seems like the gaps between the steps are getting shorter and shorter.

One thing I think has saved my sanity as a coder is not losing site of the joy of discovery, the fun and the inspiration of trying out something completely new.  When I’ve been at my most unsatisfied and least productive, it’s been when I’ve lost sight of this.  The way I’ve done this is just by consciously working on my own projects – some as part of my work, some (like the radiation calculator) outside.  It’s not practical or even a good idea to try every new and exciting thing on a client project – unless you are the client.

Going forward, I don’t imagine, nor do I want coding to be my ‘main’ job.  But I’ll only stop coding if I physically can’t – or maybe I’ll just take up a less anti-social pastime!