Saturday 5 November 2011

My Coding Journey (so far)

I was inspired to write this post after I read "A Coder's Journey" by Matt Ward on SpyreStudios. Reading the tale of how he got into, and continued to develop in the world of coding brought back some familiar memories to me of my first experiences and journey so far.

Note - I use the term coding in this post to mean in some cases programming but also HTML/CSS, for those who might want to be pedantic about it ;)

How it all began

Hello World - the place everyone starts

I have no sisters, but 2 brothers, one of whom has always been rather a "computer nerd" which I hope he won't mind me saying ;) So growing up I had my first experiences of videogames on the Commodore 64, Spectrum and maybe even older computers, followed by the Amiga and the Megadrive a bit later in life. Of course this pretty much explains my fondness for videogames these days, but what about coding? I guess my first memory of anything programming related was with the Commodore 64 and BASIC. I must have been around the age of 7 at the time, and I think the limit of what I personally did was write a print "Hello World" program with my brother's instructions, but I remember him having a lot of those books/magazines for the commodore about making your own games and writing your own programs, all filled with endless lines of code. It seemed to me to look more like an exercise in patience, copying all that out and not making mistakes! However, something struck me as fascinating and exciting even back then - that all these words when put into a computer, could make something work and happen! It seemed pretty much like magic.

With my tech-loving brothers, it was inevitable that I got my own computer when I was around 10 years old. The main use of it then was probably spent playing Catz and Dogz, drawing in MSPaint, looking at the homepage of Dawson's Creek and downloading pictures of Joshua Jackson. Always being quite a creative person, I moved onto Paintshop Pro and played around learning the program, making pictures with lens flare no doubt ;) I started buying internet and computer magazines occasionally, and one day I got one that came with a little free book "How to make your own website".

There were pages on using FrontPageExpress, downloading animated gifs, and giving your site a lovely tiled psychedelic background *shudder* ;) But Frontpage-Schmontpage, the thing that caught my eye much more was but the second half of the book - "How to write HTML". All the software you needed? Notepad, the text editor that comes with Windows. On one side of the book was a picture of this simple, white text editor, with about 5 lines of black text, and on the other side - a picture of a working webpage! This brought back memories to me of the magic of the Commodore 64 programs, and the fact that you could make some plain and simple words into a living breathing webpage was again, fascinating to me and I wanted to try it myself.

This makes a webpage? It must be magic!

And so, I learnt HTML and built my first webpages. Of course some of the very first ones had marquees, frames, and javascript rollover buttons, all the kinds of things we web designers know better of these days ;) And it would be a fair while until I knew anything about different browsers, different resolutions, or what the hell CSS was. But I was getting to know HTML well, and it helped me get where I am today. And the thing I liked the most? I made this with fricking NOTEPAD. Imagine taking a pen and paper, writing some words and seeing them transformed into an object. That was the power of HTML in my opinion.

