Ask HN: Is it possible to transition from corporate job to self contractor?
Hi all,
I'm a Full-Stack web developer with 5+ years experience and am trying to transition into contract/consulting work. I've read alot of posts on this topic (and _all_ of patio11's blog) but am still struggling to come up with ways to find clients. My dilemma is that I don't want to price myself too low (I can find lots of projects for 20/hr or less), but I'm not sure how to get the larger jobs without doing this full-time.
Has anyone ever transitioned from the enterprise world into contracting successfully? Is it possible to do it over a period of time? (keep current job and moonlight freelance gigs). What did you do to get your initial clients?
61 comments
[ 3.7 ms ] story [ 133 ms ] threadHowever (and I say this not to brag, but as an important piece of information), I only believe this was possible because I was in the top X % (where X is maybe 5? 10?) with respect to my peers. I've seen other people attempt this and fail and it is because they were more replaceable than I was. So a lot of it comes down to where you are located (e.g. supply) and how many prospects there are around (demand).
Over a 1.5 years now I've had about 5 clients (not many), but they all knew me personally beforehand. Your personal/professional network is your biggest asset. Use it.
When you say you were top X% , was that in a specific tech stack or niche industry? I'm really good at certain tech stacks (JavaScript world - Node+React+AWS, or Java/Scala world - Spring, Play, etc..). How do you actually find work that will help you "level" up, per se. And more importantly, show others that you're an expert in the field? I can do _awesome_ work for some people but it might not be broadcasted to the rest of the world if it's just known internally.
When I say top X%, I don't mean in a pure technical sense. I mean in the sense of, from management's perspective, if they had a project that they valued highly and knew they wanted to deliver on, who would they pick as the technical lead for that project. Which technical person would they put in front of the customer? Who would they want to be alongside them during the hiring process to find more technical folk? Those are the ways in which I've found I've been valued. I feel like I am a good programmer (who doesn't?), but I'm not the best programmer in the room. It's a more rounded skill-set and a willingness to do valuable non-programming things. A perfect example is a guy I used to work with - excellent programmer and very well-versed in computer science (whereas my background is engineering). In terms of speaking about best practices, patterns, development philosophies, etc. - he was very good, better than me (truthfully some of that stuff bores me). However, in terms of getting a project done in a high quality way, with predictability (estimation, scheduling, etc.), those are the things he didn't really care for, but I paid attention to. He's a great programmer and a good asset to any organization with a team, but I don't think he's do well on his own. Make sure you are confident in your estimation skills before going it alone.
I think the prevalence of story points, and probability based estimates(markov), proves that hard deadline estimates just don't work. I don't trust anyone who says they can actually do it on large projects, because they're either padding or lying.
It takes a lot of discipline and detailed time recording to get to the point of being able to accurately estimate a task. Padding becomes useful when you know that you always estimate 15% low. Then after you finish your "real" estimate, add 15% and you will be close to the actual value.
I like to think of the estimation process as being analogous to Feedback Control theory. It requires good input data and negative feedback to stay on track.
What makes software estimation so difficult is that it's like maze. How long will take you to complete a maze?
You don't know what's coming up in a maze, and you cant give an exact estimate. And trying to work out details to work out what is coming up, takes almost as long actually programming it.
This is why I promote the idea that variation should be inbuilt into methodology. Remove the assumption software can be accurately estimated, build methodology around the fact it's hard to predict.
I use guestimates of 'effort', but I don't hold people to it.
I think you've imposed an unachievable standard here.
This is why I promote the idea that variation should be inbuilt into methodology
This may well work within an agile team deep in an organization, because the business of turning "effort" into costs is abstracted from you. At the end of the day, if you're a consultant with a client, they are going to ask you up front for a rough cost estimate. If you can't estimate the time you'll need with any level of confidence, how do you propose to land their business?
There are various points on the predictability curve. I used to work in an environment that was extremely predictable: projects with well-defined scope that took years to complete and changes were tightly managed. If scope changed, the stakeholders understood the cost to the schedule. An environment like that is perfect for using past time estimates vs. actual time taken to estimate future similar or dissimilar-but-related tasks.
In other environments I worked in, it's more chaotic. Things change frequently, so estimates change frequently. Often you your long term vision is compromised by firefighting, so that vision has to be adjusted constantly. If you have a deadline, then tasks need to shift to meet the deadline.
Find an acquaintance who already runs a consultancy, and arrange to subcontract for them for odd-jobs, or take a 2-week vacation and spend it on one of their projects.
Do you think it's frowned upon to cold-email people that you're only vaguely acquainted with? Say for instance, I make a very politely and concisely worded email, asking them if they have any extra work that they could off-load.
Consulting is all about networking... odds are very good you'll get far more work via referrals than through bidding or similar processes.
The quicker you can build up that network, the quicker you can start building up that queue of projects, and in the meantime, it's a good way to find someone to sub for while you get yourself started.
This might be a bit more difficult as a moonlighter if you don't want your current employer to know you are moonlighting, but recruiters and agencies will find you.
Once you get a few projects under your belt, you should start making connections to get work referred to you - other contractors who aren't available will refer people to you if they know you do good work.
I know lots of contractors who pass off work to others and rarely (if ever) have to approach people to find work. They turn down more work than they can handle.
TLDR: make predictions about the future, specialize, be right.
Edit: I post in the HN whoshiring freelancer threads and potential clients reach out to me, for example https://news.ycombinator.com/item?id=9998249
Edit: I have a friend who does wordpress freelance for local small businesses, her business is extremely different than mine as is her story, there are many approaches that can work, the key is to understand your market
Related: do you lose sleep worrying if you're going to have to transition to mobile development or something? I suffer from that all the time - the cure is probably Real Clients Paying Money...
How do you do that? Do you just look for people hiring for javascript devs and then reach out and offer consulting instead?
[1] https://news.ycombinator.com/item?id=10492088
[2] https://news.ycombinator.com/item?id=10492087
Edit: formatting.
Consider doing some of the "low paying" but readily available work to get started. This looks to me like a problem you are inventing -- the work is available, you just don't want to take a "paycut" to get your foot in the door, even though it would actually be extra money since you are still working full time.
There is nothing wrong with saying "I only want to make this transition if it meets thus and such conditions because I am basically happy where I am at, so it needs to flat out be an improvement of my current situation or I am not interested at all." But that isn't usually the position these people take. They usually express extreme bafflement and frustration at how impossible it is while actively throttling any hope of success because their expectations are simply too high.
All I am saying is "Well, you actually can start doing side work right now and are choosing not to. First, recognize that it is a choice."
The OP can make that choice if they so desire, but people are usually happier with their lives and also more effective when they recognize that, no, really, they are making a choice. Doors aren't actually barred and locked to them. They just don't happen to want to go through the ones that are currently open and do not feel compelled to because they are pretty comfortable.
Not everyone is that comfortable. Sometimes, people who are comfortable fail to recognize that is the actual problem. They have no perspective. I am just offering perspective.
"Duke Nukem Forever" comes to mind. The company was fat and happy. They didn't really need the money. So they dicked around and dicked around and dicked around forever, until it became a running joke in some circles.
It does you no good to try to find mom and pop shops that need a small brochure website for their little restaurant with a budget of about $100 for the website... unless you find several of them at a time and can build up a lot of work that way. Customers will pay more if their budget simply allows for it. I've priced myself out of even enterprise contracts / FTE jobs at rates that most people in the Bay Area would balk at, and those are generally pretty bad contracts to be on. For example, I know of a enterprise companies budgeted such that they can't even afford to pay $75 / hr for someone with a highly sought after skillset in a critical leadership role but are willing to shell out $500k+ / yr to vendors for random software? Waste of time almost always if you want to grow with those kinds of penny pinchers.
Most recruiters on LinkedIn I've seen in my subgraph are talking about really poor contracting rates for gigs that I know typically go to consulting companies at about $130+ / hr but these spammed contracts are for $40 / hr people that know VMware (with VCP!), OpenStack, Chef / Puppet, 2+ scripting languages, have actual experience in production environments, be the helpdesk for everything, and are willing to do on-call with this stuff. What kind of companies are these that think they can find someone like that?
I did hear a recruiter near my desk once that he had a position for a TS/SCI cleared sysadmin job with RH certs and CISSP in the DC metro area for... $45k / yr in 2013. What the hell, I think janitors with TS/SCI get paid more than that and it's starting to skirt close to what background investigators get and they're among the lowest paid high-clearance individuals ever.
Brennan's book is mind-expanding, especially for someone who doesn't have any clients at all.
For the record, I just finished my first 12 months of independent work and it's been amazing. It's definitely possible.
Could you please share more? What kind of work, how many hours a week do you work and the like?
Over the year I've also taken on Django and PHP projects as they come up, but going forward I'll probably stick with Rails.
I actually wrote a book about how to handle the business side of freelancing, but that's not super relevant to what the OP is asking. Here's the link if you're interested anyway: https://www.petekeen.net/handle-your-business
At some point you have to commit to what you want to do and do it. There's some good suggestions in this thread for finding your first full-time gig.
One thing that I want to point out is that before you make the leap, you should save at least 3 months of living expenses. Most contracting gigs I had were billed at the end of the month with net 30 terms. That means from the day you start, it will be 60 days before you get paid (and net 45 terms are not unheard of, which is even worse). The key to successfully transitioning to contracting is to be able to make up that 2+ month gap in income.
Having savings is also important because you will rarely find yourself 100% utilized, so you need to be able to survive the lean times between contracts.
$100/hour.
My eyes bulged out my skull. My highest fulltime salary to that point had been $120k/year (about $58/hour). My wife has benefits so it seemed like a fairly small risk to jump out of the fulltime pool and try my hand at contracting.
I've since been freelance-only, getting as much as $180/hour for a 6-month commitment. I haven't been unemployed at all during that time. It's just been word-of-mouth. In one instance an ex-fulltime employer needed someone to come in and work on some code. In another a previous co-worker at a fulltime gig recommended me to just consult on the codebase and that led to my current gig.
All positions have been work-from-home except for the first one, that was about a 30-min drive 2 days a week.
I'm a full-stack dev, Ruby on the backend (almost 10 years experience with Rails). I'm not too shabby a designer, either, so I'm lucky that I can kind of fit in with any dev team or become a company's sole development resource if needed (which is my role at my current gig).
My advice would be to hit up several recruiters and get them looking for jobs for you. At one point I had 3 separate ones hitting me up for positions on a daily basis. They only get paid if they get people hired so they're very motivated to find you a job ASAP. I always figured that becoming freelance meant you had to spend your days marketing yourself, schmoozing people on LinkedIn, etc (all stuff I hate). It's turned out to be nothing like that. When you're a month or so from the end of a contract let the recruiters know you're available and the offers come rolling in. In my experience, at least.
Would be really cool to bounce a couple questions off of you :)
Not sure if that $100/hour was a 1099 type rate or a W2 type rate.
Either way, it does still likely beat your $120k/year salary, but perhaps not by as much as you think.
Either way (1099 or W2), you aren't getting the benefit of any company paid medical, 401k, paid vacation, sick days, etc.
If it happens to be 1099, you also have to account for the self employment taxes you'll have to pay.
Using a spreadsheet I keep around for this purpose, assuming $120k salary with $600/month worth of company offset health insurance, a 100%-up to 6% salary 401k, 3 weeks vacation, and 10 paid holidays...the 1099 equivalent to $120k/year would be $80.90 per hour.
Or in short, for anyone considering making the move, don't forget to calculate the benefits that come with full time employment before you set your rate.
* work for free, or work for a lot, but DO NOT WORK FOR CHEAP. What is meant by this is that your rates should reflect not only your value but should force your client to respect what you do. They very easily dismiss what they don't have to pay much for as a commodity. (I've seen this idea from many people in different forums, but I don't remember who/where I read the phrasing above.) If you work for free, ensure your "client" understands you're doing them a favor. In my work, what I mostly do "for free" is take a meeting or provide some advice. I almost never do actual work for free.
* your network does all the heavy lifting for bizdev. Go to your meetups. Write a lot. Become an expert at something, even if its a kind of niche area (even better if it is, actually) because the people in that niche will become your most reliable source of referrals. The meetings you take and advice you give for free will lead to work over time.
* Have a cushion in your bank account. Calibrate your working week to about half what you think is reasonable (e.g. plan on working 15-20 hours a week and set your rates accordingly.) all that extra time is great if you can bill it, but things come up.
* Don't take bad work. The first thing I do when I meet a (potential) client for the first time is hear the 10k-foot view of their idea. Then I tell them what it is I do, and that primarily is talk clients out of hiring me (or anyone else) because their project is A) just plain bad. or B) not ready for development. (I usually look for a tactful way to say those things!) Sometimes I'll work with them to shift the idea into something I think could work, but those are almost always conversations that end with "call me when you're ready." They usually appreciate the honesty and me not taking their money. I appreciate not wasting my time with a client who isn't going to end up having money to pay me with.
* Do your best to help potential clients get their needs met, even if that means referring the work somewhere else. If the job is too big for you, don't try to bite it off. If its too small to waste your time with, don't take it. But do try to find someone who can help them if its not you.
This is what worked for me—lots of other people have had a lot of success with other paths.
Look for companies that have contracts with others for short amount of times. The more they send you on jobs, the more website you work on, and the richer your portfolio becomes.
Once you have a good chunk, it is much easier to get consulting work. Sometimes companies I have worked for a month or two contact me directly for more work and a higher rate.
The more items you have on your portfolio, the more people will accept your rates.
I don't think OP cares about your success. Focus on the answer please. Signal, noise, etc.
Patrick started to answer this on his Twitter feed if OP is interested:
https://twitter.com/patio11/status/661998764119363584
I for one will not be disclosing my personal success story.
Yes, but you may need to pick a different job as an intermediate step: find a job that will let you interact meaningfully with wider open source communities.
The recipe is deceptively simple: (1) build things, (2) tell people about it, (3) repeat. You need a job that lets you do step 2.
I will also add that projects around "20/hr or less" are not just quantitatively too low-paying, they are qualitatively the wrong kind of projects. A $300/hr consultant is not just a more expensive version of a $20/hr web developer -- it's an entirely different job.
The actual technology layer involved in either case might be the same, but the "interface" between you and your clients is different. The high-priced consultant exposes a much higher-level interface that is closer to the business problem domain.
You need to solve business problems that people don't necessarily know how to solve by themselves. Generally you do this by applying your technology expertise, but that is not what matters to the client.
Don't model your business on the freelancers at oDesk. Model it on McKinsey, Accenture, Bain, etc. Look at how those companies describe themselves. You will necessarily be operating at a smaller scale than them. But that still leaves an awful lot of room.
One key point is that the client does not hand you a spec to implement. The client only has a problem, they don't know how to solve it, or are unsure of how to decide. You come in and teach them what's possible and then help them do it.
I find my clients through networking. Mostly it starts through people who know my open source work and appreciate that I've been helpful to them already, but also some random meetings with entrepreneurs who were looking for technology advice. From there, one project leads to another as people talk to each other or change jobs.
Thanks for mentioning this comment. I didn't think to do this, but I'll start reading a bit on these companies and try to model myself a bit more like them.
I know a lot of full stack engineers that are IIS > ASP > HTML and cant find anything, while other friends that are Linux > PHP > > JS >HTML/CSS are drowning in proposals right now.
Finding a steady stream of consulting work is never easy. Some consultants rely strictly on referrals, while others take the paid route and drive leads via PPC or email marketing. There are obviously other routes such as forums and job boards.
One router I see a lot of consultants taking right now is blogging. Blog about the projects you are working on and turn them into a live portfolio. Market your github profile.
With 5 years of experience if you truly are a full stack programmer (with decent communication skills) you should have no problem at all finding work. Good luck!