Anyone can become a freelance Java developer, but the hardest part of being a freelancer is finding not just any freelancing Java jobs but rewarding & longer term freelancing Java development work and continuously finding them without any prolonged gaps.
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 and attractive income. Those are low-dollar markets as you will be competing against people around the world. Premium sites like Toptal screen candidates to attract the best freelance Java developers. Hence, this post is based on working for a single client locally on a longer term basis like 6 months to 48+ months. As a contractor, much needed job security is attained by having the right skills .
1. to find jobs continuously.
2. to stay contracted in a rewarding contract for a prolonged period.
3. to get repeated contracts more frequently with the same paymaster client.
you need to develop certain skills that distinguishes you both technically and non-technically from your competition. It is the survival of the fittest. You need to continuously & proactively acquire the sought-after skills. You can’t afford to stagnate.
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. Everything is covered in this training. 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 recruiters, LinkedIn.com and create your own branding
- 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 LinkedIn.com Java groups to contribute and stay connected.
- 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.
So, it is imperative to learn more about the position at the job interview to ensure what you are getting into. Ask about the technologies and frameworks used, mission criticality of the project – e.g. how many registered users?, how many servers on the clusters, the development team size, number of other systems to be integrated with? (e.g. CRM system, Data warehouse system, CMS system, etc) and so on.
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 $750.00 to $950.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 skill 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. 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 how and career making tips to stay relevant.
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.
Hope to hear your experience as a freelancer.
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.
Latest posts by Arulkumaran Kumaraswamipillai (see all)
- 15: Spark joins with Dataframes & SQLContext - December 17, 2017
- 14: Spark joins with SQLContext & JavaPairRDD - December 16, 2017
- 13: Spark inner & outer joins in Java with JavaPairRDDs - December 16, 2017
- CAP theorem interview Q&As - December 16, 2017
- 00: ♦ Creating a Tree from a list & flattening it back to a list in Java - December 13, 2017