Looking back and celebrating one full year of self-employment, I've learned a lot on this journey so far. I have worked in client services in some capacity for the past eight years. I've dabbled in code and technology consistently since high school, and a few years ago I made the decision to lean in to software development full time.
Below are a few key takeaways from my experience as a freelance developer, presented as suggestions for other web and software folks who may also be interested in working for themselves or starting a business.
Do work that you don't think you can do
One year ago today, if you'd have asked me to assign myself a job title, I'd have probably said that I'm a junior web developer. And while it's true that I hadn't been doing this particular job for nearly as long as many others, imposter syndrome was a very real and pervasive hindrance to my confidence and growth.
If you are in the technical space, you probably know that it's a lot harder for junior engineers to find work than it is for others with years of experience. But what you might not know is that a lot of folks who have years of experience still refer to and advertise themselves as junior engineers. In hindsight, I held onto that title internally for too long, and it held me back in ways I didn't realize.
Here's a hot take: no one should be a junior engineer for longer than a year on the job. If you have that and still think of yourself as junior, my #1 advice is to do more work that scares the hell out of you. If you are held back from that by your job, you should do what you can to find a new one that pushes you harder.
Seeking out and selling my services for work that I haven't yet conquered is not easy, but it's also not as hard as I thought. If you can convince a client that you can solve their problem, most probably won't care what tech stack you use to solve it. As a freelancer, that gave me an amazing about of freedom to explore and do work that I didn't have complete confidence in completing. But the deadline and your first solo paycheck are really great motivators, and a bit of tenacity is a hell of a tool.
There is no better feeling than attempting something that is way out of your depth, being persistent, and then pulling it off on the basis of sheer willKen Wheeler (@ken_wheeler) June 25, 2019
TLDR: Don't feel trapped by your current knowledge, and actively chase work that makes you uncomfortable. If you don't try new things--especially the ones that push the limits of your capabilities--the years of experience later won't matter as much as you might expect.
Level up your non-technical skills
Another mistake I made early on was obsessing over my level of technical expertise. I had only been a full-time developer for a little over a year at the time, but I had nearly 10 years of tangentially related professional experience that has proven every bit as beneficial for my solo operation.
If you want to go out on your own, imagine the kind of work you'll have to do to maintain a steady stream of revenue, and very quickly you'll see why your ability as a developer alone likely won't get you there.
The first thing you have to do is find a paying customer. Depending on your revenue model, you may need to find more than one. At the very least, this involves some networking and people skills. If you don't already have an established network, it will involve a lot of hunting for leads, drafting emails, making phone calls, scheduling meetings, and possibly some marketing or advertising. That's a lot of different skills to not only have, but also to juggle from day to day!
And then let's say you get the first job. It may or may not be able to sustain you for the long term. So now you have to plan out a timeline for finding another job while investing a lot of time and energy into the one you just got. Oh, and if you took my last bit of advice on doing new and challenging work, expect that job to take up even more of the time you planned for it to account for the learning curve and challenges along the way.
Now let's say you have five different smaller clients, and they all use different communication tools. Now you have an influx of messages from Asana, Jira, Github, Bitbucket, and five different Slack groups each with ten different channels. And you made the mistake of putting your cell phone number in your email signature and now you have one client who insists on texting you instead. Are you organized and disciplined enough to handle this volume of communication and still be productive while writing code?
Organizational skills and discipline are far more important than technical ability.
Oh, and have I mentioned taxes yet? Yeah, you still have to pay those. And you need to keep track of all your receipts, invoices, paychecks, and you may want to make estimated pre-payments. You might hire a CPA, but they will still need you to send them the right paperwork. There's a lot more paperwork than you probably expected.
So far we've got:
- Project management
This is not trivial work, nor are they trivial skills. Looking back, I'm thankful for the time I spent in previous roles that better prepared me for this adventure.
TLDR: Be prepared to do more than write code, and sharpen your people skills as much as possible. Organizational skills and discipline are far more important than technical ability.
PRO TIP: If this all scares the shit out of you, it's helpful to know that the gig economy has created services that can make freelancing less of a burden for the technically inclined. Companies like ReadyBase offer tech contractors the ability to spend more time doing what they love and fill in many of the gaps I've outlined here. If you love the freedom of freelance but want a break from the other stuff, take a look at what they have to offer.
Know your weaknesses and your strengths
If you've made it this far, you might be feeling energized about the possibility of new challenges or terrified of performing skills that may be weaker in. Hopefully it's some combination of the two. The fear here should drive you, not slow you down. But you should recognize it and understand the weakness behind it.
Understanding and knowing your weak points is crucial to dealing with them. It's unavoidable that you'll need to work on them, and that work is necessary if you ever hope to be stronger in those areas.
On the flip side, don't let imposter syndrome blind you from your strengths. Lean into the things you're good at and learn how these attributes can set you apart from competitors. It might be a particular specialty, or perhaps you're a decently strong generalist--either can be used to your advantage. Develop on your weaknesses, but certainly not at the expense of your strengths.
TLDR: It's hard to know what you're good at without knowing what you're not. Understand both deeply and learn how your strengths can set you apart.
Sell them both
Remember before when I said you should try work that you aren't super comfortable doing? Some may interpret this as a fake-it-til-you-make-it approach. To some extent perhaps. But I do not believe you should be dishonest in your pitch. In fact, I've found it quite useful to be radically honest with potential clients on disclosing my weaknesses.
A story: I'm currently working on two potential projects where I might be the development lead on both applications. Neither lead has an existing dev team or even another engineer they are working with. Both have approached me about building out robust apps that will handle a good bit of complicated data relationships.
While I am definitely capable of creating and managing databases at a basic level, I advertise myself as a frontend developer because that's my domain of preference and of greater skills. Both of these clients would need someone who is more comfortable on the backend than I am, and in this instance I'm not going to have the bandwidth to teach myself all the skills needed to complete both jobs.
My answer for both leads has been transparency. I've made sure that both have an understanding of what value I bring and what limitations I bring. I am also prepared to bring on a partner for either job to deliver the results they need, and I've communicated as much.
So far I've not lost any work by being honest about gaps in skills. On the contrary, so many folks have been burned by developers who have over-promised and under-delivered that they find the honesty reassuring, and they know up-front that the project will require more resources than they may have planned for (with a larger paycheck being a nice side-effect). And if they don't, then I've dodged a huge bullet and potential time-suck.
TLDR: Yes, do work outside of your comfort zone, but do not hide your weaknesses from potential clients. Be upfront about your real value, and bring on help to fill in gaps as needed, and you'll have a much better experience.
Be flexible, but not too flexible
I'm an over-planner in many ways. At any given time, I have an outline of my goals for the day, for the next week, for the next 6 months, and for the next 5 years. While I would definitely advise folks to set goals, something I had to learn quickly was how to be more flexible when circumstances change or opportunities arise.
That being said, I think too many entrepreneurs have shiny object syndrome. They see what I'd call an attractive distraction--a situation disguised as an opportunity because it provides some monetary gain, but it leads them down a road that may hurt or prove risky in the long run.
TLDR: Pay attention to the market and adapt, and don't be afraid to try new things that you may not have planned for. Be wary if these new things do not fit in with your larger goals or core purpose.
Which leads me to...
Define your core purpose
Before you make a decision about your career, whether it's to work for yourself, join a new company, or accept a new role in your current company, I'd encourage you to ask yourself why. A promotion can feel an awful lot like a demotion if your motives are unclear on this point. You get one life, so it's helpful to figure out what you want to do with it and why.
For many of us, career moves are seen as steps on a ladder. A ladder is a poor metaphor, in my view. A good ladder should always take you up, whereas a career move should hopefully take you forward. In order to know which direction is forward, you have to ask yourself what the destination is.
Of course, the assumed response might be to make more money. And I'm certainly not here to argue that more money isn't a worthy goal! Money can absolutely make you happier if the source of your unhappiness is a lack of resources, and if you use it to do more things that make you the happiest.
But money itself is probably not what you're after; rather, it's what you think that money gets you.
Step back and ask, what do you want that you think money can buy? Is it more material possessions? Is it the ability to have a safety net so you can spend less time working? Is it to provide a good and comfortable life for your family? Ask yourself these questions critically and you might find that money isn't the only (or even the best) key to your destination. Figuring out what is will make career moves and goals clearer, especially if you want to work for yourself.
TLDR: Define, in clear terms, what motivates you and why. Do work that fulfills your purpose.
BONUS: Do not misread this as a suggestion to always follow your passion. Passion and purpose can look very different. You might be passionate about making sandcastles, but making sandcastles might not fulfill your purpose to provide a loving home for your children. If you are clear about your purpose first, you can find creative ways to bring your passion into your work
Know yourself; be yourself
If there's one thing all of these thoughts have in common, it's the benefit of understanding one's self deeply. This benefit is not abstract; I can track a clear, monetary value for the time I've invested in learning myself, my strengths, my weaknesses, my purpose, and how to make myself uncomfortable enough to grow. What's more, for the first time in my life I am doing work that motivates me to get out of bed in the morning. I wouldn't trade that for all the monetary gains I've made in the process (but, no lie, the money is nice, too).
The last thing I've learned is that, no matter how hard I try, I am who I am no matter how hard I sometimes fight it. Not everyone will like you, and not everyone will want to work with you. Don't try too hard to change it, because there are still plenty who will. And you'll enjoy your time around those folks a hell of a lot more than the others. Being a successful freelancer means selling more than your services. You are selling you. It's a package deal. 🍻