In order to build a regular cash flow to gain some stability with your income, the first step is to choose what kind of clients you'll be looking for. The ideal goal is to find clients that will come to you on a regular basis for the same kind of work. With this kind of clients the time spent looking for new clients will reduce as time goes, until it even becomes unecessary.
The idea client looks like this :
- Has a long-term project or multiple projects
- Needs the same kind of work done on a regular basis
Most clients that fit these criterion are either big businesses working constantly on their online presence or online campaigns, or agencies outsourcing a part of their work to reduce cost/improve margins or to deal with work overload they can't handle internally.
While the first ones are difficult gigs to land when new to the game, the second ones may be easier to attract, assuming you're proposing the right services, which leads to...
Not all steps in the creation of a website are perceived of the same value, especially from the perspective of an agency. Some tasks require specific skills or are the main selling point (design or development using a specific tool/following some specific requirements) while others are seens as time/money wasting steps that are still required.
Another interesting "niche" are tasks that are needed frequently enough to generate an actual stream of revenue for you, but not frequent enough to justify a hire by the company. They include rare client requests (flash lately, medium to expert JS related tasks, accessibility, SEO and such) or high level of expertise on a specific subject (plugin development for a CMS, large app development, ...).
Here's a short non-exhaustive list of value-less tasks
- Generating proposals for prospects
- Integration (psd to html)
- Site building with some CMS
- Design declinaison of tertiary pages
These are ideal services to propose to businesses looking for people to outsource some of their work to because the client won't ever need to know someone else did it, the end client probably doesn't even know this is an actual step involved in building their website, there isn't much end client-validation required for the agency so they won't feel like your failure to deliver the standard of quality they deliver will make them waste more time.
From my experience, the easiest is psd to html services. The pages are already designed, you'll just code them or eventually turn them into a template for a CMS, it's either done right or wrong but there's pretty much no grey area in between, it's really easy to manage for your client.
The good thing is that you can have many different ways to find people. I found most of my clients on IRC, Twitter, GitHub or some forum, simply by helping people, showing them I knew what I was doing, and eventually at some point proposing to do it for them.
A really easy way to do it is also to just shoot an email to a bunch of agencies near you to simply let them know you're available if they need it. Some won't care at all, some will note that for later if they have a rush, a few might already be in a rush and be like "waw, didn't think of that but yeah, that'd help", and other will even think about how getting you to work on stuff would allow them to make more money...
Be smart and send a batch of email doing some A/B testing, there are a lot of variables you can try and so many email addresses available online you can craft the perfect email ever quickly and generate tons of leads !
The main rule is KISS : Keep It Simple Stupid. Your best clients will be agencies that take you into account right as their sale process starts with a new lead. They know they'll be working with you on project X if clients agreeds to the brief, you're kind of part of their team, regular income, blahblahblah, don't need to explain, that rocks.
But for this to work, they must be able to know precisely how much you'll be charging them pretty much without asking you. So give them some kind of back of the napkin formula to know how much you'll cost. X per hour multiplied by 8 hours per page, or something like that. Obviously it won't fit the time it takes you, some websites are easy to code, others are more difficult, it takes longer, but you're not giving them a final estimate here but a rough estimation, which will enable them to send an estimate to their client, get more details, etc etc.
There's no ideal hourly rate. In the US a legally established experienced developer can easily go as high as $100/hour, starting at a third of that for a beginner is probably fair, it's really up to you and you want a price rate you're comfortable with so you can stick to your guns when asked to charge less or whatever.
Your main competitor when outsourcing remotely, is going to be comparaison with indian guys. They're cheap (as low as $3/hour for some of them) and since we focused on services with low perceived value, price will matter to your clients.
You can go either way when asked why you should be picked instead of someone much cheaper, here are a few ideas
- Language : issues communicating and being in really different timezones is problematic for communacation, this is an advantage
- Quality of work : ensure you'll be doing handcrafted work, following best practices, adapting to specific requirements and basically taking care of the tasks you're given
Do not ever go with either of these arguments :
- Faster : you're not, they can work 24/7 and be 22 on the same Html file, you're slower, and it's okay
- Cheaper : don't even try or you'll be starving soon
- More Flexible : that might be true but don't show that as a good side or it'll be abused, be flexible later (see "being a good freelancer")
An alternative solution is to propose to your client to go with the indian guy. Let them do so, and later see if they were satisfied. Either they will, in which case let it go, they didn't want quality work or they've found some awesome indian guy (I'm sure there are some). If they're not, they'll have lost some money already, because the job poorly done needs to be done all over again, but they also wasted time on their timeframe, they need it fixed soon, and you told them it'd go this way, because you know, because you're good at what you do. Congrats, you just got a gig, easy !
Once you've been accepted by your client to work on one of their project, you want to establish a trust relationship from the start, the idea being that you want them to contact you again.
It might be the first time they outsource anything, and they could easily be scared it'll backfire. Let them know what you're doing, how it's going, show them some screenshots if needed, ensure they know all they could want to know to not worry about you getting a part of their job.
You should know precisely what is expected of you, and you should deliver exactly that. A minor failure and they'll never be sure you've done all you were supposed to do the way you had to. Don't let them wonder if you'll do a good job next time, perfection is a habit, always be perfect.
They have a deadline, you should help them respect it, not the opposite. Deliver on time, no matter what. Let them know as soon as possible if a deadline is too short, or if it'll be difficult and do your best to make it work. If you warn them soon enough, they can figure something out internally or with their client and it'll be fine, if you still manage to deliver on time, they'll be grateful for it and appreciate it a lot.
Sometimes things go wrong, you're stuck, something comes up and you can't do what you had to. Make this as rare as possible, but yes it happens. In that case, be clear about it, ensure they'll be able to find a way to deal with it, give them suggestions to fix your mistake.
Don't just disappear, don't pretend it'll be okay until due day when clearly it won't, be responsible and tell them. If you can find a way to fix it they'll be happy, if you can't they'll figure something out and eventually contact you again later if you've had just one minor issue once.
Once you've worked with an agency, you want them to contact you again. It's actually rather easy to do so due to the nature of your client : they always do the same kind of work, and the more they do the more they earn so they're probably hoping to need you again.
When a project is over, let them know you'd like to work for them again. No discount, no bonus, no whatever, you'll just be happy to collaborate with their team whenever they need it. You can even ask if they already know they'll need you on something, maybe there's a project they could actually use you for and they didn't think of it yet, you could already be taking information about your next gig even though the first one just ended.
If you still haven't, make sure when the project ends, you have IM contacts with someone that manages project. It can be the boss of a small agency, some Project Manager, one of the developers, it doesn't matter. Have them on IM and once in a while when they don't contact you, send them a friendly message asking how they're doing, if the client was happy with the work they did, catch up like you would with a friend. Eventually, let them know you're still available if they need some help, but don't be pushy about it, keep it cool and friendly.
These kind of tasks are not the coolest ever, most of the time it'll be boring, you can find some fun in it but it's probably not why you decided to do programming as a job. But it's okay, you can use this time and these projects to build yourself a nice portfolio for later.