Becoming a Freelance Programmer (Part 1)

Three years ago I dropped out of being a paid-employee and switched to being a consultant. I’ve had a number of people ask about my experiences as they’re interested in following a similar route. I’m going to write a short set of posts on the subject and I welcome questions.

Articles: Introduction, Successful Freelancing, Talking to People, Making a Sales Call, Books and Resources. First I should set the scene.

Why did I quit my job?

For five years I worked at the MASA Group developing A.I. software for ‘big industry’. Our company sat outside of the dot-com boom and bust, none of our products were associated with the web.

I was well-placed in the UK office as Senior Programmer and I ran projects between the UK and French offices, met clients and planned the technical future of our operations. Life was fun. I had however always wanted to be my own boss…

During the last year of my employment the company changed direction and the UK office was bought-out by my direct boss – the new focus wasn’t so much fun for me. The company had a tricky time figuring out who it serviced and what it offered and after a year I chose to resign and start my own consultancy.

The move was somewhat risky as I had no prior experience at being a contractor, no track record for agencies and no private client list for consulting work. I took out a £7,000 loan – enough to cover several months worth of mortgage payments, and resigned. I had no savings as I’d just bought my first property.

Lesson – you need several months worth of living expenses if you’re going to switch to selling your skills. You either want money put aside or a loan which you’ll need to repay. I opted for a 7 year repayment term to give myself plenty of room (I repaid the loan inside of 2 years) .

Freelancing as a Consultant A.I. Researcher

I founded Mor Consulting Ltd. in 2004 as a 1-man company. I needed a limited company as some of my consultancy clients would only want to bill to a Ltd. company rather than a sole-tradership.

Founding the company cost £250 via an accountant, for note my yearly accountancy fees are roughly £500 (paid after year-end accounts are completed).

My accountant (Bristow Still) made the process super-simple, I had no prior experience in founding a company yet the process was painless and completed in a few weeks with just a few things to sign. Having an account in the same town as you is convenient – visiting them to ask questions and sign forms makes life easy.

Spreading your Name (Marketing!)

The hardest things I found were the fact that nobody knew that I was:

  1. Available
  2. Skilled in certain niches (programming, artificial intelligence, leadership)

The solution was to talk to all of my friends and past associates and let them know about my change in status, my new availability and what I’d be interested in doing. Each email was hand-crafted, targeted towards their business (for past associates) and personal. Never spam your friends.

The response was very helpful and quickly I was offered various pieces of generic contract programming work, often for short term jobs (1-2 months each), all local to Brighton.

The Sussex Innovation Centre is a great example of a useful hub – 70 tech companies, all small, most hungry for extra resources. You can visit lots of related companies and obtain friendly referrals with a minimum of effort – maximising your ability to search for new work.

Spreading your name and skills around is likely to be the most important thing that you do whilst you get established (which could take a year). It is also the most time-costly – I spent 2 months spreading word around before interesting A.I.-related things came my way.

At first I had to be liberal in what I accepted – anything coding related that paid the bills was useful. Quickly I worked to accept only A.I.-related work as that would help to build my reputation, from there I never looked back.

Right now I’m going through a similar exercise with my second start-up and our new professional screencasting arm, a new part of business inside ShowMeDo.

What do you want to know?

If you’ve read this far then you probably have specific questions in mind. Do leave me a comment, I’m interested in answering questions.

