How to become a Java freelancer?
Anyone can become a freelancer, but the hardest part of becoming a freelancer is finding work. You just can't go to a freelance site like Elance.com or Odesk.com and expect to pull jobs that will give you a steady income. Those are low-dollar markets for some countries as you will be competing against people around the world. Hence, this post is based on working for a single client locally on a longer term basis like 3 months to 24 months. So, to find jobs continously
So, you need to develop certain skills that distinguishes you both technically and non-technically from your competition. These are not hard and fast steps, but general guidelines from my experience. Some achieve it quicker whilst others take longer. It depends on the individual and the nature of the market (i.e. demand versus supply).
Step 1: Develop the experience and skills required to become a freelancer.
- At least 2-3 years hands-on experience with Java, Enterprise Java, XML, SQL, regex, JSON and sought-after frameworks like Spring and Hibernate. Check the local advertisements to see what the prospective employers are looking for. Good to have 2 to 3 projects completed through the full SDLC.
- Get a good handle on the 16 key areas to solve real business problems and to better market your skills at the job interviews and on the job. I am yet to work for an organization that did not have performance issues, concurrency issues, security vulnerabilities, and memory leaks. So learn how to create and analyze thread dumps, use visual VM to analyze memory leaks and performance issues, etc. You also need to know the big picture of the baseline architecture. you had worked on.
- You can be a front-end developer (i.e. focusing mainly on GUI development), back end developer (i.e. writing web services to retrieve data from the database and other systems) integrating various systems, or do both, but you tend to have more strength either on front-end or back-end development. I do both, but stronger on the back end development.
- Have good marketing skills -- 1. Good resume writing 2. Good interview preparation by brushing up on the fundamentals. I use my own resources to brush up just 6 weeks before my current contract is about to expire. I need to compete with other talented freelancers and contractors. Preparation not only breeds confidence, but also ability to sell myself more on work related accomplishments on the 16 key areas and sought-after frameworks.
- Good networking skills. Build your network via LinkedIn.com and regular catch ups with your former bosses and colleagues. You will be under less scrutiny when you find your next contract via your previous contacts and earn a bit more by cutting out the middleman the "consulting agency" or the "recruiter".
Step 2: Register yourself with the recruitment agencies and online freelance sites
- Send your CV or resume to consulting or recruitment agencies so that they have your details in their databases. Big clients prefer to deal with consulting or recruitment agencies as they do not directly want to keep in touch with hundreds of freelancers and negotiate rates. Also, if you prematurely leave a client for unforeseen reasons, then the consultancy or recruitment agency can quickly find a replacement.
- Join the relevant professional bodies like Java forums and LinkedIn.com to advertise your availability.
- As only 30% to 40% of the real vacancies are advertised, build your network to find your future contracts via your contacts. Make it a point to regularly catch-up with your former colleagues and bosses. Build a good rapport with a handful of consultancy or recruitment agencies so that they can proactively look for work on your behalf to create a "win/win" outcome for both. I have done this very successfully.
Step 3: Decide whether you want to start your own company or go via an umbrella company.
- As you need to have professional indemnity and liability insurance you have to either organize it yourself if you are registering yourself as a company or use an umbrella company set up to look after these for you. You become a pay as you go employee of that umbrella company. These umbrella companies can look after your insurance and other administrative needs. You need to pay the umbrella company 3% to 5% of your pay for the service they provide. Consult an accountant and talk to fellow freelancers in your jurisdiction to see what works best for you. Each approach has its pros and cons. I go via an umbrella company as I will have no administrative work to worry about.
Step 4: Carefully asses the position(s) or offer(s) on the table
Freelancers or contractors are hired for 3 main reasons.
- To get them to do the boring work that other permanent staff don't want to take on.
- To get the project over the line. In other words meet the deadline.
- To bring in expertise that are lacked within the current team.
You would ideally want points 2 and 3 to be the reason where you can acquire more skills and experience.
When you are asked for your contracting rates, provide a range like $650.00 to $750.0 a day as you don't want to price yourself out of the market and at the same time miss out on great opportunities. After your job interview, you will be in a better position to negotiate further once you have sold your capabilities to your prospective employer.
Step 5: Enjoy your career as a freelancer and continue to improve on step 1, 2 and 4 with more experience and exposure.
- Endeavor to build specialized skills in Java to increase your rates and reduce your competition. So, build niche skills by having Java + [something]. In 2004/2005, if you know Java + Spring framework + Hibernate you would have been in hot demand. But now there are thousands of developers with these skills sets. So, when you are lucky enough to pick from multiple contract or freelancing offers, choose the one that is more conducive to acquiring niche skills. Here are some examples from my experience -- A BPM tool like IBM Lombardi, a SOA tool like web Methods, experience with highly scalable trading application using FIX protocol, a BI (Business Intelligence) tool like IBM Cognos, in memory Data grid like Oracle coherence, BigData (e.g. Hadoop)etc. In short, good system integration skills. Most applications built today are distributed. Learning Apache Camel will be handy as well.
- Continuously update your resume and online profiles with newly acquired skills and experience. Also, get your consultancy and recruitment agencies to update their databases.
You will gain more confidence as you go through the above steps. Freelancing is not everyone's cup of tea, but can give professional freedom and better income streams for some. The pros and cons of freelancing and other questions and answers are discussed in the post entitled "why work as a Java freelancer?". Some may prefer doing it for a short while and then settle down with a company to grow within that organization. Some love to do it, but fearful of or too complacent in the current role to take the first step. First step is always the hardest. Freelancing or not, more and more organizations are becoming leaner and meaner to make profit for their stake holders, and staying relevant with the technologies/frameworks without being too complacent about your current role is your only job security as a software developer. This blog has lots of technical know hows and career making tips to stay relavant.
I thoroughly enjoy my career as a freelance Java developer. In addition to monetary benefits, it also helped me fast-track my career without feeling stagnated and work with very talented Java developers.
Hope to hear your experience as a freelancer, especially for multiple clients via odesk.com, elance.com, etc.
Disclaimer: This is a general discussion only. It is imperative that you consult your accountant for relevant business structure and tax laws in your jurisdiction.
You may also like:
- Why become a Java freelancer?
- My top 5 tips as a Java freelancer
- How to become a software architect?