My advice to aspiring web designers and developers
I get a lot of emails from people asking for careers and freelance advice, and I don't always have the time to respond as fully as I'd like, so I decided to write up the advice I've given over the years into a post. This is my advice based on my own experiences, so don't treat it as a canonical reference. It will change over time.
Decide which route you want to take
If you're not sure what role you want, follow whatever gets you most excited. The community is really lovely and will help guide and support you, and your skills will naturally refine over time. If you're trying to decide between whether you want to be more of a designer or developer, you can be both. As you get more experience, you'll probably end up specialising in one, but there is always demand for people who can do both roles.
Go to local meetups and conferences
Seek out other web designers and developers in your area – see if there are any local meet ups, and attend as many as you can. These are great because there will be lots of encouraging people there who can give you advice and moral support.
Go to some conferences and get chatting to people. If you can't afford to attend a conference, write to the organisers about volunteering at their event, but be prepared for the early start and long day ahead of you.
Learn some stuff
A solid grounding in HTML and CSS is essential in any area these days, whether you're doing visual design or back-end development. It's the language of the web. If you learnt it a few years ago, make sure your knowledge is up to date. A good way to do this is to read through the HTML5 and CSS3 specs.
Have a look at some open source CMSs like Drupal and Wordpress. Understanding how to integrate your markup into a CMS will be useful for most front-end jobs.
Learn Git which is for version control, and get a GitHub account. Most places these days use Git for version control, with a lot of companies using a combination of public and private repositories on GitHub.
Learning how to design or build responsive websites is essential – that's where you design one site that works well and adapts on lots of devices from desktop to mobile. If you're completely new to this, Trent Walton has a good primer.
Some sites I like to follow include A List Apart, The Pastry Box and CSS Tricks. I'm also a fan of Net Magazine: buying the individual magazines is expensive, but their yearly subscriptions are worth it. They have a digital version too. It's a nice way of digesting the latest techniques away from the screen.
Take some courses
There are plenty of college and university courses out there, but a lot of them can be out of date, so you'll have to do some research on whether you think it's value for money. If you want to avoid the expense of going to classes, there are a couple of good online options, like like Treehouse and Code Academy. They have really nice step-by-step tutorials, and you can take the courses in your spare time.
The Open University may also be an option, but it has changed a lot since I took courses there.
Build up a portfolio
If you're starting out, you probably don't have a whole lot to show. But that's ok. You can put your own work in your portfolio – everyone does this when they're starting out, and it's better than showing nothing at all. Be honest about what you're doing too, you'd be surprised how accepting people can be if you mention you're starting out.
It’s a good idea to host some of your projects on GitHub to get familiar with how it works, and also contribute to other projects to help build a positive reputation within the community.
Publish what you learn, even if it seems like it's something everyone knows, because there are always new people learning the same things. Being able to document how you solved a problem is also a very useful skill to practice, and learning to write well is tremendously valuable.
Get a job
If you're eager to freelance, consider getting a full time job in the industry for a year or two first – you'll get an incredible amount of support and time to learn more. That's something I wish I'd done. It really helps to work with a team of people so you can learn off them. Conferences really help for that as there are lots of companies and people recruiting that attend them. I recommend getting a job before going freelance because you'll learn a lot about working with clients and budgeting for projects. It is hard to do though if you don't have any experience, so as a last resort, ask a local agency if you can work in their offices.
A lot of people wanting to get into the industry will do web design/development in their spare time. Some even do it semi-professionally alongside a different job. It is possible to juggle two jobs, as long as you're being realistic about how much time you need to do both jobs well, and have some time to relax of course! You've got to be really disciplined with your time, and also try not to work on projects with tight deadlines because that will be very stressful. It's hard to be creative when you're stressed. Back when I was studying full time, I was also doing web stuff in the evenings, and I had a job at the weekends. It was very, very stressful but having that weekend pay was really useful because it helped me feel more stable during the transition.
Do what feels right
I hope that helps in some way. The main thing is to do what feels right for you.