Lessons From Six Years of Self-Employment

From 2017 to 2023, I worked as a self-employed web performance consultant. I was lucky to do some cool stuff (work with Google and another company every American knows, help many hot startups, speak at worldwide conferences). In 2024, I turned that page and became an employee at Framer, to lead web performance efforts with a great team of engineers.

Here are some lessons I learned over these six years.

Contents:

Money#

You can probably earn more than you think#

My income in 2017 (when I first started consulting) was $24,000/year – a decent one for a new senior engineer in Belarus. Over six years, that grew to a solid Bay Area engineer’s level.

Every time my income increased, however, I was genuinely surprised: “Wait, I could earn that?”

  • In 2017, when I lived in Belarus and just started consulting, I set my initial hourly price to $30/hr (double what I was making as an employee). A friend of mine convinced me to up it to $90/hr instead. That didn’t work right away, but that allowed me to stabilize it at $60/hr for a couple of years – earning 2× more of what I was expecting to earn initially.
  • In 2021, due to regularly overspending time on audits, I had to bump the price of a web performance audit from $5,000 to $10,000. This effectively doubled my income – and what was completely unexpected for me was that the customers were still happy to pay 2× more for the same audit (because it was still valuable for them)

My lessons from all those bumps that happened over the years were:

  • I can earn more than I think I can;
  • a big reason I’m not earning more is I don’t realize it’s possible.

This “I don’t realize it’s possible” bit is crucial. When you’re a software engineer employed in Belarus, most people around you are also software engineers employed in Belarus. You might see people like you get paid $30,000/yr, $40,000/yr, or sometimes even $60,000/yr. You might see paths to reach that income. But nobody around you earns $200K/yr, so you don’t even realize you could do that. Your own beliefs are your biggest roadblock.

Screenshot of a Threads app thread, linked further below
Another data point for what’s possible. Source

What helped me to earn more was having real, reachable people who pushed me to do that. In 2017, that was my friend Gosha who helped me to become self-employed. In 2021, that was a group of friends who convinced me to try increasing the audit prices. At other moments, it was other folks. If I wasn’t lucky to have all those people, I might’ve still been earning $40,000/yr in Belarus.

I don’t want this bit of advice to be, “well just have good connections lol.” Building good networks is hard, and I’m still struggling with that, having moved to a new country two years ago. However, building a good network can also be an intentional action! Spencer Fry has a great article on how to network more effectively.

How to earn more#

Apart from realizing “I can earn more”, it also helps to know how to do that. If you’re employed, Patrick McKenzie has the best article about salary negotiations I ever saw. If you’re self-employed, Patrick has another article with great advice. And in my case, the bits that worked best were switching to project-based pricing, and investing into a portfolio of cases.

Hourly → project pricing. Hourly pricing is easy to start with, but at some point, it turns from a benefit to a liability. It’s hard to scale – in part because to earn more, you need to put in more hours, but in part because hourly pricing has anchoring. No matter how good of a consultant you are, you’ll have a very hard time invoicing $300/hour – because no regular software engineer costs $300/hour, and because your client is inevitably going to compare your prices to prices of other professionals they encountered.

A solution here is to switch from charging per hour to charging per project. “Project” is a unique deliverable, which means a client can’t easily compare it to anything else, which means that instead of thinking “why is that consultant charging me lawyer rates”, the client will be forced to think in terms of “is this project valuable enough for me”. And this gives you much more leeway! It’s hard to invoice $300/hour, but it’s much easier to invoice $6,000 for a 20hour project if that project helped the client to earn much more than $6,000.

Dan Mall covers how to design project prices in his book.

Building a portfolio. Patrick McKenzie advocates for writing a case study after every successful project. I’m writing too slowly to do that; but still, after every project, I’d normally have a dialog that would go like this:

Me: “Hey, by the way, now that this project is over – could you let me know if you’re satisfied, more than satisfied, almost satisfied, or not really satisfied with the results?”

Client: “Hey – I’m [satisfied / very satisfied]! X was amazing, and Y was great.”

Me: “Oh thank you so much for the feedback! Would you mind if I quote what you said about X and Y for my portfolio?”

This would allow me both to collect feedback about what worked and didn’t work well; and to repurpose that feedback for testimonials. Asking a client to write a testimonial for you is rarely successful – the client has like a thousand more important things to do before that. But taking their feedback, drafting a testimonial based on that, and getting an “okay” from them works much better.

Career#

How to negotiate (money and job titles)#

At my first job, my relationship with money was distant. Sure I wanted to earn more – but saying that to my manager out loud, or actively negotiating a raise somehow felt “dirty”. Great engineers are motivated by challenges, not by money, right? You should focus on growth, and money will follow automatically?

