One of the projects I've recently been managing is the outsourcing of some programming work--work outsourced to a team of "professional programmers" but with no domain expertise. I think I could have done better myself in terms of code quality, but even if I had, I know I wouldn't have gotten paid as much since I'm an employee. I'd like to capture that value myself instead of dealing with an OK bonus and sub-inflationary raise.
I've been considering trying my hand going solo, offering my skills on a contract basis. But I've never done this, and it's a big change for me. Ideally, I could start with my current employer as a client.
How often is this done? What steps should I take and what should I consider? Any resources that you'd recommend?
If you can find good clients, contracting can be great, but bad clients can be a real drag: it’s easier to quit a job than it is to fire a client.
I’d recommend giving it a go, but don’t expect it to be better, just different. Personally, on balance, I prefer it and don’t plan to go back to full time… but it’s often just as defeating.
(Regarding how easy it is, it’s very easy, anybody who can get a full time job can do contracting, software engineering contracting is in high demand, always.)
You need at least 1.5x ideally 2x your normal rate to make it worth it.
You need to always be selling, probably should make sure you are consistently overbooked if you want to keep contracting sustainably. Otherwise if you focus on one client only and they go poof, you are back in line for a job.
Be prepared to work many many more hours because of the above.
Don’t forget to calculate ALL your costs.
If you can get a monthly retainer for X number of hours for close to your target hourly rate, take it even if it’s a little low. As long as you are good you’ll (probably) never really need to spend X hours. Leaving you with extra billable hours to devote to other clients while still having some guaranteed income. This is one of the only ways to get ahead, aside from charging “book” hours (estimates) rather than actual elapsed hours.
You’ll get stuck in whatever price range you start with so do not lowball yourself. Again, always be selling, and hours are precious, don’t waste them.
It’s a stressful life because you start to have issues taking any time off.
I hope my experience working solo can shed light on how working solo is (If you plan to go into consulting and not build something for yourself, the experiences could be different):
1. Unlimited technology choices, but at the same time considering costs have to backoff from ideal choices. For example: I can't spin out a microservice for every damn small thing, consolidate so I can save on compute costs.
2. Working alone is hard, really hard. Try to spend time with your partner, former co-workers etc.
3. It not just writing code all the time. Consider the effort and costs on the corporate side of things. Incorporating, issuing stock, compliance, taxes, bookkeeping, prospective investor meetings, insurance etc. They all take time or money.
4. Having a partner who has a full-time job really helps. My wife works full-time and we have our health insurance figured out and have a regular stream of income to take care of our necessities.
5. You are always on-call and have to plan your vacations or at times skip one based on your business needs.
6. You have to sell. Sell to your friends, co-workers, your neighbors - anyone who you think can use your product. It's a little awkward at time, but I joke it off and try selling again.
7. 14-16hrs a day is pretty usual on weekdays. I don't work on Sundays and work late night on Saturdays. Support from family is pretty important.
8. Lastly, expect to be a generalist. Plan to work on everything - product management, UX design, frontend, backend, infrastructure, documentation, graphic work, video editing, blogging, marketing, sales calls, demos, everything you can possibly imagine to stretch your runway.
I:
- underestimated how much cash I’d have to pour in to get going.
- hate sales. hate, hate, hate with a passion of a thousand ESC keys trying to get out of vi, hate sales.
- didn’t have a shtick or model of what I would do or wouldn't do, I ended up taking a scattershot approach of what I’d work on.
- underestimated how many clients would slow walk payments or outright refuse to pay once work was completed.
- quickly went sidewise with my local city/state regulations and while not fatal ended up being a drag on my attention
- underpriced myself. In an effort to get business I kept either cutting deals or allowed clients to effectively con me into doing more work than they could pay for.
My advice, in light of those mistakes is:
- if you really want to do this, start by finding a consultancy to work for to learn that side of the business. Learn sales. Learn accounting. Learn how to build a backlog of prospective clients.
- Try to figure out what your pitch would be to a client and then try selling that over, and over, and over again. If you detest sales, then you should learn before you make the leap.
- set aside more than enough cash to tide you through the startup phase. Even if everything worked perfectly and your clients pay you on time you may have 60-90 day gaps before payments.
- figure out what your rate would be, and then double it. No, seriously, if only to account for the overhead you don't yet know you need to account for.
- If you are in the US the chances of you working on contract for your current employer are near zero. The IRS will look at that situation and deem you to be an employee. About the only way to make it work is to work through a third party agency, who's now taking 10-20% of your rate to provide a smiling face for the IRS and shuffle invoices around.
The other problem I had was I utterly failed to convince companies to hire me for the work I specialized in (this was early 00's so web site development / web application development). They would prefer to spend $1250/hr on an agency where there was also only one developer working behind the scenes than the rates I was charging.
- Started building my own project on weekends while working full-time last year.
- Personal project got some traction at end of the year (organic growth and good reviews).
- Saw story on LinkedIn of some people quitting their jobs and becoming indie dev and got inspired.
- Added ads in my app and started generating revenue ($1 a day).
- Quit job at end of March. I had saved up about 3-6 years of runway (counting my average daily expenses).
- Joined an incubator by chance, hoping to find a co-founder, but didn't succeed.
- Registered a business (sole proprietorship) at end of May. Only cost around $200.
- Added in-app purchase in the app in June.
- Ran ad campaigns of $500 budget and generated $220 in revenue in June. $140 from in-app purchase, $80 from ads.
- Currently building and planning to launch next project in Aug.
My background is a senior frontend engineer in a big tech company.
Previous job was mostly about managing contractors, interns and some internal experimental projects.
- setup business entity
- bank account
- legal documents
- working with a lawyer to get template contracts in place for customers
- invoicing software to bill your customer
- chasing down your customers to actually PAY you
- SALES SALES SALES SALES (all things related to winning work because it's NOT easy)
- filing state, local, federal taxes
- having to create EVERYTHING yourself (decks, SOW, contracts, web site, marketing materials, and more and more and more0\)
If you don't like Business Admin work - don't go solo. Because going solo it truly 90% admin work, and only 10% "fun" work (and that "10%" is assuming you have a good client)
The stress of always selling was hard. The constant thought of "I could be working right now, but I am sitting watching a movie with the family" was hard. The money was great, but I feel like I lost actual years of my life.
It seems, my friend, solo is not for me. It may be for you. The current macroeconomic climate may make this a bad decision even if it is for you. I wish you well.
The people I saw find real success in freelancing / contracting / consulting had deep networks, often of former employers, where they were basically "perma-temps".
I wrote up my thoughts: https://news.ycombinator.com/item?id=31911728
And then expanded into an essay: https://blog.kowalczyk.info/article/4682085af50b41f88460593d...
Since you're starting from nothing: do web research about freelancing, contracting etc. Use search engine to find the articles, read a book or two, watch a few YouTube videos, take an udemy (or similar) course.
There's a lot of free or very cheap advice out there and it's a bit more information that can be put into a HN comment.
Your first challenge is getting customers so start with marketing yourself.
In those 3 years -
* I've had 4 clients (mostly happy!) - which is a TON more experience than most get in ten years (and future clients want that knowledge!)
* Wrote a book on software development (yay, resume item!)
* Took months off to recharge and sharpen my skills
I truly enjoy the path and can't see myself going back fulltime anytime soon. It is work, however, but more rewarding if you ask me.
You have to sell yourself, need a good network, and you need the right paperwork.
Always happy to chat about it - email is in my bio. I'm very bubbly and don't bite!
I became so disillusioned with big tech that I quit and took an 8mo sabbatical until contract work dropped itself on my lap. I was really lucky that I didn't have to do any selling of myself which everyone claims to hate (I wasn't in the solo game long enough for any of my wells to dry up).
I got my leads from friends working as full-timers at companies looking to hire. They were desperate enough for above average talent that I could negotiate a part time deal: essentially 20h of my week.
I charged about what I was making as a full-timer, but padded my hours. Typically work 2-3hrs, bill for 4. In retrospect, this wasn't enough for no other reason than it was a better deal for them than for me.
I overlapped these gigs for a few weeks and absolutely hated the full allocation of my time. Also the context switch was painful. I'd go from an archaic MSVC++ codebase in a windows VM to an unorganized startup working on iOS/Android. Eventually I quit one and kept the higher paying gig.
I liked neither of the jobs. I was sometimes asked to do more than just fix bugs, like start architecting a way to a modern stack or think about how to integrate a revolutionary feature. But when I came back with a plan, their ambitions vanished. They thought they could get something magical for nearly free.
So I became disillusioned with contract work :) The jobs often exist because an employer wants to pay less than hiring a full-timer to do the job. Or the work they want done is inherently unattractive. It was isolating too since you're never really part of a team.
Ultimately I made the pivot back to big tech. Work is more interesting, I obtain more valuable knowledge. My isolation problem wasn't fixed due to pandemic =\ And I feel a lot more freedom to screw off in the middle of the day when I'm frustrated. As a contractor I felt guilt (or I just never billed for the hours I took off to go on a bike ride and clear my mind).
Good luck! I'd send personal emails to your network of engineers working at small-medium companies that are less flashy and don't have a flush hiring funnel. They always need good folks (you'd be vetted by your contact) and you may have the leverage to set the terms of contract employment.
Established industries with larger non-tech companies have many valuable untapped opportunities, especially as we move to more uncertain times. They will want to make a lot of efficiencies and getting rid of "non-core" work is an opportunity for contractors.
I know many people who accidentally got into lucrative contract roles in pharma because they started with some random 6 month gig that gave them access to assess the landscape. This can be done more smartly by subcontracting with existing vendors. They are often looking for oversight but you have to be comfortable with mitigating the level of devs they are providing to the client.
I did this for a few years and last-year I decided I wanted to focus on a project I've been working on. I went down to a consulting-only basis working 10-12 hours a month. This couldn't be easier for me because I bill them on a T&M basis.
Consulting can be a hustle because you're doing your own sales, marketing, estimating and bookkeeping. You need to account for those factors when you schedule projects and come up with your bill rates.
As job "replacement", estimate on 35-40 weeks a year of billed work, that's what it is with all public holidays, leave, professional development etc factored.
Contractors often make more because they skip these and also work longer hours.
If you need to pay medical and professional insurances it can easily be closer to 25-30 weeks a year billable after expenses, for estimating purposes.
Short term contracts should be 20-40% more to allow for "gaps", in a hot market just another bonus, but you should stash this, if you get it. Also you still pay most insurances during the "gaps" so too many is bad news.
Then if you think you are actually selling some service no one else is around to do, whatever mark-up you can defend. But go too high and you will suffer in a cold market unless you are remarkably good and everyone knows it.
Or if you really know your domain and selling results (instead of direct effort/activity), then "double dip" as we say, do two contracts at same time and double the pay for maybe same or less work if you are lucky.
In the end your client(s) may like you so much that they’ll propose to bring you in full time.
what i can tell you is that being contractor was the worst of three and contracting is just more competitive type of rat race
i suggest you instead to try launching a startup
if you don’t have an idea yet, you can sign up for co-founder matching and meet a someone who does
In general: I have been a software developer for 14 years. I love writing code but I also like to figure out the root of the problem and come up with the best solution. I started freelancing in Germany and continued to do so in the UK and the US.
The initial reason to go solo was mostly feeling based. I imagined being super flexible about what I could work on and wanted to have more time off even though it was unpaid. Additionally I thought I could spend some time to specialize in a field in order to get higher rates and maybe come up with a product idea. I also justified this move to myself with "I at least gotta try it". I was lucky to find a client pretty quickly and enjoyed the networking and finding follow up opportunities.
However a couple of things became pretty clear to me very quickly: the easiest way to work as a freelancer for me was to basically continue to work as a generic software engineer that knows $language for a client 5 days a week and then invoice them. I didn't really spin up additional income streams and I didn't even take more time off.
However there were a few things that kept me from returning into a regular job: The increased income (in my first year my income effectively increased by 50% even though I was doing the same work), the opportunity to switch "jobs" more often without it being perceived as being a flaky employee (this one is kind of a hack but nobody ever questioned why I was only working for 3 months for a particular client).
Things ultimately changed after I moved to the US because the calculation now wasn't only about pure money. I also would have to factor in health insurance cost (in Europe this is essentially the same wether you are freelance or not), there are other benefits like 401k contribution and employee stock buying programs that I needed to consider. But ultimately I was missing working on projects long term rather than just coming into a company churning out code. I also enjoy not having to write invoices anymore or doing a more complicated tax return or figuring out what kind of insurance I need. I am also glad that there is now basically no need for me to do any kind of marketing or sales related work.
In total I had 9 full time clients and a few short term projects (1-2 days). The short term projects were some of the worst days as a freelancer because the project was timeboxed and every time I scrambled to deliver on time.
In general I would say if you are an hourly/daily rate based contractor the only two reasons that I saw as an advantage was: more money and seeing more different projects. If you are willing to put up with the admin overhead of going solo I definitely recommend it, especially if you have a talent or are willing to do marketing and sales related tasks. I suggest however to be honest with the income calculation. If you compare your current job to something like 220 billable days as a freelancer (not unrealistic) you are going to see a big increase. But if you take into account the benefits and compare this to a competing employment offer, the income difference might not be as big.
1. Business Entity
2. Business Bank Account
3. Accountant
4. Invoicing software
5. Contract
6. Workspace
My post[1] includes more detail, and I have also written about finding your first clients as well. Feel free to follow up in this thread with any questions.Good Luck!
[1]https://medium.com/@bobbywilson0/six-steps-to-start-a-consul...
- do generalist software augmentation contracting, where you are essentially an employee but paid better (and fired faster but that goes both ways)
- specialize, build expertise, and do consulting - selling your brain, so to speak, as opposed to providing an extra pair of hands
The advantage of the contracting route is more predictable income, esp. if the projects take months or even years to finish. That's quite common in Europe if you contract for a Fortune 500 equivalent company like Volkswagen. The corporate "digitalization" projects run forever and a contractor can successfully embed himself or herself there for as long as is enjoyable (and profitable).
There are downsides.
First, you do not develop your sales and marketing muscle when taking on full-time staff augmentation roles. In Europe, it's common to get these gigs through recruiters, and so you don't even own and manage your relationship with the client.
Second, it feels like employment because it essentially is. You attend all the Scrum ceremonies like everyone else. Clients expects you to be available during the working hours and has all the other expectations they have for their staff employees.
Third, it's hard to scale this "business". Since you are a staff engineer, just with a different contract, the client does not see you as a consulting partner, so offering additional manpower to the client could be a tough sell.
On top of that, it's easy to just "go with the flow" and accept whatever gig the recruiter calls you about, provided it pays OK. Then, you look back at your portfolio and it's a hot mess!
This has been my experience doing staff augmentation in Europe for 10+ years. I am transitioning away from that, and the journey has been quite taxing, mentally. Like going to gym for the first time in years, only now it's your brain that needs training - it can hurt for a while.
One more point:
I see some people professing their hate for sales.
Actually, you do sales, too, when you sell yourself to the recruiter or your future boss. Sales is inevitable and we engineers better be GREAT at it.
I think sales in consulting can be even enjoyable, and I do love this aspect of the work. It just can't be the "used car salesmanship" type of sales. You gotta listen, really listen to the client, grok their situation and build baseline trust. Then the sales conversation feels more like an advisory session. But to get there, I think, requires building expertise and some level of specialization. How much of either, I am not sure.
Hopefully this helps a little.
PS I strongly recommend following Jonathan Stark of the "Hourly Billing Is Nuts" fame. It's a great antidote to a lot of questionable freelancing advice one can find one the interwebs.