After school I wasn't sure what I wanted to be, profession-wise. Lots of people had decided and had paths planned out, but all I really knew was "I like computers", and "I definately want to work with computers". I was pretty confident that as soon as I started trying some stuff, I would figure it out. And of course, I already enjoyed making websites for fun, so maybe I could expand on that. So, at college I took an advanced GNVQ (equivalent of 2 A-Levels) in Information Communication Technology, which covered various aspects of computing and I thought would help me figure out which bits I liked best. I took English Literature on the side because I'd always quite liked language too, and I think that perhaps having a fondness for the english language does have a connection to the enjoyment of writing code. I won't lie, college taught me next to nothing about web design that I hadn't already taught myself, and I seem to remember assisting my classmates with HTML in the lessons, heh. For my college web project I chose to create a site about Final Fantasy, the videogame series I was pretty obsessed with at the time. As always, I created it in Notepad, and despite the frames and fixed 800x600 background image, I blitzed my web design unit with top marks (*insert a bit of pride here which is okay because I don't do it too often*).

It's not all about the web, y'know

Visual Basic

Apart from web design at college, I did have one Programming unit in my first year, on Mondays. For this reason, I absolutely *loved* Mondays, Programming was by far my favourite lesson. We learnt to use Visual Basic to make applications such as one where you could customise your own pizza, by choosing the type and number of toppings and probably adding them to some kind of list. I loved the combination of designing a program, making it look really pretty (and some people in my group designed some really ugly programs, lol), and then figuring out how to write code and make it do things. I whizzed through all the tasks set by the tutor, then somehow managed to get a copy of Visual Basic at home and made some more little programs, like a Radiohead song chooser that advised you which song to listen to depending on how you were feeling. XD Stuff that seems straight-forward to me now but was my first experience of things like conditional logic.

I think the only other code related thing I did at college was some command prompt stuff with ms-dos. This was pretty awesome too, it was a shame my teacher for that lesson had bad breath because I think I would have better memories of those lessons otherwise. XD All in all though, I loved the programming bits I'd done, but I was still really keen on the visual side of things. I think at some point at college I thought "I want to be a Programmer". However, I ended up thinking that I wasn't really good enough at Maths to follow on with something like Computer Science. I didn't do Maths at A-Level and I don't think I would have enjoyed it if I did - it was pretty much my least favourite lesson at school.

So, instead I embarked on a Higher National Diploma in Multimedia. It had Web and Interaction design units so I figured I'd like to do a bit more of this. To be honest, I enjoyed Uni a lot less than I had enjoyed college. There were some units I didn't like at all, like 3D modelling and making films. That side of stuff just really didn't appeal to me. There was the Web unit I mentioned, but I didn't gain much new knowledge there. I guess the main reason for that was my first Web work experience, that took place sometime during my college course and followed on as a part-time thing while I attended uni.

Web design in the wild

Where the Wild Things Are

Getting work experience at a web design company was awesome, and to this day I'll say that I learnt so much more about what you need to do to make websites in the real world, by doing it, at a real company, than by doing a uni course. Maybe it's just that sort of subject I guess.

Anyway, the web design company I worked at was fairly small, making sites for local businesses. It was there I learnt Dreamweaver and the method of "slicing" PSDs to put into table-based layouts. I had to pretty begrudgingly give up my trusty Notepad at the time, but they assured me it was quicker and easier to use Dreamweaver in "A Real Life Job" ;) At least Dreamweaver had the code view, and to this day, if I'm working on HTML for emails for example, I find the visual view can be useful alongside. I also learnt about CSS for the first time, and I think Dreamweaver helped me start using that, with the properties pane. It would still be a long time till I wrote CSS by hand - to me then it looked way more complex than HTML because of the sheer amount of properties and things you could do with it!

It was a while before I was really allowed to do much web design or coding on my work experience, I mainly helped to maintain and update sites. But I got my first experience of what it was like to make websites for clients, even just from listening and watching the others. I stayed on to work there part time and gradually did start designing layouts myself for some websites. Again, they leave a lot to be desired these days, but my web design started to get a cleaner and more corporate style, perhaps becoming more focused to the particular client or subject.

Back to uni, and as I said, the rest of the course didn't grab me much, nothing was really.. code-related enough I suppose. Animation, film and photography didn't really appeal - the only things I really wanted to make pretty were websites. I was lucky enough to have one tutor who had his own web and multimedia company and when uni ended, he liked my web work and gave me a chance to work there. I ended up staying and working there for 2 years. I ended up doing a massive variety of stuff there, because it was such a small company. I'd be on the phone to clients, drawing up quotes for websites, designing websites, and eventually building them. Doing HTML again and developing my CSS skills was awesome, and I loved it. I think it actually did a lot of good for me, being thrown into this sort of high-pressured environment and dealing directly with people who wanted websites. It's not coding as such but I think a massive part of being a professional designer is a good relationship with people and being able to work together with them to create solutions that they will be happy with.

Beyond HTML

Image by jdhancock

Code-wise, the job at my tutor's company had some great opportunities for me too. One of the guys there, who I also went to uni with, was a natural web developer, who worked in ASP at the time. One weekend a few of us just came to the office and with his help, learnt ASP and MySQL. This was even better! HTML made my webpages, CSS gave me visual control, and these languages would allow me to do even more. And the If statements and loops I'd learnt in my Visual Basic lessons, came back in ASP form. I started using ASP for all my sites after that, and I guess the highest points for me were building some simple backend Content Management Systems for people to update their websites. Towards the end of this job, the developer who had taught me ASP was learning PHP and so I started to learn this a little too, I think I only ended up making one or two sites with it in the end. I loved the things it was possible to do with these languages though, using include files and connecting to databases.

A long-distance relationship

Image by valordictus

I completely loved the stuff I was learning at my first Web Design job, but being a small company, the demands of managing and having to do admin type jobs to help out was getting me down, and I wasn't able to spend enough time actually working. As well as enjoying the coding I still felt like I needed to be creative and I wanted more time to be able to spend on this. I eventually ended up moving to a new job, which is the place I work now, as a Graphic Designer.

