but trust me on the sunscreen

The long-term benefits of sunscreen have been proved by scientists, whereas the rest of my advice has no basis more reliable than my own meandering experience. 

Recently a young colleague of mine had graduated university and wanted to know how to get into a career in web development. My reply to him turned out the be much larger than anticipated so I thought I’d post it here so that my friends in similar roles could add their own advice.

I’d like to reaffirm the caveat that I posted in the message, this is all my own (bias) opinion, so please don’t take offence. All opinions are valid and welcome. 

Give this a read, hopefully it should be some food for thought about what avenue you want to pursue. Please don’t read all this as fact, obviously this all comes from my skewed and bias opinion from my own and others experiences. Instead just think of it as observation, your own experiences may vary.

Lately in Web Development there’s been a growing split between front-end development and back-end development. Lots of skills are transferable between the two, but it’d be a good idea to position yourself initially as one or the other so that you have an idea of what skills to concentrate on.

Front-End Developer

Front-End developers are the current sweethearts of the web; think of these guys working at cool web agencies drinking tons of Red Bull and playing table football over a pizza lunch. These guys work in HTML 5 including all the APIS (like geolocation and local storage), CSS3 (including CSS Animation), and loads of whatever the latest Javascript frameworks might be (which is where they show their real abilities as a programmer).

They have half a foot in the designer camp so will have good skills with photoshop, maybe some wireframing software for doing quick mockups, and a bit of animation so Flash or Edge Animate (http://html.adobe.com/edge/animate/showcase.html).

They also have half a foot in mobile so lots of responsive design (again there’s loads of frameworks for this but twitter bootstrap always goes down well), lots of html 5 with mobile in mind, and maybe some phonegap to go from html to “real” apps.

Much of what they will then rely on are APIs, interfaces they can use javascript (with whatever framework – but specifically look at Angular) to push and pull information, kind of like the teller at the bank who you can pass information back and forth with but who doesn’t get to set the rules. Overall then it’s the front-end devs job to make this transactional information act simple and sexy for the end user, so like a sexy bank teller.

These guys you’ll find working at some cool organisation or startup with lots of skype meetings.

Think “Apple”.

Back-End Developer

Back-End developers are the Dungeon Masters of the development world. Rather than sites they are more commonly focussed on systems, on functionality, on rules and process. Not that this is as drab as it sounds, there’s always good challenges to be found in this kind of work, big projects to get your teeth into and take ownership of, and more often a full team working towards continuous improvement on a larger scale. Back-End developers write the APIs that power front-end dev, they write the eCommerce systems, and the intranets, and the payment gateways.

The skills and tools used by back-end developers are very transferable, meaning that they are not just web-centric, they can usually turn their hand towards application development and native mobile development. Outside of development they will usually have other skills such as a good understanding of process and systems that would allow them to act as systems analysts; working with clients to plan system workflow and write technical specifications that can be handed to other programmers as their brief.

These are the programmers that you’ll usually find working in big organisations like banks, usually with a team working on a project, with meetings and reports.

Think “Microsoft”

Full Stack “Web” Developers

I’ve heard it said that a good programmer can turn their hand to whatever language they’re required to write in, and mostly I’d agree with this. So many things are transferable such as design patterns and methodology that if you take some time to learn the peculiarities of a specific system then you’ll soon be able to produce working code in it (albeit maybe not clean code – but working now usually beats perfect later).

A web developer will usually have started with a web background in a project that requires back-end functionality so will have taken on both roles. Because they remain capable in both skill sets you can easily hand stuff off knowing that you’ll get  a working result as they won’t then have to rely on another developer to complete their tasks first.

Depending on an individual’s skill sets their ability and comfort level they will exist on a scale between front and back, with some able to master both sides. These guys are gold.

The “Full Stack” then also compliments their skills with them knowing how to implement and operate a server for both web (such as apache or iis) and its database (SQL). With these skills and some web templates they could be a one man agency.

You’ll usually find these guys working at design and web marketing agencies where they can work on multiple projects as requirements dictate.

Think “Google”

So which to aim for ?

As an agency we love to get “web developers”  as they can cover a whole range of work, jump between tasks well, and are usually very flexible. That said, the big in-house project we have I’d love to get a front-end and a back-end guy so I could clearly define duties for both. There’s clearly room in the industry for all kinds of developer.

What to learn

Recruitment in web development is all about buzzwords, look at any job advert at the minute and you’ll see it full of jargon. HTML5 APIs, CSS3, MVC, Git, Scrumm, Agile, Javascript, jQuery, Angular, Knockout, DOM, .Net, C#, Go, Ruby, RoR, Python. Sometimes they ask for so many things it’s hard to imagine any one person could know it all, more likely that they would “know” some and “be familiar” with others.

If you’re going for web (either as front-end or full-stack) then really want these (below), anything else is a bonus.
HTML 5, CSS 2 & 3, JavaScript (including jQuery), and an MVC type framework (Knockout JS moving up to Angular)

If you want something back-end then there’s a few “big player” languages that you’ll want to start with.
C# (.net) is our language of choice, Ruby (on Rails) was an industry sweetheart for a while but has fallen a bit out of favour, and Python is a strong contender. Java is always hanging around, and loads of people use PHP but it’s seen as being less “professional”.

Whichever you go for it’d be great if you could talk about Code Management (such as Git, GitHub, and BitBucket), and Unit Testing (writing tests for your code such as Jasmine or xUnit)

What next ?

Unfortunately, this is the hardest question. More university at this stage probably won’t help as what you’ve already got shows you have the capacity – now people will want to see the capability.

The best way to learn these things is always by doing, so blast through codeacademy to get the basics then come up with an idea, get enthusiastic about it, and make it happen ! We had a work experience kid recently who was able to gain some great knowledge by framing a project  as something he was enthusiastic about, using an external API to display his xbox live gamerscore against that of his friends. Start with something that’s already built and write something that accesses it, use twitter as your “data” and find a fancy way or a silly way to display it.

If you’re having trouble finding a project try offering your services to someone, if you’ve got a sibling in a local cubs troops or amateur football team see if you can do something for them – set up a flickr and have a site that displays these in a carousel.

Once you demonstrate that you can do these things this is your foot in the door.

Get applying for jobs and even if you’ve got to take something in a different arena in the meantime then don’t stop applying. Get in with an agency or organisation and you’ll learn even more by doing. With your age and experience companies will know that you don’t know everything you’ll need to yet, but if you can demonstrate that potential then you’re in a good position to beat out others and get on that junior rung.

Once you’re in it’ll be hard work, there will be so much to learn all the while with tasks to complete. Don’t let it overwhelm you, don’t stop asking questions, and don’t stop learning !

Best of luck

... but trust me on the sunscreen