Insane sprint cycles? A backlog resembling the seventh layer of hell? Ready to choose your own projects and work on use-cases you actually care about?
Time to become a freelance developer.
But getting on your feet and bringing in the dough as a new freelance developer isn’t all peaches and cream. There will be challenges to overcome and areas to grow into. Some of the most important will be:
- Building your clientele
- Choosing your clients
- Operating as a business
Before we delve into helping you conquer these challenges, let’s first go over some basic expectations of a freelance developer career.
Realities of Life as a Freelance Developer
Since you are considering being “reborn” as a freelance developer, we’re assuming you’ve done some background research on the benefits and trade-offs your new life will bring. If you haven’t, don’t worry, we’ve done it for you.
Not So Great
- No fixed income
- Provide your own equipment
- No health insurance/retirement
- No paid training
- No paid vacation
- Schedule flexibility
- Creative freedom
- No office politics
- Unlimited earning potential
If you are transitioning from a full-time salaried position, as a freelancer, you are going to be dealing with a degree of risk and uncertainty (at least initially) that you are not used to. Depending on your success finding clients, your income may fluctuate month-to-month and you will need to hunt down your projects instead of having them land on your desk. There will be no colleagues to hold you accountable for deadlines and you will have to be self-motivated and proactively collaborate with your clients.
To get some better insights from folks who have been down this path before, we reached out to seasoned CodementorX freelance developer, Dave Sullivan, who said:
There’s a false sense of security with a full-time gig, and if you’re a risk-averse person, it’s really hard to wrap your head around throwing that away for freelance work.
When you need to acquire some new skills to continue growing in your career, you will need to take the initiative and make the investment independently. Likewise, no one is going to see to it that you are putting money away for your twilight years or setting you up with good healthcare. You will be completely responsible for your career development and arranging your own safety nets.
However, as Dave put it, “with great risk comes great reward.” As a freelancer, you are just that. FREE. Free to work the hours you want and free to choose desirable clients and interesting projects that quench your creative thirst. Free to set your rate as you see fit and to work from home, a co-working space, or the islands of Bocas Del Toro.
Ready to work from the tropics? Not so fast — don’t book your beach bungalow just yet. A freelance career is very enticing, but you’ll want to have some experience under your belt first.
Ideally, you will have worked as an in-house developer or with a software development agency for at least one or two years. Beyond this, you will need some proof that you can, in fact, do what you claim you can do. This should come in the form of your resume, an online portfolio or personal website, references, and testimonials.
Your developer resume should serve as a description of your relevant professional and personal background, along with certifications and educational credentials. Your online portfolio, on the other hand, should showcase your completed work with links to web pages, your repositories, project descriptions, and results.
Your portfolio is a great place to build personal branding, share testimonials, and collect leads for clients-to-be. If you don’t have a lot of your own work, or work from your previous jobs are concealed under Non-Disclosure Agreements, it will be more important for you to contribute to open source projects and work on your own passion projects that you can later flaunt in your portfolio.
In addition to testimonials, references, and samples of your work, you can also boost your credibility (and source of leads), by joining a trusted freelance platform. Freelance platforms like CodementorXhave strict vetting processes that include coding challenges, technical and behavioral interviews, a review of past work, and more.
Yes, taking the time to test and pass through a vetting process is good for you too. Successfully entering into the highly competitive candidate pool of developer specific freelance sites will earn you the support of trusted industry platforms and access to serious clients who are seeking out the skills you have.
To reduce instability as a new freelancer developer you may want to ease into the transition instead of diving in head first. Consider moonlighting a few freelance gigs as you build confidence, clients, and revenue for your freelance career.
Niche vs. General Programming Skills
When it comes to landing freelance software gigs, you will literally be competing with the rest of the world.
One important consideration early on in your freelance career is whether you want to play up your niche or general programming skills.
Whether you want to expand your general skill set or develop niche expertise really depends on the type of projects and clients you are looking to work with. Getting in on the ground floor and developing a product to scale is going require a generalist while developing a feature for a specific use-case is going to require a specialist.
If you are at the beginning of your career, it’s important to make sure you have strong general background and developer’s mindset…. once you acquire these, it will be easier to learn more focused skills as needed.
The decision to go niche or specialize, or do both, should also be considered a benefit of a freelance career. You are not tied to any certain technology and are free to experiment, try new things, and add to skills to your toolbox as you like.
Building Clientele: 6 strategies
Clients are the linchpin of your ability to survive in the freelance world. In the beginning, you will be spending time chasing down leads, marketing yourself, and pitching to clients. As you establish a reputation and prove yourself, the goal is to spend less time identifying and converting leads and more time earning.
In a recent interview with Sourceress, a candidate sourcing partner, CTO Josh Albrecht outlined a simple strategy for landing the engineering roles you want: “First, be really good. Second, tell people about it.” Here are some tips for telling people about it:
1. Market yourself to get clients. You are no longer attached to a business. You ARE the business. If potential clients don’t know about your business, that’s a problem. You need to build a brand that resonates with your clients.
2. Start blogging about your expertise — answer questions that clients are asking and share your knowledge with fellow developers. Contributing to developer communities — like those on Codementor Community — will also help establish yourself as passionate about software development and a knowledge authority in your field.
3. Get on social media. Tweet your articles and retweet others whose work you appreciate. Make sure your LinkedIn is up-to-date. LinkedIn is often the first place recruiters and hiring managers turn to — stay active and share your work there.
4. Network online and offline. Having a strong online profile and actively marketing yourself as described above largely covers online networking. You should also be going to meetups and conferences such as Microsoft Build, QCon, DeveloperWeek, and more. Go ready to discuss your interests, learn, share your work, and direct people to your online networking channels. If you’re up to it, you can even register to speak at the event. In-person connections still go a long way, and will hopefully lead to referrals.
5. Get Referrals from other developers and clients who are happy with your work. Don’t be afraid to directly ask clients (who you know you’ve done good work for) to recommend friends and colleagues who may need your skill set. You can give them a nudge by offering discounted rates for referrals successfully converted into contracts. Eventually, you want referrals to be the engine of your income.
6. Donate time to open source projects or causes and organizations you care about. Both of these are optional, but are good ways to continue developing your programming skills while building a portfolio of shareable work. You can offer your skills to charities or websites that you support in exchange for experience and portfolio building.
Recognize the distinction between “working for free” and “donating your time.” “Working for free” means someone is taking advantage of you and is receiving a service for free that they should be compensating you for. When you donate your time, you choose the terms of the engagement, and you do it because you want to. Donating time demonstrates to clients you are passionate enough about programming to use it for more than just paying the bills, but also to give back to your local (or global) community.
Choosing Your Clients: What to Consider
If you are early in your freelance development career, you may be relieved just to have someone paying you to do any developing related tasks at all. That being said, a client-contractor agreement is a two-way partnership, and you always have a choice. As you become more experienced, your ability to be selective will increase. Here are some things to consider when choosing your clients.
Price. As we discussed above, generally a higher rate usually means higher quality projects and clients. Unless you are really tight on money, don’t sell yourself short on price and certainly don’t accept compensation below market value.
Client Consultations. During initial client interviews, be conscious of their behavior and attitude. This is not only a chance for them to interview you, but for you to interview them. Are they respectful? Do they communicate well? Do they value your skills and experience? Or are they trying unreasonably to undercut your rate and have unrealistic timeline expectations?
If clients have unclear requirements or poorly defined project scope, don’t be afraid to offer paid consultation to help them refine the project vision. If clients are serious about contracting your services, a paid consultation should be a welcome option.
Project Type. You are not a coding monkey. Work on things you are interested in that will challenge you and bring professional growth. Avoid template projects that anyone can do — it’s likely that you will be under-compensated and have little to no career growth.
Fire Bad Clients
Yep, you can fire clients. Though rare, if you find yourself in a situation where a client is unreasonably altering the terms of your agreement, it may be best to cut your losses and get out. These are some of the most common reasons to fire clients:
- Consistent missed payments or underpayment
- Drastic changes of requirements or project scope without renegotiation of terms
- Last minute demands to change or add deliverables
- Communication breakdown
- General lack of professional courtesy and respect
Firing clients should be considered a last resort. Before you go down this route, you should make every effort to resolve problems through goodwill mediation or arbitration.
Operating as a Business
“Freelancing is more than just writing code for money: it’s a business,” our CodementorX developer Dave Sullivan reminded us. As we have discussed in the section above, you will be responsible for your own promotion and marketing. You will also be the sole team member responsible for customer service, contract negotiation, sales, time tracking and work logs, invoicing, disputes, and all other components that make up a business.
It’s beyond the scope of this article to go into all of the details of building a business from the ground up, but we will provide an intro and additional resources for contracts, non-disclosure agreements, time tracking, and setting your rate.
Freelance Developer Contracts
Having a terms of service contract ready for your clients shows that you are a professional ready to do business. A contract is designed to protect both you and your client, and the terms should be mutually agreeable. Here are the most important things to cover in your web developer contract:
- Expectations and responsibilities
- Independent contractor clause
- Work reports
- Payment terms
- Confidentiality and IPR
- Legal protections
You can present the same contract template to each client but, remember, each software development project is different, so it’s perfectly fine for either party to request revisions or additions.
Typically, it will be the client who requests a non-disclosure agreement to protect their proprietary information and ensure ownership of any intellectual property produced as a result of the partnership. As a freelancer, you’ll want to be sure the non-disclosure agreement does NONE of the following:
- Impinges on your right to work
- Prevents you from using knowledge acquired before the project
- Prevents you from using new skills learned during the project
- Restricts your ability to market yourself
- Holds you liable for future damages beyond your control
With these things in mind, you should pay special attention to non-use and non-compete clauses. It would be wise to have your own (favorable) NDA on hand, or at least be well versed in clauses that will be acceptable and unacceptable to you, and ready to negotiate accordingly.
Some clients may ask you to track your time and submit work logs, meaning they want proof of what you worked on and for how long. The most effective way to do this is to install basic time-tracking software, which automatically generates work reports of the tasks you are working on that you can submit directly to clients. Some even have a built-in invoicing system so you can kill two birds with one stone. Here are some that come highly recommended:
- Time Doctor
The concept of time tracking may be slightly off-putting because one of the biggest benefits of freelancing is supposed to be independent management of your time. Time-tracking doesn’t have to negate this — and can be a good way to prove your value to clients. Even if clients don’t request time tracking, you may consider tracking yourself anyway as a way to measure progress and streamline your workflows.
Setting Your Rate
When you start out freelancing, and you’re trying build momentum, setting your rate can be tricky. If you are transitioning from a full-time position, don’t just distill your salary down to an hourly rate — chances are this will have you working on a lot of bottom shelf mind-numbing projects and eating a lot of instant noodles. Remember, you are a business now. You have a lot more responsibilities than just writing code and you will need to account for this in your rate.
The factors determining your rate should include your years of experience, skill level, location, project scope, and complexity. Do some research and see what other freelance developers in your region with similar skills and experience are charging. Once you have a few projects under your belt, or if you are already an experienced developer, revisit your rate and adjust accordingly. Higher rates tend to attract higher quality clients, boost job satisfaction, and lead to career growth.
Recap: Do’s and Don’ts
|Market yourself||Take template projects|
|Network online and offline||Work for free|
|Adjust rates as appropriate||Undercharge|
|Fire bad clients||Abandon projects|
|Donate time||Neglect business operations|
|Consider yourself a business||Over promise|