Getting started as a Web Developer in 2019
I recently shared what I'd learned on my journey as a freelance developer with someone wanting to start their career.
Posted 18th March 2019 • Development
Firstly I'll share a little of my background so you know where I'm coming from. I've been working on the web since 2008. I mostly taught myself by inspecting the source code of websites and ended up specialising in web development at university. My first job was as a junior front end developer at a small design agency in Hampshire, England. A few years later I decided to take what I'd learned, go it alone and started CodeKnight in 2013.
I was recently asked if I could give some advice to someone wanting to get in to a career as a web developer. Hopefully the sections below are also useful for you if you're in that position!
Communication
I've found that one of the main reasons I've managed to stay afloat as a freelancer (and it transfers to full time roles too) is not about development skill, but people skills. One of the biggest things people value when working with devs is their ability to communicate what they're working on, any issues they have or foresee and the ability to translate their development knowledge in to 'non-geek' language.
Developers who don't communicate are a pain to keep chasing, and if they're proactive about what they're doing it makes them way easier to work with.
Self confidence can be difficult to develop, but being able to talk about yourself and your abilities in a positive way makes you look good, and I think it rarely comes across as 'talking yourself up' as you think it might.
Employability
Web development is a very general term, and there are several different directions you can take if you're just looking in to it. I'd recommend looking in to everything you see at least just a little, and find out what you think is interesting. After building a site from scratch, including the content management system, devops and front end, I knew I'd find front end way more interesting than the application side of stuff.
Personally I think that unless you're the only developer in a company, specialising in something a little will probably do you more good than a little of everything; even companies with only 2-3 developers will lean more heavily on a specific role when hiring. This is usually between front end (HTML / CSS / Sass / Twig / JavaScript) or back end (JavaScript - again, SQL, PostGres, PHP, APIs). There's also Search Engine Optimisation (arguably a front end discipline) and server administration.
If you need some more direction about what to learn, I can recommend looking at a range of job listings from companies that you might want to work for. Sometimes these can be a little unrealistic, but it's useful to see what sort of skills and technologies they're asking for so you know what to focus on.
JavaScript
Personally I've found that I've got on perfectly well by just knowing enough jQuery to add basic interactions to the sites I build (and more recently, CSS3 animations and transitions), but I know that a lot of other devs use JS frameworks pretty heavily. The entry to JavaScript is frankly ridiculous, so I'd probably only recommend that if you want to get in to it heavily and it makes sense to you.
As a freelancer, you have pretty much complete choice over how you build your own websites, so you only need to learn a specific framework if you're going to work for a company that uses it.
It seems there's a new JS framework every 6 months, and I don't think it's useful to keep using a new one on every project just because it's new and cool. That being said, full stack JS developers are in demand and well paid, so it's an option.
Adaptability
The web changes pretty regularly, and so do the tools used to build it. In real terms this means you'll be picking up new things naturally as part of your career, but it's also a mindset. Practically every project I work on has something in it that I haven't done before, and you need to be able to pick up the skill or technology during a project, within reason.
I also think it's worth saying that maintainability is really important in a web career, so try and have some standards of how you do things. It'll make it easier to come back to a project a year later to make updates if you don't completely change your approach every new project.
Content Management Systems
Depending on what you want to do, I would recommend that you look in to content management systems too. Most websites will be running on one, and depending on what you end up doing, you'll probably be working with one or several pretty heavily. Personally I've been working with Craft CMS almost exclusively for about 4 years, but Statamic, Perch and Grav are also interesting. I strongly dislike WordPress, but you may find it useful to at least familiarise yourself with it so you can have your own opinion about using it.
Building a website
Lastly, I thought it might be useful to list the skills I use in a normal client web project. Bear in mind that I'm a freelance front end developer, so it may be that only some of this applies to you.
- HTML - the structure of the pages themselves
- Sass (CSS) - I build my front end in Sass and make use of Bootstrap 4. Sass is compiled in to CSS
- JavaScript - Only when necessary. I'm trying to use non-framework ('vanilla') JavaScript where I can, sometimes fall back to jQuery, and am learning Vue
- Craft CMS - This is the CMS I build all my client sites in, which lets them edit the content of the site. It uses Twig as a templating language
- Twig - Craft templates are HTML files with Twig tags in them that pull the dynamic information for that page out of the database that the client can edit
- Composer - Only minor experience needed, it's how you install Craft and plugin updates
- NPM - I use NPM for managing JavaScript packages (like Bootstrap and any other jQuery plugins I'm using on the site)
- Laravel Mix - Mix is a simplification layer on top of webpack, to help you do all the basic things you'd need to do in a build process using webpack, but without the ridiculous over-complication.
- DigitalOcean, ServerPilot and DNS - My sites are hosted on DigitalOcean and ServerPilot. Knowledge of how to set up a server to host a website is required, but there are lots of ways to do this. See A modern view on web hosting for an overview
- Project Management - I use CushionApp for managing my workload, and Trello for managing projects with clients
- Search Console - Google's tool for indexing websites. Worth getting familiar with so you can keep an eye on how your site is indexed, and fix any errors
- SEO - Basic knowledge of how SEO works and how to build sites in a way that makes them easy to crawl. There are several good articles on this by nystudio107 like Modern SEO: Snake Oil vs. Substance
- .htaccess - Knowledge of redirects and how to cache static resources
- Git - This is the standard tool used today for version controlling code. This is useful as a solo developer, and required when working with a team
- Deployment - Knowing how to get your code from git to a server. I use BitBucket for hosting repositories for free, and DeployBot for deploying files.
- Image optimisation - It's worth knowing which image formats to use and when, how to optimise them, and how to transform them based on resolution. This may be handled by the CMS
- Caching - Depending on your CMS, this will vary. But the basics are that you should cache things coming from a database to speed up a site so the pages don't have to be built dynamically every time a user visits them
This article contains referral links to the services I use.
Questions?
Hopefully you found some of that useful! If you have any questions or want to know more about getting into web development, I'd be happy to talk to you.