19 Comments

  • Miklos Hollender
    If you are not the type who would like "networking" - I mean if you never ever talked more than what's absolutely necessary for getting things done to people except those 2-3 friend whom you have the same interests with, you turn down all invitation to pubs and parties and reply with "how was your weekend?" questions with one syllable answers, hoping to be left alone - then I guess freelancing is not for you? I mean I guess sales and networking is a big part of it.
  • Hi Miklos, some googling suggests that you're moving from Hungary to the UK - I hope the move goes smoothly :-) Freelancing - you need to like networking. Freelancing normally means that you arrange your own jobs so you have to enjoy talking to people as you do that a lot. Contracting - 'networking' isn't so important for coding contracts. When contracting you typically take a contract that an agent arranges over the phone. You do some interviews, you take a contract, if you do well then the agent puts you on their 'preferred list' and you get better contract options. The agent does all the talking for you (that's their job). Hope that helps? Ian.
  • John posted my entry to Reddit: http://programming.reddit.com/info/2tp15/comments which is receiving a bunch of points. Makes my soul feel good :-) Ian.
  • This is looking to be an interesting series of articles, I am looking forward to the follow-ups. Meanwhile I would like to ask you how well spread is the A.I. related work among commercial companies and what kind of things do they usually want that need to make use of A.I. research. I am very interested in this aspect since I believe that A.I. is still a taboo subject when conventional application development is concerned and I think that using A.I. techniques in conventional applications could bring about improvements on both sides. Thanks, Mihai
  • I think I left a comment on a thread on Reddit before seeing this article. ShowMeDo is a great idea. I was playing around with AIML bots a bit and felt one area AI can really help is to tutor students. In fact, I was thinking of developing a couple of modules. How is your AI experience related to ShowMeDo effort? As I mentioned in the other thread, I did watch a few screencasts from ShowMeDo. How do you market the service? I think I heard it from Jeff on Python Advocacy forum and checked it out.
  • Miklos Hollender
    Thanks Ian. I better stay employed then. No, I moved over a year ago. Guess I should clean up the googlable stuff.
  • Miklos Hollender
    I'm a bit surprised AI is still alive and kicking - I remember all that excitement 15-20 years ago and how it got forgotten. Well I guess these AIML agents are something wholly different than those natural language processing LISP programs back then. I wonder why did the industry all but give up on the world's most powerful programming language. Maybe it's that that modern AI isn't really programming the classical sense, you can't really get there by just parsing stuff and checking loads of conditions? What are the practical uses these days?
  • AI is definitely still 'alive and kicking' :-) See for example iLog: http://www.ilog.com/ who have provided AI-based solvers for industry for 20 years and who are still growing strong. My last employer was MASA: http://masagroup.net which specialised in industrial optimisation and military work and the company is now 7 years old. Given the interest I will write a separate blog entry on some of the AI-related systems that I have worked on to give you an idea of the breadth of the industry. Cheers, Ian.
  • Dorai - ShowMeDo is not related to my AI work, it is simply that learning and teaching is a passion of mine (and my business partner). We started ShowMeDo as the web lacked screencasts that were trustworthy for how-to-learn-skills, so we built the site (almost 2 years ago now). There's a short html presentation linked here: http://ianozsvald.com/2007/03/28/5-app-great-inaugral-night/ on the background to ShowMeDo and there are some more entries under the ShowMeDo tag: http://ianozsvald.com/category/showmedo/ If there's interest I can write some of the history on how we boot-strapped ShowMeDo to the point now where we have some family funding? Re. marketing ShowMeDo - mostly word of mouth, I write blog entries and encourage our users to blog about us. I have a 3,000 user news-letter (which I write intermittently) and Jeff Rush and other members of the Python Software Foundation take part in our Google Group: http://groups.google.com/group/showmedo where we discuss ideas, plans, proposals for new videos and try to help our users. Come join us if you have ideas? Ian.
  • Ian, Thanks. I would be interested in hearing bootstrapping stories. That is what I have done with two of my startups as well. I just joined the Google group. I am interested in Education as well. I am a techie with almost no marketing skills (I do well on one-on-one presentations to technical groups but suck otherwise). But I love the work I do and want to get better at things I am not good at. It is nice to follow this and a couple of other threads at reddit where people share experience about their startups.
  • Jeremy Riley
    I consider Makefiles used to build code to be an AI application. And it certainly is different than traditional programming. I do this often on my contracting/consulting jobs. I have come to like contract jobs. People networking is not needed as much as another had mentioned. Often I find that employers are looking for specific solution to problems, and it is enjoyable to fix it even if it wasn't very hard. Having skills to make the business run smoother seems to be in demand.
  • Hi Jeremy. Personally I wouldn't consider a makefile to be an example of AI coding! Makefiles are closer to scripting (sh, bash, little bits of perl or python) than 'conventional' coding (java/c++ etc) but it is still just coding in my mind. For AI I'd talk about things like searching a huge space of possible-solutions to find the right solution to a pattern matching problem, reverse engineering physics interactions through search techniques, dynamic and clever routing protocols for delivery schedules - that sort of thing. I'll write some more about this on the blog some time soon... Having the skills to run a business are certainly (and always) in demand. They are worthwhile skills to have even if you're an employee - you have a much better chance of helping the business to grow if you can ask sensible questions. Ian.
  • Cool, 12 votes on DZone too: http://www.dzone.com/links/becoming_a_freelance_programmer_part_1.html Thanks 'gst'! Ian.
  • Rich
    Hi, Is there a part 2 for your article? I'm wondering how you handled the billing of customers. Did you get paid a certain amount up front and the rest on delivery? Do you have any software suggestions that could be used for billing and other record keeping? Thanks for taking the time to share with us!
  • Hi Rich. There are three parts so far, with a few more to add: http://ianozsvald.com/2007/09/27/becoming-a-freelance-programmer-part-2/ http://ianozsvald.com/2007/09/29/becoming-a-freelance-programmer-part-3/ Billing? I write them an invoice and ask them to pay within 2 weeks (or maybe 4 if there's good reason on their part). They've always paid, so that's always been easy. I've always billed in arrears per month. I don't use software to keep track of things - monthly invoices are easily tallied in Excel at the end of the year, I only ever have 1 or 2 clients on so a simple stack of a few invoices is easy to track. Cheers, Ian.
  • Hey Ian, Great post.After a long time i have come across such a honest account of initiation into freelancing.Kudos to you for narrating it the way it happened and in turn keeping it simple and effective... -Anita CM
  • Hi Ian, Nice post. I also have a similar kind of story. Felt connected while reading. Thanks for writing it. _____________________________________________________________ Rahul Parashar
  • Another way not mentioned here to help build your reputation is to have your few initial clients testify about their good experiences with your work. There are many ways to do it, let them write comments on your website, prepare "success stories" telling the story and accomplishments or have them vote for you in Trust-index to get a plain 5.
  • Oliver
    Working as a freelancer is so much better than being employed. I do all my work from home on getAFreelancer (http://www.getafreelancer.com/affiliates/hiquality/) as they seem to have the fairest payment. As a flash programmer you can also earn money by developing flash games and publishing those on various networks.