> 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.
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)