Posts / October 19, 2010

Lessons From A Freelancer

I had the pleasure of speaking this past weekend at Saskatoon Barcamp on Lessons From A Freelancer, here’s a summary of my talk.

So, why become a freelancer?

For one, it allows a flexible location. I made the transition from employee to freelancer four years ago, when my wife (fiancee at the time) moved away for school. We knew that she would have May, August and December off each year, for which we’d probably return home. However, not many employers are too keen on you taking three months of holidays, so I began freelancing out of necessity. This has allowed me to work remotely for clients in Seattle, New Jersey and San Francisco while I was in Halifax, or most recently to work for organizations in London and Nairobi while living in Saskatoon.

Two, it offers a flexible schedule. For example, if you are not a morning person, you can choose to start your work day later. Or, if you need to do other stuff during the week, you can choose to work weekends instead, it all depends on how flexible your clients are. For example, last spring I worked Monday, Tuesday and Wednesdays for a Halifax company, and volunteered Thursday and Fridays for two other organizations.

Three, you can choose your clients. As an employee, you often don’t have the luxury to choose your boss, but as a freelancer you choose who you work for and more importantly, who you don’t work for.

Four, this also means you can choose your work. I love the mobile space, so prefer mobile projects over web-based ones. I am also particularly interested how mobile applications can help disadvantaged groups, so for the past two years have favored helping social good initiatives over corporate clients. As an employee, it’s common to get moved to other teams, for example maintenance. As a freelancer, you have more control over what kind of stuff you work on.

Five, you can set your wage. If you have a skill set that is in demand, you can often negotiate your wage with you client. However, I find there’s somewhat of a compromise between your wage and the kind of work you want to do. For example, I’ve often chose lower paying contracts that I find interesting, over higher paying ones that are less interesting.

But being a freelancer is not all good, working from home is both a blessing and a curse. For one, there’s isolation when you work at home, sure you can wear boxers and bunny slippers, but you can’t have a conversation over the water cooler or bounce an idea off a co-worker. Last year in Halifax, I was fortunate to have the opportunity to work one day a week from The Hub, a shared workspace for freelancers. If there is a co-working spaces in your community, I highly recommend you try it out.

Having a non-steady income has probably been one of my biggest challenges being a freelancer. Gaps between work means gap between income, and delayed payment by clients just add to the problem. Unfortunately, phone and power companies still want to be paid on a monthly basis, and surprisingly, will cut service when you don’t pay your bills (who knew?!).

Freelancing definitely requires more bookkeeping. Collecting receipts, time tracking, submitting invoices and filing taxes are all very time consuming. I love developing and I love creating great software, however I can honestly say I don’t really love bookkeeping.

Unfortunately there are no benefits being a freelancer. Dental, eye and other medical coverage are common for most employees, but as a freelancer, you might end up like this guy getting your cavity filled on the street. Hopefully you can take advantage of medical coverage from your spouses employer 😉

And finally, you have to find your own work. Once you build up a reputation and have a few clients under your belt, work may start coming to you, but for the first while you really need to be aggressive in finding clients. Note, holding a cardboard sign on a street corner might not be your best option 😉

Which leads me to the traits that make a good freelancer. For one, you need to be independent. As an employee, your boss tells you what to work on, and often how to do it. You don’t have that guidance as a freelancer, so you really need to be independent enough to find your own solutions.

Another key trait on being a freelancer is motivation, because if you’re like this guy on the couch, you probably are not gonna be a good freelancer.

And when clients are paying you to come up with innovative solutions, being creative is a must.

And finally, to be a good freelancer, you need to be a good salesman. When you are an employee, you don’t exist outside that company. As a freelancer, you are that company.

Because you really are your own personal brand, which means you need to constantly market and promote yourself.

That could mean handing out business cards while riding on the bus or while standing in the checkout line at the grocery store.

There is also huge value in attending conferences; networking, shaking hands, buying drinks and just meeting people because everyone is a potential client.

Your online reputation is becoming increasingly important. If you’re building web apps for a client, and you don’t exist online, why would they hire you? That would be like hiring a mechanic that doesn’t own a car. Question, when was the last time you Googled yourself?

Having a strong LinkedIn profile has become a necessity for freelancers, the more connections and recommendations you have, the better. While I was living in Halifax, I made sure that I was the number one search result for Windows Mobile in Nova Scotia. If you’re specializing in a particular area, are you the top result in your geo-graphic location on LinkedIn?

I believe the key is really becoming an expert in your area of development, and having a blog is a good way to show your knowledge. For example, if you’re a graphic designer, you should be blogging about Photoshop tips or tutorials on CSS. The people reading your blog could be potential clients.

Twitter is another great way to build your online reputation. Where a lot people use Twitter to chat with friends and post photos of what they just ate, a smart freelancer uses Twitter to share articles and join conversations to help build an online reputation and become an expert in their field.

GitHub is everywhere (apparently even on the deck of the Enterprise!) and it’s quickly become thee online code repository, but it’s also a fantastic way to build an online reputation. Publishing your own side projects or forking other repositories is a great way to showcase your development skills. Imagine a potential client having to choose between you and another contractors, but the other contractor has public GitHub repo’s filled with well written, highly readable code. Who do you think that client will hire?

StackOverflow is another great place to build an online reputation. Not familiar with StackOverflow? It’s a question and answer platform, but many smart developers are building incredible online reputations simply by answering other developers questions. Wanna find a super knowledgeable Hibernate developer? Turn to StackOverflow and see how their peers rated them.

Contributing to an open source project, is a great way to gain valuable skills, get connected to a community and profile your talent. If I was looking to hire a good freelancer, I personally would hire someone thats contributed to an open source community for six months, over a person thats worked in the corporate environment for three years. Why? Contributing to an open source project requires all the same traits that make a good freelancer; independent; motivated and creative, where simply being an employee doesn’t guarantee any of those.

It’s also worth getting connected with a recruiting firm. Although a recruiting firm may take a percentage of your pay, my experience is that recruiting firms can often find higher paying gigs. Maybe companies don’t have HR departments, so turn to recruiting firms to find the best developer for a particular task, and willing to pay for it. It’s also good just having your profile registered with a recruiting firm, because somewhere down the line a client might be looking for your skill set and it might just be during a downtime.

There are a lot of great tools out there, FreshBooks is a great online invoicing system, BaseCamp is great for client communication and GitHub is awesome for hosting your code. One thing to note, many clients will already have their own set of tools, which requires you to be flexible and adapt to their standards.

And finally, a few lessons I’ve learned along the way. One, time estimates are always challenging, I think it’s safe to say every developer over estimates their talents. Although the project could go off without a hitch, there are always unforeseen roadblocks: waiting for client feedback or perhaps buggy third party software. I know some freelancers apply double estimate rule, others prefer to triple their original time estimate. Clients are happy when you can complete ahead of schedule, but not quite as happy when it takes longer than expected, so make sure you give yourself enough time.

For one of my first gigs, a senior contractor at a recruiting firm gave me a very valuable piece of advice. He said, “there are two kinds of contractors. One kind of contractor works twelve months out of the year, and continues to develop with the languages they know. The other kind of contractor only works eight months out of the year, and spends the other four months learning new languages, attending conferences and getting certifications. The second kind of contractor are at the high end of the pay scale, and although the first kind always have work right now, they soon become dinosaurs.” Technology changes so fast, it’s important to stay up to date, continual education is an absolute must for any freelancer.

Billing rates are probably one of the most common questions I get asked by non-freelancers. My rate has varied between projects, but I think the answer really depends on what kind of skill set you can offer, and how much of a demand that is to a client. For example, clients aren’t gonna pay you at the high end of the scale if it takes you a month to get up to speed with their system. (Why clowns? I just thought it was a funny picture)

Invoices and the lag between client payments has probably been one of my biggest challenges. Because it’s natural to have gaps between work, you should bill so accordingly. There is also overhead expenses like invoicing and other paperwork, so it’s important to bill clients enough to cover your non-billable time. I know some freelancers demand a percentage up front before development can begin, I think this is something I will start doing for future contracts.

Finally, one horror from the past. For my first contract I worked remotely for most the project, then went onsite for the last two weeks to wrap things up. We had agreed at all travel expenses including flights, accommodation, car rental, gas and food would be covered, which for two weeks added up to $4500. Well, surprisingly the company that hired me, went bankrupt, and left my travel expenses unpaid. Let’s just say that was a painful lesson to learn…

Did I miss anything? Have any other lessons on being a freelancer? I’d love to hear your ideas 🙂