A six-figure freelancer without a CS degree tells all

Tom Hirst

Tom Hirst is a freelance developer from the UK. He's been able to earn a six figure annual income from web development without a CS degree. Here he gives an exclusive lowdown on how you can follow in his footsteps and build your freelance programming career.

Edit: check out Tom's audio and video interviews with No CS Degree on the podcast and on YouTube

How much do you earn a year from web development?

I worked my way up to six-figures in 2017, seven years after I started. I’m not open about this to sell the dream that earning a good living from freelancing is quick or easy. It takes consistent hard and smart work over a period of time. The main thing that developers without CS degrees need to know, is that it’s possible to get there by going down the freelance route!

Hey, so can you give us a short introduction for people who want to know more about you?

Hi Pete. I’ve been a freelance WordPress developer for 11 years.

I work remotely for agencies and businesses around the world from my home office in Wakefield (near Leeds), UK. My interest in web development started when I was around 15. My parents bought a family computer and I became obsessed with the internet. I used to spend a lot of time creating sites on Geocities!

Since then, I went on to study multimedia and communication design, but I never had any degree level computer-science education. I continued to work on my development skills alongside my studies and as soon as I graduated from University, I started my own WordPress consulting business.

I’ve been lucky enough to work with some big companies over the years and have collaborated with people all over the world. All while working from home! I do a lot of stuff other than web development, although everything is pretty linked.

I’m always learning and coming up with ideas for side-projects, so that takes some of my time. My latest project is a rating and inspiration site for people with the best home offices. I ran a clothing line business on Shopify at one point! That was a ride.

Because I’ve been freelancing for a long time, I’ve built up a good level of experience; so I like to share this with people who’re earlier in their careers or want to look at freelancing from a different perspective.

I write a lot about running small/solo businesses, marketing and entrepreneurship on my blog about freelancing. Earlier this year, I released my first book on these topics too named, “10 Steps To Becoming A Better Freelancer”. I decided to release it for free as my first venture into authorship and thankfully, it’s been well received!

What is your tech stack at the moment?

WordPress, and PHP, is the foundation of most of the things that I do. I’ve been creating with WordPress for over 11 years, so it’s what I know best and it’s what people know me best for too. In recent times, with the introduction of Gutenberg, I’ve ventured further into JavaScript.

The projects I’m working on at the moment are heavily headless WordPress development based. I think that modern development is heading more and more towards the headless model, so learning JavaScript frameworks like React and tools like Gatsby and Next.js was the natural way for me to go.

I’m also writing Node.js with Express and MongoDB if I want a custom back-end or WordPress is overkill for the task at hand. The classic MERN stack. In terms of stylesheets I’ve always favoured SASS, but do occasionally stick with vanilla CSS.


If you don’t have a CS degree, how did you learn coding? Did you do any particular courses or bootcamps?

I’m very much a person who learns by doing. I never took an online course or a bootcamp. My go-to resource when I started learning WordPress development was CSS-Tricks. I used to follow the tutorials there by replicating things bit by bit. I remember Chris Coyier building out a custom WordPress theme over a series of posts; this was ideal for me.

I’d fire up my code editor and write my own theme alongside. Repeating this was how I learned to code bespoke WordPress websites. As my skills improved, I could take on more complex builds, so my client base increased and the rest, as they say, was history.

How did you set up your web development agency aged 22?

I’d just left University and I knew that I didn’t really want to work for anyone else. I applied for one local web development role and narrowly missed out. I realised that my heart wasn’t in it, so I decided to realise my aim of working for myself, by offering web development services on a freelance basis.

My first client was a stroke of luck; or perhaps I made my own through my previous efforts? I’d started offering my services to a few local companies; I was making some progress, but I wasn’t making quick progress. My Dad mentioned that a contact of a client of his was looking for someone to build “WordPress” websites for them.

I don’t even think my Dad knew what I did at the time, but this obviously couldn’t have been a better fit for my skills. I called the person up to discuss. They had a web design agency and needed to increase capacity to serve some new business.