I guess at the time, I wanted to spend more time on the graphic design side of things. There is something fun and almost not work-like about being paid to make pretty things in Photoshop all day. ;) I also felt it was something new to try out - this job required print design as well as design bits for the website, so I ended up working with Quark and InDesign on product catalogues, leaflets, marketing collateral etc. My job was really varied, which was fun, I was working on graphic design across touchpoints of just one company, so anything visual the request would come to me. I enjoyed learning more about print design and trying to improve my visual design skills in general.

When I took the Graphic Designer job, I remember saying that "I'd still like to do some code sometimes, please" but with the way the company was set up, it was hard to do that. Teams were quite divided as I guess is the norm is slightly larger companies, technical work had to be done in the technical team and only if it was your job role. I had so much to do being the only graphic designer anyway that I guess I got immersed in that world.

The only code bits I really focused on over a few years doing graphic design, were HTML emails. These were a challenge in themselves, due to the funny quirks of different email rendering clients, and the fact that you actually had (well, still have) to do things quite old school, with tables. I went on a course to learn more about best practice for email and I enjoyed trying to design and build emails in the best way so that they wouldn't break and look ugly ;)

I just want you back for good

Image by fungleo

It was a few years later, and I was still designing but I felt like I'd pretty much developed myself and my processes as much I could in that role, and I guess I started to get a bit bored. I was designing some bits and pieces for our company website, but again with the company setup it was hard to really have a part in the website. We had front end developers, but the setup was very much "do a design, pass it on to be built", which I think is common in businesses but flawed, especially if the designer and developer don't have discussions before or during the development. My designs weren't always built as I intended (bear in mind that I understood the constraints pretty well), and I wanted to be in control of that again.

I occasionally had chances to do a bit of CSS here and there, and everytime I did, I loved it. When I had some kind of CSS problem to solve, I felt focused, motivated, and happy. I wanted to get my hands dirty again and start crafting things rather than just painting them. I wanted to work my brain harder and give it some problems to solve. I wanted to get back to the code. I hadn't done anything but HTML emails in years though! I was nervous that it would be difficult to get back into.

But, maybe I was lucky. A Front End Developer position came up at my company, and I thought "okay, what do I need to do, if I want to get back to that?". I read the job description and realised I already had a lot of the underlying skills from my years of HTML and CSS experience. I'd never used Javascript much besides copying and pasting some scripts but I knew I could learn if I tried. The idea of being able to "write some magic words" again stirred up a passion and motivation in me that I hadn't felt for quite a while. I got online, read up on HTML5 and CSS3 and went for it.

I was incredibly happy to find out that I got the role, and in the last six months or so I've learnt so much, from both doing new things at work and really immersing myself in my spare time - reading up, trying things out, learning, learning, learning. I guess I used to try and do this with design, but Photoshop tutorials and the like never grabbed me as much. Now, it's *fun* to learn again because - something that I may have forgotten in recent years - I love coding. :)

I brushed up on my Javascript, went on a Jquery course and I've now used Jquery in projects at work and it's getting much more familiar to me by the day. I work with the most amazing team of Python and Django developers (all incredibly lovely people too), and I've started learning how to use Django for templating (which I'm rather in love with already), and setting up simple apps with it. I hope to make this blog with it soon! I'm trying to do more with the Command Prompt again, and I'm learning about Git. My current job still involves design, but mostly user interface design and I've realised this is my favourite sort, because it perfectly combines the love I have for making something look nice *and* work well for a user. When I design or prototype I generally get to actually build that stuff, which I think saves time, makes sense for web design, and is a whole lot more fun than just designing in Photoshop :) Oh and I'm happy these days to still be able to use a text editor, but I've learnt that some have a few more helpful features to speed up coding than Notepad. ;) (Sublime Text is my current editor, and I love CSSEdit for CSS).

I'd like to get to know Python better. (image by mtsofan )

And whilst Python and Django seem a world away, in terms of being more complicated than what I did with ASP in the past, I still like the idea of really being able to do more with them in the future. I guess for now I'm trying to rein myself in a bit and really get better at JQuery, HTML5 and CSS3 so I can be the best FE developer I can, rather than becoming "ok" at too many things too quickly. But, I do have aspirations to do even more back-end stuff in the future, so.. who knows? :D

A coder's journey is a long one (for me at least). Whilst I know stuff, I have *so* much more to learn, but it's never a chore to me - the amount of fun I have everyday whilst I'm learning things, show me that this is what I'm meant to be doing.

So, Code, I'm glad we were reunited, and I'll try not to leave you behind again. ;)

3 comments: