The Roundwall Guide To Client Work
Things to consider if you want to do client work.
So you want to consult or you are consulting (I say consult because "freelance" has such a casual and kind of negative/lazy connotation in some places). Traveling down this path means you've decided to trade a more "permanent" position in a company where you can mostly worry about programming with your team for a permanent position in your own company where you now have to consider the business, the finances, the organization, and still program with the team. In exchange for more things to consider, you gain control over these things. Here is a collection of things I think you should keep in mind to help keep your company afloat and make sure your experience is as pleasant as possible.
Not everyone enjoys talking about and negotiating rates, but it's one of the most important parts of doing client work. You are running a business and it's your job to keep that business running.
As much as possible, I avoid hourly rates. They don't fit the nature of the work we do and the last thing I want to do is have a discussion with a client where we argue about exactly how many hours something took. Fixed-price is also a terrible idea. When is the last time you were able to predict exactly how long a feature (much less a whole app) would take to finish? If you agree to a fixed-price rate, too small a number could crush you as you spend weeks beyond your estimate essentially working for free. Too large an estimate and your client might complain and feel cheated. At Roundwall Software, I take one client at a time and schedule each client in terms of weeks. For the weeks they pay me for, they have my attention and I work on their project each day.
You might find resistance from clients who would prefer to work on a fixed-price or even hourly basis. In the 8 years Roundwall Software has existed, only one or two clients could not be convinced after I gave them an explanation why that's not ok for me.
Another thing to consider is that over time you should raise your rates. With each passing year, inflation makes the same amount of money worth less. With each completed project, your experience and value increases. You'll need to increase your rates to adjust for these two changes. In theory you might creep them up, say raise your rates with each project by 3% or so, but my own rate-changes are less organized. Don't let inflation and time hurt your business.
The people who will be hiring you for help will come from a range of backgrounds and have a range of technical experience of their own. Each person is going to need to see something from you that assures them you know what you are talking about. Just as it can be risky or even scary to hire a random plumber just by looking for a phone number in the phone book, few people will want to hire you from nothing.
To help attract customers, it's good to build up a collection of example work. Probably your last client/employer won't let you freely share all the code you wrote on your last project, so you'll need to think of a way to make up for this.
For some clients, simply hearing that you've worked with other people they know or have heard of might be enough. For others, reading blog posts you've written explaining a technical thing or seeing a talk you've given about a technical thing will do the trick. Building up this kind of work is good for most people, even employees. As a consultant, you'll have time in between clients (unless you're swamped which is great). With that time, you should be doing these things.
I ignored this advice for the first years of my career and did not write and did not make any apps or libraries or example work on my own. This was fine just after college when I would rather be skating than working anyway, but in the long run I slowed myself down. Business became much better as I wrote, spoke, and published work people could see.
Client projects can generally be grouped into two categories: one where you (and people you may have hired) handle the project completely and one where you join the client's existing team to help them with their project.
In the case of these "solo" projects, you'll want to make sure the lines of communication stay open. It can be tempting to retreat into a cave and be silent until you emerge with a working app to deliver to the client. This makes clients nervous and can often be bad for you. For projects I run like this, I provide the client with a build of the current state of the app at least once per week, if not more. Frequent communication and frequent updates give the client an idea of where the project is going and invites the client into the process. This way there's less surprises when the project takes longer than expected and can often prevent projects from going too long. It's important to remember that if your client fully understood and knew exactly what to do, they wouldn't have reason to call you. It's up to you to help them understand, not just to produce code.
For other projects, you'll be joining existing teams, maybe as the only developer for your platform, to help them finish a project. In this case, you'll need to participate in their planning meetings, speak up when decisions aren't good for your platform or the users, and make sure they don't forget you exist.
One of the joys of consulting is most of your work can be done at home or at your own private office. Since you'll be communicating with your client through things like Skype or Google Hangouts, it's worth taking some time to make yourself look better by setting up a better microphone and possibly a better camera. The built-in microphone on your computer is a hilarious joke and will make you sound like you're in a wind tunnel under a major highway. Even a 40€ USB mic would make you sound much better. I personally have a fancy audio interface and just got a fancier mic that makes me look like a radio personality, but going that far is not necessarily needed. Have something better than the built-in mic for as many calls as possible.
The built in cameras on computers these are old. For less than 100€, you could replace this with a 1080p USB web cam and look even nicer when you're talking to your client. Even if your client does not explicitly acknowledge your efforts to look and sound better on calls, their perception of you will be influenced and you'll be seen as more professional. Considering the kind of money even a fairly junior engineer can charge, I think this is a great investment for everyone who plans to work remotely ever.
This isn't necessarily everything you need to consider, but these are the things I think many people are not considering and should. If you're getting started, talk to other people who run a business and see what they have to say as well. Feel free to email me as well if you have more questions.