High Signal cover

We agreed to work together on a project to see if it was a good fit. My client, and their end client were super happy with the results, so the engagement became more long-term. We worked together for a couple of years before I eventually moved on.

Marketing myself is another story. I drifted from client to client for 5 years before I had the confidence to do self-promotion properly. I had a website, but it was sparse for content. I’d fall into the trap of not marketing while I was working on projects.

Getting into digital marketing was something I had an interest in, so I started to put the techniques I’d read about in books into place. I made moves to alter my position in the market to be seen as a premium, specialist freelance WordPress developer. I knew that I did a great job and my clients were always happy with the value they received from me, so it made sense.

SEO became a focus of mine and I’d monitor and make improvements to my website in this regard regularly. I built up credibility through social proof by getting everyone I’d worked with on LinkedIn to write me a recommendation. Then in general, I started to make more dedicated efforts to build genuine connections with people. Word of mouth is key for freelancers.

What advice do you have for someone without a CS degree who wants to get their become a freelance developer?

You don’t need a CS degree to become a developer. Far from it. There are so many resources to learn from online now and people who offer mentoring services - a degree might be nice to commit to and achieve, but it’s far from a requirement to become a freelance developer.

My advice for someone without a CS degree looking to become a freelance developer is to build an audience. If you have a job already and you’re thinking about switching to go freelance, I would build this audience in the background, alongside your job.

Take a couple of small jobs on the side to see if freelancing is for you. When you have enough people interested in your services that it makes you confident you can cover your outgoings - this is the time to consider going freelance full-time.

What does a typical day as a freelance developer look like for you?

My days are pretty structured. Monday to Thursday at least. My alarm goes off at 5:30 and I give myself a few minutes to come round. Then I’d usually get straight out to the gym for an hour, but the lockdown in the UK (as of March 2020) has put a stop to that!

I’m using a home gym at the moment. After that, I’ll go out for a walk with my dog. We’re lucky to have some great nature spots within walking distance of our house.
I’ve found walking to be particularly useful during the pandemic. This is when I do my best thinking, and it helps me to keep my head straight.

Ready for the day of code, or whatever else I’m working on, ahead! I’ll usually start working at around 08:00 with my noise cancelling headphones on. I like to get a period of deep-work in at this time without interruption. This could be coding for one of my side-projects.

Breaking for lunch, usually happens around 11:30. We have a 9 month old at home, so we spend this time eating together!  The afternoon I like to go in the same way as the morning work session so that I can get into a solid flow.

18:00 is the latest I’ll work on any given day as I like to cook dinner for the family at this time. Fridays are often more flexible. If I’m on a roll with something, I might treat the day like Monday-Thursday. If I need a break or we want to do something as a family, I might take a half day or even the full day off.

Weekends are completely work free where at all possible. It’s easy to get carried away with work as a freelancer, so I find that setting boundaries with yourself in terms of when you’ll work and when you want, is a great tool to help you lead a more balanced life.

Have you ever had imposter syndrome and if so, how have you dealt with it?

Early in my career 100% yes. Regularly. Now, occasionally, but I know how to deal with it now. What I do when imposter syndrome rears its head is to think along these lines:

Look at everything you’ve achieved in your life and your career.

No one did these things for you.

You got there off your own back.

You weren’t lucky.

You know what you’re doing.

Now keep going.

What are your coding ambitions for the future?

I know that I’ll stick with WordPress. I also know that I want to keep up with my JavaScript pursuits. Anything that bundles both of these things together will be my coding focus for the foreseeable future.

Check out Tom Hirst's book on Freelance Pricing (affiliate)

About the author
Pete Codes

Pete Codes

Hey, I'm Pete and the creator of this site. I am a self-taught web developer and I'm based in Edinburgh, Scotland.

Self-taught developer success stories

Get into tech without a CS degree

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to Self-taught developer success stories.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.