I have 9 years experience, and if I were to to go into freelancing (The kind where you solve problems for businesses, as opposed to the kind where you're a 9-5 1099 contractor), the first thing I would do is to take a job at a consulting firm, and spend my time there learning. Figure out what works, and what really, really doesn't.
That job is probably going to suck, but you'll have a much better idea of what to do, what your customers really hate about working with big firms, and your resume will look much better, when you can put down "I did the thing I want you to hire me for, in a consulting firm, for 18 months, I know how this works, and I can do it better."
Working as a consultant will also let you build a network that you can use when you want to go independent. Obviously you have to be careful not to poach from your old company, but often there are side projects and jobs too small for a large consultancy that are a good fit for an independent contractor.
When I was a consultant I considered it a slight failure if I didn't get a job offer from the client at the conclusion of each engagement. I never took any of them up on it, but if I'd been in the market it would have been a hell of a way to basically get paid for an extended job interview... and lots of people I know who decided to get out of consulting went over to the client side. That's a pretty standard path, really.
I have to disagree.
I've worked for several tech consulting firms(8 years of experience) and then started my own consulting company 2 years ago. And in my running a successful consulting firm involves 3 key skills(in order of importance).
Sales - This is definitely the hardest and most important skill. And unfortunately is also the skill developers usually have the least experience in. This involves finding leads and closing deals. This will take a long time to do and is emotionally very rough for most developers.
Customer/Relationship Skills - If you're already a nice a polite person who doesn't mind eating the occasional shit sandwich this mostly involves repeatedly learning the lesson that however important you think communication it's more important you think.
Execution - This is mostly involves a combination of being able to correctly identify requirements and technical execution skills. Most developers usually have plenty of experience hear.
The experience most developers lack is sales. And most consulting shops won't put you anywhere near a sales or account management role unless you have previous sales experience or have spent significant time at the company. A much faster route to learn these skills is to just start a company and start doing them. (while reading a bunch of books and talking to anyone you can who has relevant experience)
How do you think a fresh-out-of-college junior with less than a year of experience going to be at execution?
Knowing nothing but that, I'm going to take a statistical guess, and say: "Probably not great." I'm going to make another statistical guess, and say: "They probably don't even know what they don't know."
Also, joining someplace that's not consultancy-focused (like Google or Facebook) isn't necessarilly going to help with building relevant experience.
Yes, you're going to learn a lot about how to move protobufs around from one distributed system to another, and how to do on-call, and how to work in the cloud.
No, this is not the most useful set of skills to have, when the insurance broker down the street wants to pay you $XYZW to build them a custom SalesForce widget.
> Also, joining someplace that's not consultancy-focused (like Google or Facebook) isn't necessarilly going to help with building relevant experience.
It's soo much more important to have worked for one of these companies. If you have Google on your resume it will work magic. Clients love that. It'll help with leads, it will help with negotiation, and it will help close deals.
Honestly the two things I wish I'd done before I started my company was work for amagoobooksoft and put in some time at a sales job.(cold calling or some type of lead gen)
There's no way I would have known where to begin if I had just set out on my own.
If you have a relevant degree, why not to apply for a remote job position instead? That would help to build your CV, and allow to switch to contracting later on.
Angel list might be a place to find remote AND newbie friendly jobs.
I started trying to freelance online, with little success. When I mentioned to a dentist that I was freelancing he asked me to fix his old website. A small store owned by a friend asked me to make a website. Later the dentist asked me if I had cards to give to a friend.
About 75% of my business since then has been word-of-mouth. The rest has been me contacting local businesses that don't have websites. Business cards and flyers are supper cheap.
That being said, after three years, I'm only now starting to feel comfortable. There were very long dry spells, in between short periods of intense business, and word-of-mouth takes a very, very long time to operate (hence me reaching out to businesses without websites). I had to depend on my wife financially for stretches. I've also had to learn design, which is a much different skill-set to programming and has been very difficult. The main reason I went down the freelance path is because in my last salaried job, my boss developed substance abuse issues and unpredictable behaviours, which lead me to having a burnout. It's been hard but it's gradually starting to pay off. For all the difficulties, it is much more rewarding than watching all the value I generate go to some guy with a business degree who got through college doing elementary algebra.
Anyway, that was a fun rant, hope it was helpful to someone.