I've moved my blog to jmcneil.net. This is no longer being updated!

Friday, January 2, 2009

Making a Freelance Living?

I've wanted to post about this topic for a while now, though I haven't been able to come up with an approach that doesn't make it look like I'm begging for work! I'm employed and I usually enjoy my job!

I've had dozens upon dozens of conversations with fellow developers regarding freelance software work. Many of them think that it's a fairly trivial process to strike out on their own and simply "freelance." You know, if they could only shake the management overhead, they would make gazillions.

I don't get it.

First of all, how exactly does an individual with a software engineering background find work as a freelance developer?  This has always escaped me.  It seems as though there's a bit of marketing knowledge needed.

I have friends that find work. I have coworkers that keep busy on the weekends. These opportunities seem to pass me by.   Is it a situation where a developer needs to setup an entire corporate facade and pawn himself off as "Synergistic Corporate Solutions" or "Logimental Systems Design?" Complete with domain, eight-hundred number, and phony sales department? Is it a word of mouth thing?

Next, what about ongoing maintenance agreements, bug fixes, and support? All of this sounds like a lot for one dude.  How do you folks out there running one man shops set this stuff up? My first thought is that the amount of money required to fully support someone would require a level of service too high to provide with such limited resources?

Is there even a market for it? I've a second degree black belt in Python-Fujitsu, a small collection of vendor certifications, 12 years of professional Linux experience, and I understand enough of the business voodoo to get invited to the fancy marketing meetings.  Aren't there 45,000 guys just like me out there trying to make a buck on the side the same way? It seems as though it would be a bit of a saturated market.

I'm coming to the end of a two week vacation. I could really get used to working in a home office.  It's been nice to see my kids during the day and enjoy a bit more time with the family. I'm really starting to like not having to sit in Atlanta traffic twice a day (and my blood pressure is thanking me!). My current employer doesn't allow telecommuting so it's not really an option right now.

I guess I'm looking for a good book or similar resource that touches on the subject. Perhaps the experiences of others that have tried to make a living doing what it is we do. 


Simon Wittber said...

I had to get out and talk to people, go to events and conferences. Network with as many people as you can, and eventually some work will turn up. This is a good thing to do while you are still employed.

For example, this effort at webjam won me a job at a local engineering company building robot control software. But only because it was blogged. Blog about what you do.

The biggest challenge is the leap of faith you'll have to take when you quit your day job.

As far as managing invoices and time, use a tool like freshbooks, and be sensible when it comes to contracts. Sometimes a simple letter of agreement will do.

Oh, and never compete on price. I've learned this lesson the hard way. If you are worth $1000.00 per hour, you should charge it.

web site design said...

u r blog Is very nice

Alex said...

I did manage to make a good freelance living for years by first networking a lot, as Simon also suggests, and also by first becoming pretty famous in the technology niche of your choice -- write best-selling books about it, by all means blog (I used Usenet instead), hold popular talks and tutorials at conferences and local user groups, develop lots of open source, etc. This does take the place of marketing and most of the "selling" work and lets you end up with 80% billable hours or more (as opposed to the 50% that's typically the goal for true freelancers).

You still need luck (your favorite technology must be on its way up, ideally there must be demand for some long-running engagements and not just a zillion one-night stands, &c), and in my experience you don't really get to work much from home -- on the contrary.

My freelance experience involved spending more time in airplanes, airports and hotels than in my beloved home office. It may be different if you live in a technology nexus, such as Silicon Valley (where I live now), but even then I'd expect at least as much commuting as a full time employee (that's also what I observe in my freelancer friends around here).

One of the factors inducing me to accept Google's full time offer, besides the company's many charms, was in fact that it cut down enormously on my commuting overhead -- I moved from Europe to Palo Alto, found a home near work, and get to walk to work in the morning.

Face to face interaction -- pair programming, brainstorming design sessions at a whiteboard, shuffling index cards around for planning or roughing things out, etc, etc, is just too productive. I found out I generally get more done in a day face to face with all the rest of the team than in two or three working from home -- and it would be even worse if there wasn't at least that occasional day f2f of touching bases and so on.

Jeff McNeil said...

Thanks guys, that's what I had imagined.

I don't believe it's something just any techie can pull off; it takes a business head, the ability to market yourself, and a reputation to build on. The notion that it's something you can do just because you understand an ORM and a few patterns is entirely off-base.

On telecommuting versus working with the local team; I've had a different experience. I largely attribute that to the fact that I do a lot of operational and sustaining engineering now (which I find somewhat boring). The more operational the role becomes, the higher the number of unscheduled interruptions. If it was a pure go-forward development environment, I'm sure my experience would be the same.

I do very much enjoy team-level interaction, agile planning meetings, iterative Scrum/XP based work, and the integration of testing right down to the core of the software. I've implemented some of that and it's worked wonders.

I'd love to extend some of that knowledge into a project I have more control over or am a large part of.

I actually went through the Google process a year or so ago, but had to pass due to the crummy real estate situation in the US. Couldn't sell the abode in Atlanta in time.