On 13 February 2012 I received money for writing software for the first time. This post looks at all the jobs I’ve had since.
I’ve mostly worked in the UK as a contractor, but also spent about a year as an employee at a SaaS company, and then started a website monitoring tool called DebugBear.
1.1. Overall stats
1.2. Counting rate and days worked
1.3. General disclaimer
- Taking a look at each role
2.2. #1 vWorker (Feb 2012 - Mar 2012)
2.3. #2-4 Cabfix / Startup (Mar 2012 - Oct 2012)
2.4. #5 Freelance: Wordpress (Nov 2012 - Dec 2012)
2.5. #6 Freelance: Jekyll (Mar 2012)
2.6. #7 Freelance: ExpressionEngine
2.7. #8 Freelance: Python/Angular (Jul 2013 - Aug 2013)
2.8. #9: SSG/Agency (Aug 2013 - Oct 2013)
2.9. #10: Fathom / Agency (Oct 2013)
2.10. #11 1000 Heads (Nov 2013)
2.11. #12 Head London (Nov 2013 - Dec 2013)
2.12. #13 Imagination (Dec 2013)
2.13. #14 AIS via Ecom (Dec 2013 - Jan 2014)
2.14. #15 Shufflehub (Jan 2014 - Jan 2015)
2.15. #16 Sportlobster (Mar 2014 - May 2014)
2.16. #17: Immerse Learning (Jun 2014)
2.17. #18: Freelance: HTML (Jul 2014)
2.18. #19: Possible / Agency (Oct 2014 - Nov 2014)
2.19. #20: Fjord / Agency
2.20. #21: Orange
2.21. #22: Tribal / Agency (Oct 2015 - Nov 2015)
2.22. #23: Freelance: React (Dec 2015 - Jul 2016)
2.23. #24: Strikingly / Startup (Mar 2017 - Apr 2018)
2.24. #25: Redacted / Agency (Apr 2018 - Aug 2018)
2.25. #26: Google (Sep 2018 - May 2019)
2.26. #27: Redacted / Agency (Oct 2019 - Nov 2019)
2.27. #28 DebugBear (since May 2018)
- Other projects
3.1. Redacted / Startup (2013)
3.2. Meetups & Conferences (2014 - 2018)
3.3. Teaching (2015 - 2016)
3.4. FromJS (2016 - 2020)
- General notes
4.1. Big Tech
|1||vWorker||Feb 2012||Mar 2012||£350|
|2||Cabfix / Startup||Mar 2012||April 2012||£8||40||£300|
|3||Cabfix / Startup||May 2012||Sep 2012||£51||98||£5,000|
|4||Cabfix / Startup||Oct 2012||Oct 2012||£77||39||£3,000|
|5||Freelance: Wordpress||Nov 2012||Dec 2012||£260|
|6||Freelance: Jekyll||Mar 2013||Mar 2013||£65|
|7||Freelance: ExpressionEngine||Jun 2013||Sep 2013||£160||29||£4,600|
|8||Freelance: Python/Angular||Jul 2013||Aug 2013||£200||10||£2,000|
|9||SSG / Agency||Aug 2013||Oct 2013||£220||38||£8,300|
|10||Fathom / Agency||Oct 2013||Oct 2013||£310||4||£1,240|
|11||1000 Heads / Agency||Nov 2013||Nov 2013||£300||5||£1,500|
|12||Head London / Agency||Nov 2013||Dec 2013||£300||5||£1,500|
|13||Imagination / Agency||Dec 2013||Dec 2013||£300||5||£1,500|
|14||AIS / Agency||Dec 2013||Jan 2014||£300||14||£4,200|
|15||Shufflehub / Startup [S]||Jan 2014||Nov 2014||£160||84||£13,800|
|16||Sportlobster / Startup||Mar 2014||May 2014||£340||63||£21,400|
|17||Immerse / Education||Jun 2014||Jun 2014||£375||15||£5,600|
|18||Freelance||July 2014||Jul 2014||£275|
|19||Possible / Agency||Oct 2014||Nov 2014||£350||20||£7,000|
|20||Fjord / Agency||Jan 2015||Feb 2015||£350||7||£2,450|
|21||Orange / Telecom||Feb 2015||May 2015||£400||52||£20,800|
|22||Tribal / Agency||Oct 2015||Nov 2015||£400||22||£8,800|
|23||Freelance: React||Dec 2015||Jul 2016||£400||53||£21,300|
|24||Strikingly / Startup [E, *]||Mar 2017||Apr 2018||£134||258||£34,500|
|25||Redacted / Agency||Apr 2018||Aug 2018||£675||22||£14,500|
|26||Sep 2018||May 2019||£600||58||£34,500|
|27||Redacted / Agency||Oct 2020||Nov 2020||£500||26||£13,000|
|28||DebugBear [S, E]||May 2018||Feb 2022||£26||920||£23,600|
[E] I was an employee rather than a contractor (so all income is personal income)
[*] Role outside London, explaining a lower day rate
[S] I had shares in this company, explaining a lower day rate
|Days Billed||Total Revenue||Day Rate|
|Also excluding shares||632||£184k||£291|
Counting rate and days worked
I mostly worked as a contractor through a UK Limited Company. The rates reported count work billed to clients, excluding time spent on interviews, accounting, or learning new technology. The rates also show revenue before expenses (e.g. laptop, office space, software).
For employment, I took the overall amount earned and divided by the number of days worked (excluding holidays). This makes it hard to compare the day rate for employment to the contracting one, as my employer would pay some of the taxes and provide equipment.
The day rate for DebugBear is understated as I own 100% of the business. You could also argue that it would make sense to count business revenue here, rather than personal employment income. I’ve not done that here as expenses are much higher than when I worked as a contractor.
Some numbers are estimated/rounded. There’s a risk that I forgot to record some work. My experiences with contracts/employment/business may not replicate. Lists of advantages/disadvantages are incomplete. This article is UK-centric.
Taking a look at each role
#1 vWorker (Feb 2012 - Mar 2012)
Rate: £350 (fixed price)
Via: Online platform
Did 6 projects on a freelance platform:
- PHP data scraping ($67.15) - first received payment
- PHP list of blog posts ($30.62)
- jQuery Sortable fix ($11)
- Python data scraping ($56.45)
#2-4 Cabfix / Startup (Mar 2012 - Oct 2012)
Rate: £7.50/d - £77/d
Mini-cab booking website with ~7 people working full-time. Started internship for £7.50 a day in expenses. Was offered permanent role for £1000/mo as a freelancer, then later increased to £1,500 when I said I wanted to leave.
We did not have a local development setup. Instead, after making changes, we dragged the relevant files into FileZilla and tried out the code on a staging server. This can be tricky if multiple people are working on the same file!
Used SVN for source control, but the release process was quite cumbersome – I think there were a lot of manual merges involved.
The product was bad and did not have many users. I got fully paid in the end, but there were occasional late payments.
#5 Freelance: Wordpress (Nov 2012 - Dec 2012)
Rate: £260 (fixed price)
Tech: PHP, Wordpress
Made some tweaks to the Wordpress website of a coworker.
#6 Freelance: Jekyll (Mar 2012)
Rate: £65 (fixed price)
Via: Freelance Switch
Made a few tweaks to a travel website.
#7 Freelance: ExpressionEngine (Jun 2013 - Sep 2013)
Tech: PHP, ExpressionEngine
Via: Hacker News Who’s Hiring
Subcontracting for another developer, working on a magazine website with an attached ecommerce store.
#8 Freelance: Python/Angular (Jul 2013 - Aug 2013)
Tech: Angular, Python, Flask
Quiz for musicians around their goals and the marketing they do. I think the goal was to start building up an email list for a larger project.
#9: SSG/Agency (Aug 2013 - Oct 2013)
Via: Hacker News Meetup
I’d been building a mobile app in my spare time using PhoneGap and Backbone.
Met someone from Solid State Group (SSG) at a Hacker News meetup and they mentioned they were looking for Backbone contractors. Was asked to send a portfolio and had an interview. Had a trial week and then started working there 3 days a week.
Worked on a social network that I don’t think ever really launched. Eventually the project was put on hold.
Thought £220/d is a lot, but later saw an email saying my rate was “fairly low”.
#10: Fathom / Agency (Oct 2013)
Via: Recruiter (Explore)
Someone at SSG had mentioned JobServe, so I started applying for contracts through there. Had two cool offers at agencies working for financial customers and turned one down to accept the Fathom role.
Was let go on the first day. Got paid for 4 days.
I think multiple people were let go, and my understanding was that the client was delaying the project. But a few years later I met one of the devs and he mentioned there was an internal disagreement about whether to hire me.
#11 1000 Heads (Nov 2013)
Via: Recruiter (Digital Gurus)
Got a call late on a Friday for a start on Monday. No interview. Initially talked about extending the contract to more than a week, but I think they needed someone with more Django experience.
#12 Head London (Nov 2013 - Dec 2013)
Via: Recruiter (Purple)
Worked on an Angular app for gathering ideas from people within an organization. I think the digital agency I worked for was thinking of launching a product themselves.
#13 Imagination (Dec 2013)
Via: Recruiter (Digital Gurus)
Single-page app for an exhibition or conference, I think with information around oil exploration.
#14 AIS via Ecom (Dec 2013 - Jan 2014)
Via: Recruiter (Ecom)
Implemented various designs for a music event website.
#15 Shufflehub (Jan 2014 - Jan 2015)
Shufflehub was a search/discovery tool for clothes. One of the people at SSG was doing backend work for them, so they asked me if I’m interested in working on the front-end Angular app. This was a small business with ~2 people working full-time.
Biggest mistake I made here: I let them give me actual shares after they received funding. Because the shares had value I had to pay tax on them.
Luckily I didn’t actually lose any money here. Since I only owned about 5% of the company, I asked if they can pay me £160 a day now, and then – if the company succeeds or raises more funding – they can pay me another £180 for each day later.
Doing this is a bad idea:
- you’ll have to pay tax on the amount invoiced, even if it’s not paid until much later
- it’s generally weird and icky, and it seems like an easy way to mess up your taxes or other legal things
- I think having £10k-£20k in debt that you have to pay could also look bad to investors
But in my case it worked in my favor. The company fizzled out before running out of money, so when winding down they both had a bunch of money left and a liability to me. So in the end they paid me enough to cover my taxes for the shares, and I wrote off the remaining amount.
#16 Sportlobster (Mar 2014 - May 2014)
Via: Recruiter (Ecom)
Sport social network that had raised a bunch of money and was rebuilding their website. I initially did a poor job working with the rest of the dev team.
Lots of performance issues, and we addressed them in part by loading stuff over Ajax instead of as part of the initial document.
Morale was incredibly poor. The CEO came into a standup meeting saying they “need a hero”. One lead dev was fired.
The company wanted people to stay late, but after a week or so I couldn’t really be bothered, since I was contracted for 8 hours a day. I think they people how they could get me to stay later, and the suggestion of paying for overtime was made.
I worked paid overtime for a few weeks then quit about 3 months into the 6-month contract.
Took a long time to get paid. I had sent the recruiter an invoice billing overtime at the normal rate, but the recruiter sent the company an invoice at 2x the day rate and the client refused to pay. Invoice was eventually paid about two months later.
#17: Immerse Learning (Jun 2014)
Via: Recruiter (MA Worldwide)
Not much to say. Nice chill company. Used Perforce for version control.
#18: Freelance: HTML (Jul 2014)
Via: Person met at Startup Weekend
Made some tweaks to someone’s ecommerce website.
#19: Possible / Agency (Oct 2014 - Nov 2014)
Via: Recruiter (Ecom)
Built a recruiting site for an oil company.
#20: Fjord / Agency
Via: Recruiter (Digital Gurus)
Working on a app for a travel website.
Initially a two-month contract, but I left early after receiving an offer from Orange for more interesting work at a better rate.
#21: Orange (Feb 2015 - May 2015)
Via: Recruiter (La Fosse)
Worked on chat app that also let you make calls through the browser.
After accepting the Orange offer and giving notice at Fjord, Orange pulled out of the offer. Then later made another offer and I did ultimately start the contract.
The timeline looked like this:
|Fri 23 Jan||Interview with Fjord|
|Tue 27 Jan||Interview with Orange|
|Thu 29 Jan||Start Fjord role|
|Fri 30 Jan||“still a lot of deliberation happening”|
|Mon 2 Feb||“Orange have made you an offer”|
|Tue 3 Feb||Orange contract signed + notice given|
|Fri 6 Feb||Start date moved to Tuesday|
|Mon 9 Feb||Orange contract cancelled: “this agreement is null and void”|
|Tue 10 Feb||New contract with Orange:
“Please ignore the termination letter that we sent to you, this is now void.”
|Thu 12 Feb||Actual start date at Orange|
I think I’d seen the client’s option to cancel the contract prior to the start date and asked about it, but was told not to worry about it.
#22: Tribal / Agency (Oct 2015 - Nov 2015)
Via: Recruiter (Chemistry)
Worked on a comparison tool for a car company.
#23: Freelance: React (Dec 2015 - Jul 2016)
Via: Slack group for contractors
Saw a backend contractor post on Slack that they were looking for someone to work on the front-end React app. Worked on a staff scheduling tool.
This was my first commercial React project. In retrospect, I should have started learning React sooner to benefit from the strong market demand.
#24: Strikingly / Startup (Mar 2017 - Apr 2018)
Via: Hacker News job post
Left London to travel and work on my own projects. Quickly lost motivation though and decided to look for a job in China.
Worked on various UI components for the website builder, as well as working on site speed optimizations.
This was the first time I had direct ongoing involvement with a production site, and also the first time I got to do customer support. Before this, most of my work consisted of one-off projects or work for startups that didn’t have much traction.
#25: Redacted / Agency (Apr 2018 - Aug 2018)
Via: Family member
Spent a few weeks with family after leaving Strikingly. Someone mentioned their work was looking for front-end support, and I took the offer as the rate was good.
Worked on apps for automotive clients while also starting to work on DebugBear – more on that later.
#26: Google (Sep 2018 - May 2019)
Via: Inbound email
A few months after starting DebugBear I got an email titled “Interested in contracting with Chrome?”. It said they liked my work around DevTools and V8 and asked if I was interested in doing work on Lighthouse.
I had just finished the previous contract and had been hoping to focus more on DebugBear, but I accepted anyway because:
- The work sounded interesting
- Having Google as a client could help with finding work in the future
- I’m always tempted by short-term money
The work was interesting, and it was cool to work on a project with a large number of users. The team was really nice to work with, and I also learned more about Lighthouse and started integrating it into DebugBear.
Billing was a nightmare though. It took over 4 months to get the first invoice paid. There was no consistent point of contact, or a way to call Google vendor support. Instead there were emails like this one:
Thanks for reaching out to bizApps-Oracle Support team for help. This ticket has been triaged by Ticketron, a Google AI powered solution.
Seeing “Oracle” and “Ticketron” in the same paragraph is not encouraging when someone owes you £20,000!
I was told several times that I will get paid with the next payment run, and then waited a few weeks for that to happen and to see if the international transfer would end up coming through.
After not getting anywhere with the vendor team a Google employee I was working with helped escalate and resolve the issue.
#27: Redacted / Agency (Oct 2020 - Nov 2020)
DebugBear had lost a bunch of revenue at the start of the pandemic, it had been over a year since I’d worked with another developer, and running a self-service business from home by yourself can be quite lonely.
So when a friend mentioned that his team was looking for short-term front-end support I took the opportunity.
Did a bunch of React work for an ecommerce store. It was really good being reminded of how a normal business works, for example it helped me think more about creating a component library and using function components more in React.
#28 DebugBear (since May 2018)
Tech: Node, Postgres, React
Via: Founded company
Started building a site speed monitoring tool after using SpeedCurve at Strikingly.
I’m only counting my personal employment income for the day rate. But I also own the business and hopefully the shares also have some value. I started paying myself £36,000 a year (~£137/d) from November 2021, so the effective rate will definitely start going up.
Growth was very slow early on – I think my product was poor, I didn’t have a great idea of what market to focus on, and it also took a while to get content marketing off the ground.
I also did occasional bits of site speed training and consulting work at around £1000 a day. In YE Aug 2021, 15% of revenue was from services.
Starting a company (as a solo founder)
- More opportunities to learn and do tasks you’re less experienced with (talking to customers, sales, marketing, procurement processes, full-stack development, etc.)
- Generally more opportunities to talk to people at different companies, understand the work they do, and how you can work with them (though I think you could do the same as e.g. a solutions engineer)
- Potential financial upside
- Flexibility to take on occasional contract work
- High level of control (though not always a positive if you don’t know what to do)
- No dependence on single manager or client in order to advance your career
- Lower earnings initially
- Risk of failure, large financial exposure to a single investment
- Having to figure out how to do things you have no idea about is stressful
- No opportunity to learn from coworkers
- Low level of external guidance (and early on it’s hard to get user feedback)
- High lock-in: can’t easily leave for another job as company depends on you
- Can’t just ignore email for two weeks (well you can, but would likely reduce customer satisfaction)
- Fewer opportunities to do something really well, e.g. you can’t really spend 4 weeks on a UI component
I don’t have any plans to leave DebugBear, but if I think I’ve gained a lot of skills that would be helpful in a new role or when working as a consultant.
I wasn’t great at running the business early on, and I think I compensated by putting in more hours and taking advantage of having cheap access to a developer (me). For example, I built a lot of features that practically nobody uses. I’m happy with where the business has ended up so far, so I’m generally fine with this.
I have not taken any external funding so far, but did put in about £15k in savings over the first two years. This wasn’t essential, but because of the contract work I was sometimes time-constrained but I did have enough money to pay for ads, cloud hosting, or a coworking space.
I occasionally applied to accelerators, but other than that never seriously tried to raise funding. That’s mostly because I have no idea how to do that, and spending time figuring out how to fundraise felt like a distraction from improving the business.
One potential investor I talked to also said that I have no strategy, which is a good point and was even more true at the time. I don’t have any concrete and ambitious long-term plans for DebugBear, so it’s hard to sell investors on a long-term vision.
Raising funding also means committing to a more ambitious outcome. Selling the business for £500k would no longer be a success if you previously raised money at a £1M valuation.
Redacted / Startup (2013)
Met the team at a Startup Weekend and did some work mapping various datasets. Did odd bits of work for a few months. I think the expectations around equity and our respective future roles within the company were unclear.
Ended up getting an offer for only 1% equity and we eventually stopped working together.
Meetups & Conferences (2014 - 2018)
I gave my first meetup talk in 2014 at the London Ajax Meetup, and my first conference talk in 2016 at JSConf Uruguay. I stopped in 2018 to focus on DebugBear.
What did I get out of it?
- Free conference tickets
- Free hotel stays (and one flight, though I usually paid for travel myself)
- Looking more competent
- Speaking experience
I also had my first online interaction with someone at Google following the 2016 JSConf Uruguay talk, and that and other things arguably eventually led to the Google contract.
Teaching (2015 - 2016)
In 2015 I thought about getting more into teaching or running courses. I applied for a few teaching assistant roles at coding bootcamps, but didn’t get any offers. This was the feedback after one job interview:
I’m afraid that we’ve decided to offer the position to another candidate who had more relevant classroom experience.
In early 2016, I organized a free coding course in my neighborhood to build up more experience. Learned a few things doing that. I’m not sure if I actually applied for any more roles after that, but generally I ended up losing interest in the teaching side.
Someone from Manning got in touch in July 2017 about creating a course for them. Talked to them for a bit but eventually decided against it as I was busy working at Strikingly and didn’t want the extra stress. Note that this wasn’t an offer, but rather an invitation to submit an audition video or something.
I did eventually end up doing some commercial training related to web performance.
FromJS (2016 - 2020)
I spent at least the four months working on this full-time, occasionally taking a break for a year and then returning to the project.
Until 2017 I applied for various roles at large companies like Microsoft/Google/Facebook, but never heard back.
I did have a few inbound requests over time.
Apple (Aug 2016)
Someone found FromJS, thought it looked interesting, and sent an email titled “Come build developer tools at Apple”.
With this particular job opportunity, I think we’re not the right fit for each other. I’m looking for a candidate with more experience ‘owning’ a product over years, as that yields a different skillset that is missing in our team.
Facebook (Sep 2017)
Got an email titled “Facebook Front End”. They mentioned FromJS and some conference talks, but this might just be stuff they picked up from my website after deciding to contact me.
Spent evenings and weekends learning algorithms for a month, but ultimately didn’t pass the phone interview. This was the only interview where I was ever asked algorithms questions.
I was also talking to someone working at Facebook in June 2020 regarding a blog post I had written about Chrome extension performance. DebugBear wasn’t doing well at the time and I was interested in working on developer tools, so I asked if there might be any work that I’d be a good fit for. Was told they’d “ping some folks internally”, but didn’t hear anything back.
Google (Aug 2018)
As mentioned above, I ended up doing some contract work for Google.
Advantages of contracting:
- Getting experience across different companies with different tech stacks
- Well-paid, and opportunity to increase your rate every time you start a new role
- Easier interview process (contracts are fixed-term, so the risk of a bad hire is lower, and notice periods are short)
- Can just take 3 months off to travel or work on own projects
Downsides of contracting:
- Less career progression (no expectation for promotions or help with career advancement)
- Generally less investment in you and willingness to skill you up
- E.g. I didn’t do much automated testing for a long time, and wasn’t able to get roles where testing is common
- Instability and general risk of losing roles
- Having to deal with business admin / chasing invoices
- Having to interview for new roles a few times a year
- Less in-depth understanding of the business and where it’s going long term
- Less experience working on production projects long-term and building up a deeper understanding of the business
As a consequence of mostly working on short-term contracts I also haven’t built up any experience of having a career within a company and getting promoted. I do really enjoy the freedom and variety of contract work though.
I’ve worked with recruiters a lot and found them really helpful. I generally felt that I could start a new contract role within a week if I talk to enough recruiters.
Generally, the cost of receiving recruiter messages for roles that don’t interest you is low. You can ignore them until you are looking for a new role and then follow up with them.
Some downsides of recruiters:
- The convenience they provide costs money
- E.g. at Sportlobster my day rate was £340 but the company paid £400 a day
- They can be pushy
- Recruiters make money if you work through them – if you have two offers they don’t want you to take the other one!
- There’s an uncomfortable habit to refer to you as “buddy”
- If you typically answer unexpected phone calls then recruiters can be annoying
- If this is problem I’d just consider getting a second number
I left university after three months because it wasn’t very fun, didn’t provide much flexibility (e.g which courses to take or going abroad), and I wasn’t good at it.
Advantages of starting work early:
- Build up real-world experience more quickly
- Much more flexibility and less commitment
- Build up savings rather than debt
Downsides of not getting a degree:
- Harder to get first jobs
- Harder to get interviews at big companies
- Harder to migrate to the US
- More narrow experience rather than learning about more varied topics
- Less commitment means having to make more choices, more potential to make bad ones, and a less clearly defined early career path
While it would be nice to have a degree, I think I would have found studying for three years too boring at the time.