Plain and Simple: How much should an up-and-coming programmer know if they want to try and take on the challenges that freelance jobs present?
Anywhere from nearly-none to decades worth of experience. It depends entirely on the project, and freelance projects vary from "make me a simple HTML page" to "build me something similar Amazon.com".
I started as a freelance so I could get enough experience on paper that someone would hire me full time.
As much as necessary to convince clients that you can do the job. I would say it is directly proportional to the rate you want to charge. If you're a college student looking for $10/hr you should be able to find enough work to keep you busy. If you expect to charge $100/hr you had better be an expert in your language of choice.
Having a profile of things you have built previously always helps too. If you haven't built anything, build something for yourself to show off. Getting the clients to start freelancing is the largest barrier.
I don't think there's a numerical answer for this. I think it makes more sense to look at it this way:
- Determine what specific domains (sector, speciality, category) you find interesting. I can't stress how important this is. Like anything in life, you don't want to be stuck doing something you hate.
- Look for freelance jobs in that area.
- Now that you see what customers want, study that area for "a while".
- Then put some time into solving a problem, whether its one that you see mentioned in a project listing or something you made up. Or hit up some friends that could use that sort of expertise, but who are willing to take an "intern" submission.
- Learn from the feedback. :)
Then I would say repeat steps 4-5 until you feel good about it.
Once you feel confident in yourself, that's when you can charge money for your expertise. :)
Also, don't forget, you will be your own salesperson. You need to be able to communicate your product or ideas clearly to potential customers. You should practice delivering presentations in front of a small audience.
You should be comfortable not only with programming, but also working with clients, collecting requirements, estimation, etc. You should also be comfortable with what it takes to form and run a business, including a cursory understanding of the laws associated with it in your area.
Play to your strengths. Honestly evaluate your core competencies. Remember that in this highly 'networked' age, it is entirely possible to leave a considerable stink in the wake of a project you fumble. That kind of stink can linger and turn others' noses in the future.
You can always expand your services as you 'grow'. Be conservative at first and concentrate on really doing a great job and satisfying the client. Earn reputation. As you gain experience and confidence over the years, you should find that you develop a mature instinct for assessing risk - taking on higher pressure, more lucrative, projects, that may involve a degree of 'sticking your neck out'.
There's no 'golden rule' that I'm aware of. If you sincerely believe you have something to offer, go for it! Fortune favors the brave etc ;-)
The following post I wrote addresses some issues you need to consider when freelancing. I have received some good feedback from the community, and it covers a lot of ground.
Most people I know (including myself) who now work freelance went through the following thought process:
- I can do my current job without requiring the help of anyone else in my current company. I have the hard skills, soft skills and tools to perform the same function on an individual basis.
- There are organisations out there who will want my skills, even when they are not attached to the branding of a large company.
- I can work freelance!
I would add that most people need some kind of push before they take the big step. This is often redundancy, a radical change in person circumstances or hitting the 'glass ceiling' for technical workers.
Based on personal experience I would say you need the following non-programmer skills: 1. Know that you can find and acquire jobs, contracts, etc. 2. Have enough money put away to cover expenses if you don't have work. (I like to keep 3 months worth around, but that's just me :-) 3. Have the discipline to maintain #2 4. Know how to sell your strengths. 5. Set some criteria for jobs that you will walk away from and stick to them. I had a client that wanted me to speed up their Access database app that they had custom written, but it had over 250,000 records in one table. I refused the job, but they still wanted me to look at some other changes for the app. 6. Always be looking for the next job or a referral. 7. Just do it!
Programmer skills: 1. I think the resounding theme here is: More is better :-) 2. Pick an area or group of related areas and become an expert (basically can you answer the questions most people have without having to google it?)
This my $0.02 for what it's worth. Good luck and happy consulting.
Short answer: MORE THAN YOU HAVE.
If you have to ask, you don't know enough.
Depends on the type of work you are going for but if you can lead a project at your current company you are on your way. You don't have to be a coding ninja though and there is no magical formula. If you have solid problem solving, good ability, and experience with project ups/downs through past jobs you are probably ready.
The kicker is if you have opportunity then the market says you are ready.