I have been working as a software engineer at Sharktank for 2 years. I write Ruby and JavaScript, Python and Go. I’m an Agilist, a pair-programmer, and a test-driven-developer!
I also didn’t buy a computer until I was in my late twenties. I still can’t tell a motherboard from a microprocessor, and I’ve never played Call Of Duty. Or Halo. Or any other computer games for that matter :)
Most of my colleagues studied computer science at university and have had their heads buried inside a computer since they were teenagers. My degree was in Politics, and I spent the first 7 years of my career working in a marketing department.
People are usually surprised when I tell them that I’m a computer programmer (I think they’re expecting me to say “accountant”, or “something to do with insurance”), and I perhaps don’t fit the stereotype, but having been in the industry for a few of years I can hardly imagine ever having considered anything else.
It’s certainly the thing I’m best at and was most suited for, and I often wonder how many other people there are who would love programming if they had the opportunity to find out.
Why didn’t I think of it before?
It was just never a consideration for me. I was not interested in computers when I was younger, and I dropped IT at school as soon as I could. I stand by that decision, if I had to do the kind of assignments we did in school today, I’d drop it all over again!
By the time you leave school the choices you’ve made have already funnelled you in a particular direction. I had no idea that a job in IT was ever an option for me. You need a degree to do that right?
Like many of my peers I didn’t have a good idea of what I wanted to do when I left university. It must be a strange thing to hear for someone who has been playing around with computers since a young age, but it’s not always easy to answer the question “what are you good at?”, or “what do you enjoy?”.
It seems obvious to say that you enjoy doing things that you have a natural aptitude for, but it’s also true that not everyone realises what they have a natural aptitude for until they try it!
I didn’t realise that I’d enjoy writing software until circumstances conspired to give me that opportunity.
Programming of the Excel kind
I used to be a bit of a whizz on Microsoft Excel. I worked in a marketing department for a web business, and my day job comprised compiling sales performance reports and exporting data from Google Analytics to analyse how customers were using our website.
I took an unnatural pleasure in compiling extraordinarily complicated spreadsheets, and I know I’m not alone in that regard! I have a number of friends who work in accounting who measure their success on their proficiency with a “spreado”, and with good reason. I’ve seen macros of impressive complexity written by people in finance departments.
Excel is basically a friendly interface over the top of the VBA (Visual Basic for Applications) programming language, but once you need to go beyond the capabilities of the basic worksheet, you get into recording macros to automate repetitive tasks.
Anyone who has stepped in a macro and changed any of the references has done some basic programming.
I was pretty good at that stuff, and at one stage even wrote a primitive booking system for use by the sales agents at the company consisting of a network of shared spreadsheets that stored data in a Access database, way before the company had any proper systems.
My sister even bought me an “I love spreadsheets” mug as a birthday present :)
I enjoyed being the go-to guy who knew most of the Excel commands by heart, and could pluck a function out of the air, and looking back I can see it was obvious that my strengths lay elsewhere, but at the time didn’t really occur to me that this was only the very tip of the iceberg.
If I could see the nested IF statements I used to write back in those days I would cry!
Starting out in web development
I kind of got into web development by accident. I didn’t set out to be a programmer, I just started doing things that interested me, and it grew from there.
As part of the Marketing team at our web business, we were generally responsible for what the website looked like, how people got to it and what they did when they were on it. The nature of the role meant that I worked pretty closely with the IT team.
I always felt pretty thick when it came to talking to them because they could tell me whatever they liked and I wouldn’t know any better. Even working in online marketing there are concepts that require a bit of technical knowledge that never really sink in unless you use them yourself.
I realised that my career was likely to be in online marketing, and I wanted to understand it all better, so I decided to learn how to write a website.
I went through the tutorials on W3Schools; they’re good, and easy to follow, but enthusiasm dies quickly without an actual problem to solve. Nothing compares to actually building something that you want to build.
I needed a real world challenge, and luckily one was on hand! My friends and I had started a football team, and we took it pretty seriously, so I decided to create a website for our team.
Inevitably I made every beginner’s mistake in the book - using fonts that were only installed on my computer, rendering a page of 2mb jpegs and scaling them down to 60x60px thumbnails, checking the site on a decent browser and assuming it would look the same in Internet Explorer (still IE6 at that point!) - but I managed to deploy a site to the web, got my friends to write stupid profiles about each other for the site, and by the time it was finished I’d caught the bug!
Sticking at it
It was still a number of years before I’d make the switch to being a full-time developer, and on numerous occasions I came close to jacking the whole thing in disillusionment at the sheer amount of information I’d have to learn to become really good at it.
I always managed to find little motivations to keep me going though, and more importantly focussing on the next small improvement I could make, rather than fretting about how much I still had to learn.
My motivation has been different at different times.
Firstly, as I’ve mentioned, I wanted to give myself a bit more real world knowledge to aid my day job. I had a bit of spare time on my hands, and considered pursuing a qualification, but (rightly with hindsight and IMHO) decided to get my hands dirty rather than adding another line to my CV.
Once I’d started telling a few people about what I was doing I felt a commitment to follow through with it and actually get something on the web. It’s enormously satisfying to see something that you’ve produced go up on the web and to be able to send around a link to your friends.
Next I wanted to make some money. I knew a bit about affiliate marketing, and had some experience with SEO, and thought I’d join an affiliate program and try and write a simple price comparison site. This required me to learn how to store my data in a database, and to render dynamically generated pages.
I used PHP on the server-side, though if I’m honest I didn’t really understand it then, and got by by finding little snippets of code online that I could copy and paste to get over my next hurdle. My site barely earned me a penny, but getting something working gave me the confidence to keep at it.
Then I started taking on jobs for other people. My mum wanted a website for the church that she belonged to, and a friend of mine wanted a site for the charity that he was just starting up. They wanted to be able to update the pages themselves without having to write any code, which gave me the opportunity to research content management systems.
I’d had a bit of experience using Wordpress, and could write some basic PHP, and while I wouldn’t put my name to either site these days, both ended up serving a couple of hundred visitors a month and were in existence for a few years.
Having played around with various technologies for a few years I got chatting to a developer at my company who recommended trying Ruby on Rails. This was my first taste of real programming and I started to learn the basics of application design.
This was where my interest in programming took off to the extent that I would spend most of my spare time studying different aspects of the Rails framework, and I started to consider switching to become a full time programmer.
Making the switch
I was lucky to the extent that I had the flexibility to switch jobs within my company, and I realised that not everyone would have had that opportunity. Had that option not been available to me, I would have started applying for junior jobs in the industry.
I knew that the knowledge I’d gained through my own personal study had got me at least on par with a recent computer science graduate. Whereas I didn’t have the qualifications to support an application, I felt that I could withstand a technical interview if given the chance, and that my self-starter attitude and obvious passion for the work would stand me in good stead.
Now that I’ve been working as a full-time developer for 2 years I know that there isn’t really a substitute for working day-in day-out alongside like-minded people, and I know I’ve learned more in these past 2 years than in all my years of experimenting in my spare time.
That being said, I would urge anyone who has the slightest inclination that they might be interested in computer programming to take matters into their own hands!
If I could give any advice…
Pick something you want to build and build it
Even the simplest of websites will present you with challenges that you didn’t anticipate, and will teach you things about the web that you can’t learn by reading a tutorial. You will at times be surprised how easy to can be, at other times frustrated at how the tiniest details can stand in your way, but ultimately satisfied at seeing something that you’ve created on the web. And above all, pick something that you care about, because that keeps you motivated when things aren’t working out.
Don’t let the stereotype put you off!
There’s undoubtedly a stereotype of an “IT geek” that must dissuade some people from pursuing a career in IT, and I’m sure I used to have a bit of prejudice too, but looking back I can see how silly that was. I’ve made some great friends, and met some great people, and above all I’ve barely met a single person who didn’t love their job.
You don’t need expensive software to get into it
Pretty much all of the applications we write are based on open source software that is freely available for anyone to download. You can get a seriously long way without spending a penny, and the only hardware you’ll need is a low spec’d laptop. A colleague of mine did all of his programming on a 11” netbook with less than a GB of RAM, because he liked to carry it around with him in his man bag!
Don’t give up when it seems hard.
Reading code can be like reading a new language. I’ve often had that sinking feeling when faced with what looks like a page of gibberish and I’ve got to make sense of it, but usually after going slowly and taking the time to look up the words or constructs that I don’t recognise, I realise it’s not as complicated as it first seemed.
Often when code is hard to read it is an indication that it has been poorly written. Good programmers however strive to make their code easy for others to read. Barely a code review here at Sharktank goes by without someone making a suggestion as to how to make code simpler to read.
There’s a lot to learn, but not much that’s beyond the comprehension of anyone who’s prepared to take the time to understand it.
There’s good reason that this phrase is quoted so often!
Remember that someone else will have run into the same problem before!
I often wonder how anyone managed to learn anything using textbooks alone. The web community is enormous, and the free resources out there are truly staggering. Particularly if you’re starting out someone will have written a tutorial for every conceivable thing that you’d want to do. In years of developing websites I can barely remember a time when I wasn’t able to find the answer to a question via a few targeted web searches.
Wrapping up
I never set out to become a computer programmer, but that’s what I’ve ended up as and I couldn’t be happier. If I could have my time again I’d have chosen different options in secondary school, and would have applied to do a different course in university, but I try not to dwell on it too much, because I know I enjoy my job now because I’m doing what I did as a hobby for many years.
I’d encourage anyone who’s even a little bit curious to give it a try, it could be the best decision you ever make!