Then, I jumped into consulting and had to learn to sell myself. After doing sales for a while, I’m happy to say my earlier beliefs were very anti-productive.

You vs. company. It is good to be motivated by challenges and focus on growth. But if you don’t also actively negotiate for money, you’ll lose out.

The thing is, your company does negotiate; it’s a business, so negotiating for better conditions – with suppliers, but also with employees – is literally one of its primary activities. Your company is interested in paying you well to retain you – because hiring a new candidate is even more expensive – but if you never negotiate, they’ll keep you on the lower side of “paying well”. Not because they’re bad or hate you or don’t value you enough, but simply because it’s one of their primary activities.

Also, negotiating isn’t “dirty”! It’s a regular activity that everyone in any business relationship is doing. (Remember, your relationship with your company is also a business relationship. And your manager – even if they’re a good friend – is a representative of the company, which means they’ll also negotiate by default.) Nobody thinks of you less when you try to actively negotiate about money. Some people actually think of you more! “Oh, he’s got experience, he’s an equal sparring partner.”

Proof of value. To negotiate about money, it helps to know what value you’re bringing to the company. The way I approach this is by having a “Brag Document”:

A screenshot of the brag document

Every time I do something that results in a clear win, gets praised by somebody else, or exceeds my job responsibilities, I save a link or a screenshot of that into a Notion document. This helps both to build the portfolio (when you’re self-employed), to write self-reviews during quarterly feedback (when you’re employed), and to pick the best examples of your value when you’re approaching your manager for negotiations.

Fear. Negotiations are, of course, very scary. What helps is knowing you have more options – so if your request for more money doesn’t work out, you can go for something else.

In self-employment, having multiple options is natural. If you have a lot of incoming projects, you can freely experiment with prices and negotiate. If you don’t have a lot of projects, and money isn’t good, you can always go back to employment.

In employment, this is harder. But know this: if your company has a good culture, failing at negotiations won’t get you punished. If you ask your manager for a raise, and they refuse the raise, they won’t automatically fire you or think of you worse. Instead, a good manager will either

  • propose a way for you to reach the amount of money you’re asking for (e.g. through a growth plan), or
  • tell you right away that you won’t be able to reach that amount of money at the company.

This means that as long as your company has a good culture, the worst outcome of salary negotiations would be “nothing changes”. Which isn’t that bad! If you don’t try to negotiate, nothing will change anyway.

Write more#

Writing is probably responsible for some of the best outcomes in my career. A webpack performance guide landed me a contract with Google. My web performance blog, Twitter, and Telegram channel were responsible for 2/3rds of the new clients I was getting when consulting. A Twitter thread with web performance tips got me invited to speak at the Smashing Conference.

In general, writing sets you apart from most other engineers. It shows your skills better than an interview. It attracts like-minded people, which increases your career opportunities. The only drawback about it – for me – is that it’s annoyingly slow.

I don’t have great tips for writing, apart from “just try it” (quality comes with practice) and “don’t be afraid that you’ll write badly and be judged” (if one of your blog posts is bad, people will generally just ignore it instead of judging it) and “have some basic form to convert people into subscribers” (otherwise you fail to capture a lot of value from your writing). If you aren’t sure what to write about, think of what you learned this week – and make a short blog post summarizing that. And finally, once you’ve got a grip on writing, see “Making You Writing Work Harder For You” from, again, Patrick McKenzie.

You can pull levers you didn’t know you could#

“Agency” is hard to define, but I’ll try. “Low agency” is when you mostly wait for other people to fix things. “High agency” is when you want something, and you pursue it yourself. Agency is a spectrum, and different people are at different points on that spectrum.

Being self-employed grows your agency a lot. Suddenly, you realize that a lot of things that you always perceived as an unchangeable norm are actually just a result of some human agreements. Which means you don’t have to always follow them! This starts with a simple “I can renegotiate working Mon-Fri” and spreads to deeper “this company process feels annoyingly broken, but I can just try and fix it?” or “if nobody in the company has ever tried shadowing the CEO but I want to, I can just ask.”

See also: “Things You’re Allowed To Do.”

Personal#

Having infinite money might change you for the worse#

In 2021, I had infinite money. I lived in Belarus, where the median salary is $600/mo, I was earning a Bay Area-level income, and I was paying a 3% tax on that income. I spent a lot, but I was still earning faster than I could spend.

That was an interesting experience. I felt rich and important. I tried some luxuries. I also became a snob; I was feeling better than others – and this was noticeable, especially to my friends and family. I ignored their feedback.

