Bit of an odd, specific question here, but I think it brings up an interesting discussion, so here goes -
If I have 6 months to get my web development skills to a level where I can be paid $35+/hour freelancing, what's the best way to go about it?
Now a couple things I want to mention to help keep the question clear: the timeline is somewhat arbitrary (give or take a few months), but for personal reasons I'd like to be able to quite my current job and move home for at least a year, while still being able to make some money (hence the freelancing). Also, I do have beginner/intermediate level experience with HTML, CSS, Java and C++, but nothing that anyone would pay for right now.
So, with all that being said, what's the best way to go about positioning myself to make money as a freelancer in the very near future? Is it possible in that timeline? What language(s) should be focused on, and where/how should I learn? And what projects should I do to prove to someone that I'm worth hiring?
Edit: One other note, learning to code at a high level is something I've been wanting to do for a while, so this isn't just a 'one year and done plan.' After my hypothetical sabbatical, I'd like to join a start-up as an engineer and use the programming skills I've acquired. Anyway, thank you for the help. I'm interested to see the responses.
Seriously, coding skills matter less in the real world than you think, those will get better with time anyway. Eventually you'll get to a point where you can work in places where coding skills do matter, like dev studios, startups, big companies etc, but for non-tech small to medium businesses, they only care what you've done, not what the quality of your code is. You can make a damn good living setting up wordpress sites, installing a theme, adding content and managing it with social media accounts if you wanted, and that requires the least amount of skills out there.
Lets take the above scenario of being a wordpress installer. First, its about selling yourself in the right light, you're not a wordpress installer that makes people websites. You're an online presence consultant that helps SME's engage with their audience and thus increase their profit.
Second, get your first client, ask everyone you know to put you in touch with small business owners, get meetings and show them the package you're offering, do it for $500 or something, hell do it for free if you have to, just get something you can use as a case study, anything, a local pet shop, whatever. Once you've got your case study, get your own presence setup, put your case study on your website, get business cards printed up etc. Prepare a powerpoint presentation and a few handouts with the benefits of an online presence, making sure your contact info is on this.
Now join your local non-tech business groups, chamber of commerce, networking events etc, and get yourself speaking engagements, make presentations to local SME's explaining that they can increase their profit and talk to their customers using an online presence, tell them about social media accounts and how successful companies use them, show them they can build a mailing list, show them stats on how well conversions work using the mailing list, and at the end, show them how you did all of this for your local pet shop.
You are now the expert in all these guy's minds on how to do this, they will call on you if they need it done, they will recommend their friends to you cuz you knew what you were talkin about. Get their email addresses and add them to a mailchimp account and send out a weekly newsletter re-iterating techniques on how to communicate with SME's customers online.
Work will flow in. Now, i've used a very low skilled example for you, i dont know if thats what you want to do, but this can be applied to just about anything you want to go for, generic stuff like iOS/Android apps or specific stuff like ordering and invoicing systems for oil and gas companies.
Do things, tell people.
I wish I could upvote this a hundred times. The thing to remember is that most people don't know the first thing about how stuff works on the internet. So you could have the shittiest spaghetti code in the world, but if the site looks and acts like it's supposed to, 99% of your clients will be satisfied.
Edit: Don't take that to mean "shitty code is okay," it's just that you don't have to set the bar as high as you think when it comes to feeling like you're good enough to charge what you want to charge for the work.
Just wanted to throw that out there. At the end of the day, "good" or "bad" is less relevant than whether it passes QA, and how maintainable something is depends on what "maintenance" means to your project.
Every single time I do a hackathon I get job and freelance offers. Being visible and impressing people is key.
Just get out there and do it.
Learn how to write smart, clean PHP (if there is such a thing), and learn writing Wordpress plugins and themes inside out. And build a portfolio to woo clients. A lot of developers think they're above this type of work, or that it's soul-sucking and pointless. It is. But if you're willing to buck up, and you want to be a free man/woman, and hit a (fairly average) target rate of $35 - $50 an hour, it's the fastest path.
Keep in mind, there's little respect for PHP and Wordpress development on HN, but there's a ton of demand for it among the growing number of novice bloggers who need help with their site. I get asked all the time, and I usually refer the work to a WP dev I trust (the quality varies quite a bit).
But it all really depends on the amount of time (with brain) you spend on learning. :)
Although those jobs also tend not to pay much. Wordpress especially.
Like many people here, I agree that there is nothing more important than building things that you can show people. However, the process of getting to that level of capability can often be somewhat mystifying. There are a few tools I recommend for that. First of all, interactive tutorials, like those at Code School, are fantastic introductions to web frameworks, if you're just getting started. I first learned Ruby on Rails with Rails for Zombies. However, these tutorials will not give you the skills to actually build anything—rather, they are a good primer. From there, find a good book, preferably one that focuses on actually building something, like Michael Hartl's Rails Tutorial. Finally, I really love to use screencasts (a la Railscasts) for picking up domain specific information for particular tasks. Hope that helps!
Second, a relevant question:
I've just recently started freelancing myself, and I see a variety of advice. "No Rails developer should make under $75/hour!", "Take what you can get, work your way up slowly!" "You probably charge too little!", etc. How do you actually evaluate how much your skills are worth as a freelancer? How do you match with clients who need and are willing to pay for your particular skill level? If anyone has any links to relevant advice, those would be great to.
If you make yourself available on oDesk or similiar, your client is looking for a cheap code monkey to do usually, crappy work. You'll maybe get $10-$15 an hour.
If you get yourself a permie job at a small agency in Edinburgh where i'm from, you'll get maybe £28k a year.
If you become a contractor and work in London, you'll command £450 a day.
If you position yourself as a technical business consultant that provides a piece of software that allows an international car manufacturer to sell more cars every year, you'll earn millions.
All of those things can be true for "a rails developer". It depends on a lot of other factors that have nothing to do with programming and are often overlooked by developers.
They are worth what a client will pay.
Trick: if you show a client “this will make you $20K in 6 months for this, this, and this reason, as I have done for this, this, and this client”—they don't care how much you make an hour. Bid $8K for the project, even if it only takes you a week, and they're still crazy happy.
Past clients would be reluctant to tell how much a new site has made them I would imagine (and it can be hard to pin down for certain markets).
A few important things to note from my (limited) experience:
- How much you are worth (per hour) as a freelancer is largely based on your existing body of work and your network of contacts. As such, you might not be able to make your stated figure straight away - instead as an average when your earning potential rises with each completed job.
- Go around your local community first. A lot of people say that you shouldn't work for friends/people you know, but when you're starting out you need portfolio pieces and people are far more likely to take the risk on someone 'green' if they get some face-face time now and then. Local restaurants and clubs was where I started.
- Contract up ... always >.<
- Specialise a bit. There seems to be a commonly held belief that freelancers should be full-stack engineers - largely because you are likely to be working solo on projects. Not only is this not realistic given your learning timescale, but I've also found it to be untrue. If a project needs work that you can't do then you sub-contract to another freelancer. They will be happy for the work and there is always the possibility of payment in kind. One caveat is that you obviously take on the risk of the contractor messing up.
yes a million times. Don't think of it as being confrontational, think of it as memorializing an agreement. You want to make sure you and your client are on the same page, and it's a great reference (particularly when it comes to defining a scope of work) down the line. It's as much for the client's protection as it is for yours and as long as you keep it simple and to the point, you'll be fine.
Do you have any suggestions on creating these contracts? Mainly, is it necessary to lawyer up before even starting to make sure your contract is bullet proof?
This might be relevant (also found it on HN): http://vimeo.com/22053820
Learning a CMS well is much easier than learning to build applications (mostly) from scratch. Your job is largely configuration (installing add-ons, building / modifying templates, updating settings.)
You can do a lot with a decent CMS without having to learn PHP, but Wordpress and Drupal do require some PHP skills to do significant changes to the templates. However, it must not be much because I know people who freelance building WP sites and know very little PHP. There are other CMS' which have templating systems which don't require any PHP at all.
I mention WP and Drupal because there is a ton of work out there in those ecosystems. At $35 / hour you can pick up work from other developers / agencies all day long. Another reason I mention the CMS route is because it's a niche path. It's easier to pick up work when you focus on a certain area rather than being a general X programmer. It's also easier to focus when you go niche.
When you have decided on a CMS, setup some development instances and practice doing different things. Setup another development instance for your own freelance services site and use that as practice as well. Set aside time for learning PHP and Javascript. As the back-end (CMS) guy, you will be okay with not having to do much on the front-end, but knowing Javascript well will help a lot. For your PHP practice, spend some time in focused practice which stretches your comfort zone, but also spend some time building helpful add-ons. You can use those as part of your portfolio. Stick to simple add-ons at first. If you aren't sure what to build which hasn't already been done many times over, then look for newly released API's which could be helpful for a general web site.
A big part of learning a CMS is learning the ecosystem. Figure out the "go to" add-ons for a given task. You will find that for something simple like a contact form there is probably 50 add-ons that you could use but only a handful which everyone actually uses. Find out who the biggest players are (most well known general developers and add-on developers) find out where they talk to each other. This is most likely going to be a combination of Twitter, forums and Google Plus communities. Get involved and show off what you are building. These channels will be an important source of leads for work.
You can also learn and build your profile / reputation by helping people who are asking questions. Spend some time answering questions in the above mentioned channels as well as http://wordpress.stackexchange.com/. In some cases, people ask you to fix their problems for them. Congrats, you just got a freelance gig and a lead for more work in the future.
Look through Elance, Odesk and related sites to see what jobs are being posted. You will see a lot of low budgets and developers offering to do the work for low rates, but just ignore all that. If you pick the right jobs and you can sell, then the $5 / hour developers become invisible to the buyer. You can get a sense of who the buyer is from the history as well as the description. Go by your gut, if the client seems like a good one, then drop a proposal.
You will need to learn how to sell. If you are in a good niche and you can sell well then you can land 8 out of 10 jobs that you apply for. The other two fell through because you were too late. You need to develop proposals which convey to the client that you are exactly what that person is looking for and you know exactly what the client needs.Aside from examples of your work, you might pull specifics out of the job description to tell the client exactly how you would do certain parts of the project. This will show that you know what you are doing and gives you a leg up on general PHP programmers who don't know the CMS as well as you do.Of course, the approach depends on the type of client. A non technical client who needs a site for a new business doesn't care about technical details, so adjust accordingly (though you would be better off starting out with other developers so that you can learn from them and so they can back you up if you run into problems.)
Go this route and you could be freelancing in 3 months. You could start out at $35 / hour and then raise your rates from there. This isn't the most sexy route. PHP isn't the most sexy programming language. But by going this route you would be tapping into an ecosystem with a lot of work and which is relatively easy to break into. As you gain experience, then you could move into other directions. Really, when doing freelancing, the tech side is easy and isn't nearly as important as the people side. Learning to sell and communicate well is far more important than working with the sexiest platforms. Once you learn the important stuff, then you can change the other variables as you progress (breaking into different programming languages / platforms / ecosystems.)
Another thing worth trying is charging per day.
To answer your question directly, I had a couple of years of Java when I did a PHP project (a CRUD system for my book club) and it probably took a few weeks. But I've also worked with Drupal and Wordpress and those take longer to get your head around (Wordpress to a lesser extent)--there are lots of moving pieces, and you have to try multiple plugins to know what will work (and the codebase moves quickly too). I'd budget two months for Drupal, six weeks for Wordpress, and I'd start out with simpler site proposals.
Can you become a freelance CMS installer in 6 months with no technical background? Probably. But only just. I imagine most of the commenters below are developers (like myself) who see things like Joomla/Wordpress/etc installs as trivial pieces of work. Don't get me wrong: they are, but only if you've had a considerable amount of previous dev experience.
Let's look at what's involved in becoming a CMS freelancer:
- Setting up a working development environment: probably a few days.
- Getting to grips with PHP (or whatever language) development: harder to estimate but I imagine it will take at least three months to get to place where you're familiar with Object Orientated Programming (OOP), basic app layout, basic database skills, CSS and Javascript. Three months is actually a REALLY short amount of time to get up to speed on all of that but maybe you're a first learner - and hey, you're posting on HN so I bet you are ;-)
- Server setup : lets say you use some service like GoDaddy or Blacknight which offers 1-click CMS installers so you don't have to deal with all the SSH and CHMODing so no real work here
- Nailing your first piece of business: again, impossible to estimate but trust me when I say that this business (particular "cheap" jobs like CMS installs) is COMPETITIVE. If you live in a developed Western country then someone out there will do the job cheaper than you, no question. So basically you've going to have to operate well at a loss for the first few projects.
And here's where my BIG problem comes with the other replies in this post:
After you have X number of projects under your belt, your rate isn't going to start going up at any considerable speed. Yes you will be better than you were a few months back, yes you will have projects to show but guess what? So will all those outsourcers in places like India and Poland and they'll STILL be charging less than you.
My basic point is: this idea doesn't really scale. You'd be better off learning development "properly" (night schools, online courses etc are good) and then starting off at some entry level dev job. Yes its more pain up front but its a much more viable strategy long term.
So to answer your question (finally!): Can you become a freelancer in 6 months? Yes. Will you make any decent money at it? I don't think so.
If you're looking for any help with this stuff then I'd be happy to help you out a bit. You can find me on twitter: @modernprogrammr
I know a quite a few consultants who are ridiculously smart at business and realize that WP and other off-the-shelf solutions can solve the majority of the problems they work on, and have hourly rates that eclipse the majority of "real freelance programmers" rates.
The majority of web designers/developers are so focused on aesthetics, design, and technology that they completely miss all that matters for their clients: "Will this website get me more customers / sell more widgets / make me more money?"
Once you're comfortable with writing for business and tweaking WP themes, start attending networking events and start talking with business owners. Do a lot of listening and learning, and make connections with people who might be interested in what you have to offer.
Create a positive ROI for your clients (and remind them of it), ask for referrals, get a testimonial ("Brennan redesigned my website and doubled my online sales in less than 6 months"), and rinse and repeat.
You may be underestimating the value of intermediate skills. While a large agency may not pay you as freelancer, you could easily get a roster of clients through referrals and good old fashion hustle on craigslist (which leads to more clients) I have plenty of experience making this work as developer... which is weird since I am not a developer. If I can do it by accident, I am sure you can do it on purpose.
Once you master OOP/ the basic concepts....for loop, output statements, switch statements, arrays, etc....
The original poster will need to start doing web development which is a different ball game. I've been using onemonthrails.com and it has been pretty effective especially if coupled with a programming mentor.
Created an on line presence/blog. Wrote about skills I have on blog. Posted some programming posts. Went to Craigslist / Gumtree. Emailed people looking for people with skills I had. Navigated to Google. Searched web agencies near my town. Emailed web agencies. Wrote more emails. Answered phone and replied to emails. Told customers my rate ( it was too low ). Easily got work. Did good work. Got paid. Increased rate. Repeated.
- Learn complete web development. Use something like CodeAcademy/Udacity to learn the complementary skills you need. My guess is since you know Html/css and Java, you are better off learning Javascript as well. Nodejs / advanced Java might be a good fit.
- Learn some of the theoretical fundamentals. This might not be of immediate need for freelancing, but you should almost always be honing your fundamentals. Take up the core computer science courses on Coursera - Algorithms (1,2), Programming Languages, Basic Math (linear algebra, graph theory etc) are some must haves. This can be a longer term goal and plan it beyond 6 months.
- Sharpen your skills with coding exercises. Do some of the stuff on InterviewStreet and other such sites. Being able to solve small problems effectively and time bound, is very important skills. You should practice hard for the first 6 months I think.
- Know your domain. Being a web freelancer means you might have to be full stack. Being able to write the client and server side with ease. You might want to be good at some specific domains - like building sites for X, Y, Z (you can build your own reusable code). Then expand. Looking at stuff at elance is an easy start.
Its doable in 6 months. IMO don't stop learning.
As a freelancer, the most important skill is NOT coding. Yes, writing code gets you to the end-goal, but what the client really wants, is results and growth for their business. As a freelancer, you will often have to work on something that you don't know 100%, and maybe even having barriers to accomplish the project. However, hiring a freelancer is very much looking at their past successes, and using that to gauge the result of their current project, along with the value this freelancer can bring. As long as you get it done and bring results, and maintain an amiable relationship with the client, not much else matters.
So in on that note, I would say which language you choose hardly matters. But that's not true. You want to choose a language you are familiar with, and one that seems to be brought up in whichever areas you are looking for clients.
As many have already said, and I kind of hinted at above, learn as you build. This is the best and fastest way to gain the knowledge and skills you need. Much like building a startup, have something early on to put out into the world, and build on top of that.
Any projects can prove to someone you are worth hiring. As a freelancer, part of your job is to instill confidence into this potential client, and demonstrate to the the VALUE you add to their business. Not the algorithmic complexity, not the pretty code, not how many lines of code you've written, but the VALUE (increase in revenue, lower costs, higher conversions, putting their product on the forefront, etc) you bring to them.
I wrote a blog post[1] recently about things you should know about freelancing, it's not too in depth as it's targetted towards people who have not begun freelancing and are curious about it.
Keep improving yourself, and good luck!
[1] http://www.jayhuang.org/blog/things-you-should-know-about-fr...
Spend six months building stuff and you'll also have a decent portfolio that's inline with your current skill set. Winning freelance work can be a "show don't tell" sort of arena, so having any work helps.
You could take up a job you can do from home. Then you could still adjust the hours you bill so that they seem fair to you. Like if you spent 8 hours reading a basic JavaScript tutorial to figure something out, don't bill 8 hours (or maybe do, it depends on your judgement - I think all dev jobs require some time spent on learning, too, so it's not completely unfair to bill for it).
You can even take up contracts on oDesk or similar if you're not finding enough local opportunities.
As mentioned, I think that the best route for freelancing would be to start with Wordpress development. I say "best" in that there is consistent demand for websites and these are projects that are great to learn on. You could definitely start freelancing right now and charge $35 p/h. Just bill for 1/3 of your time as a previous poster mentioned & learn on the job - this is the most efficient way.
In your spare time (if any), I would highly recommend learning Javascript. Not Jquery - core Javascript. This will be incredibly useful when you do want to go to a startup. You will most likely be positioned as a front-end dev anyway, so focus on that. I have had to learn angularJS on the job and it's been incredibly rewarding, yet I do wish that I had learned serious JS earlier (rather than just rolling WP themes). Once you've got JS relatively down, move to Ruby & Rails.
Enjoy!
Is this a 6 months off to focus solely on learning development skills or 6 months to learn while working?
0. http://eddychan.com/post/15775730174/how-i-learnt-enough-pyt...
You should read "Breaking the time barrier"[1]. It's a quick read, but it presents some key guidelines on how to accomplish this, and will be invaluable training when you're talking with a potential customer and trying to figure out the best deal for you both.
[1] http://www.freshbooks.com/blog/tag/breaking-the-time-barrier...
If you have a deadline and a paying customer who is counting on you to produce something, then you'll quickly learn how to learn quickly.
1. I'm assuming you aren't just looking to setup wordpress or squarespace sites