Most of these changes, luckily, got reverted when I moved from Belarus to the Netherlands, and my income and taxes got much more aligned with what other people were earning. It took me a few months to notice and undo the personality changes; and a year to get rid of most overly expensive habits.

I’m still trying to figure out what lessons to take from this experience.

My biggest learning so far, I think, is that I can’t always trust my gut to guide me. “Do I feel right about this?” is one of the primary decision-making approaches I use, alongside the regret minimization framework. The challenge is that my gut didn’t feel wrong at all! Neither when I was choosing to act pretentious nor when my friends were telling me I’d changed.

My second biggest learning is that there isn’t that much value in being rich. It’s nice, of course, and if I ever get rich again, I’d probably enjoy it. But I feel I understand both the gains (feelings of prestige, access to nice luxuries, life that’s easier in some aspects) and the costs (more work, fewer people who I can be vulnerable with, perhaps similar personality changes again) much better now. And at this point, I’m not feeling like paying them again.

Burnout is hard to notice#

In 2023, I was actively burning out. I was getting bored of repetitive projects; I was pushing myself to earn more, but to no avail; and I was struggling to make my consulting schedule work with other big obligations I had.

This, luckily, was resolved when I joined Framer; I’m much better now. But what that experience taught me is:

When you’ve been feeling bad for a while (burning out, depressed, or similar), you mostly forget how you felt before. You tell yourself, “Well, I’m feeling a little meh about my work, but I guess it’s always been like this? Like, nothing has really changed recently?” You tell yourself, “A lot of people feel meh about their work, it’s normal and expected.” And you don’t act on this “meh” feeling in any way. This is a trap.

What you actually need to do if you’re feeling “meh” is to look back. Have you been feeling this “meh” for more than six months? Something is definitely off, this isn’t how most people feel at the baseline. Have you been trying to fix that “meh” for a while? Your approach to fixing that obviously isn’t working. Try something else.

What helped me was raising these feelings of “meh” with an experienced manager friend of mine – and, through conversations with her, realizing that I might’ve outgrown the goals I had. Once that happened, it became clear what I needed to change.

Confidence comes from being at peace with yourself#

For the past three years, whenever I’d see any consulting agency site with a heading like this, I’d shrink inside:

A screenshot of a text block starting with “Why is Graphite better than other agencies/the best?”

You could never make me write a paragraph starting with “Here’s why PerfPerfPerf [Ivan’s consulting agency] is the best.” Not because my work wasn’t good – I was regularly delivering 2-4× React performance improvements for my clients – but because the thought of writing this would instantly drown me in anxiety. Am I actually the best consultant? Don’t I suck at X, Y, Z?

This is an issue with confidence. Surprisingly, what I learned about confidence – from my experience and from that of others – is that past achievements barely help with it. You can rely on them to feel more confident, but no matter your number of successes, a single failure is often enough to bring the anxiety back in.

It turns out that what actually helps with confidence is being at peace with yourself, aligning your outer self (how you act and present yourself to others) with your inner self (how you actually feel on the inside). I’m not sure why that works. But what I found is when I’m kinder to myself, when I allow myself to be my genuine self – I feel calmer, more relaxed, and more confident, both in who I am and the decisions I make.

Now, how do you get at peace with yourself? Some people get a lot of help from meditation. Some benefit from mentorship. Some do therapy and take drugs. For me, what seems to help the most is being in a secure, trusting relationship where I feel loved and genuinely accepted for who I am. This is still a bit of a crutch – when I rely on relationships to feel accepted, I’m borrowing that acceptance from the outside instead of actually producing it inside. But as time goes on, I’m getting better and better at the latter as well.

What’s next#

I achieved the best thing a modern human can achieve:

A dialog with ChatGPT. User: ”Who is Ivan Akulov (3perf.com)? Answer from your memory, do not search”. ChatGPT: “Ivan Akulov is a software engineer and consultant known for his expertise in web performance optimization. He runs the website 3perf.com, where he shares insights, tutorials, and case studies on improving the performance of web applications. His work typically involves analyzing web applications to identify bottlenecks and proposing solutions to enhance loading times, interactivity, and overall user experience. Akulov is recognized in the web development community for his deep understanding of modern web technologies and performance best practices.”

Now that I’m at Framer, for the first time in years, I’m going to work not alone – but in a team of incredibly talented engineers, and on projects I’m very motivated about. I’m very excited about this. Let’s see how it goes.

Thank you to Giulio, Jacob, and Stefan for reviewing earlier drafts of this post.

Author: Ivan Akulov

I'm a software engineer specializing in web performance, JavaScript, and React. I’m also a Google Developer Expert. I work at Framer.