How do I actually get clients? I have no portfolio or any real open source contributions. My GitHub profile is pretty empty. And I doubt anyone would hire me due to my age.
Also, don't sell yourself short with regards to getting jobs. While you likely can't get hired at a Bank of America or what have you, if you approach a local e.g. Rails consultancy, not having an Education section on your resume will probably not be a total disqualifier. Many people don't. You will probably be able to pass a FizzBuzz test, which actually makes you substantially better than many people with Bachelors of Science in CS in the hiring pool. I think a standard W-2 job -- heck, pitch them on an internship and just upgrade after showing you can do the work -- is likely a better fit given that you do not have the connections/experience likely to fill a freelancing pipeline at the moment. You can always revisit that decision when you're 20, at which point your high school career will never come up at a job interview that you'd actually want to pass.
Being able to program (and being able to show that you can) actually does put you ahead of most applicants to your average programming job. It shouldn't, but it does.
At my old day job, probably half of our system engineers could not program. They generally spent their time producing documentation, gathering requirements, writing emails about requirements that needed more documentation, and occasionally breaking out Eclipse to spend 6 hours trying to add an if statement to one web page by patterning it off of parallel structure in the file they could copy/paste and then random walking through the space of all possible tokens until they found one where the output matched expectations.
I can't get a job is not a reason to start freelancing.
The mindset which leads you to freelancing needs to look something like "I love helping people and I believe I have serious value to bring to the table." You see, one viewpoint is self centered, negative, desperate and looking for a way out. The other viewpoint is to focus on the potential client and how you can help that person achieve his or her goals.
If you couldn't cope with high school because of personal reasons, then what makes you think you can cope with freelancing? Did these problems go away or are they still present? If they are still present, then they will cause greater problems with freelancing than they did with high school.
Let me tell you a little secret about freelancing.
Your technical skills mean dick.
There is a long list of critical skills and attributes which you need to be strong in before you get to anything which resembles writing code. Freelancing is about people, not computers. You will find that the most successful freelancers aren't necessarily the strongest developers.
On the other hand, to get what you want out of life, you have to hustle. People will tell you what you can and can't do. A hustler will get it done out of sheer will.
Ideally you would be able to get a job doing web development so that you can see how a successful shop is run. If you can't get a job in your local area, then ideally you would be able to move to an area with a lot of tech jobs. You could work remotely, but working remotely is hard, just like freelancing. Again, your personal issues might be a problem.
Once you have some experience under your belt, then you will have a better idea if freelancing is for you. Hopefully you find a better track.
The effort you would need to put into snagging freelance client work is the same effort you would need to put into getting a job. Build your portfolio, put some stuff up in Github and ship your side project. Find places where other developers hang out and contribute something. That could be code, help or just about anything which gets your name out there. As people get to know who you are, then they may reach out to you for paid help. It's possible that you still start out as a freelancer by going this route, but deal with enough people and you will eventually get job offers. Of course, as you build yourself up, you can apply for jobs along the way.
This is just one route. But starting out, it's the route I would go.
You don't have to actually be an insider to get this knowledge, but you're going to have a hard time solving business problems if you a) don't know what they are, b) don't know the current state of solutions, and c) have practical ideas on how you can fix this using magic computer sauce.
For this reason, I'd +1 the suggestion to look for a job as a webdev. Could be great work experience, but more importantly, good experience interacting with businesses in a B2B setting, seeing how they tick, and learning about the overall process of selling to a business.
Damn, if I had your email, I'd send you a personal letter of appreciation. This is just that good.
You seem well aware that you have a credibility problem. If you really have the skills that you say, it shouldn't be very difficult to whip up a website for your portfolio. The point of this site is to demonstrate to prospective clients that you can envision and create a complete site, that shows common elements of business websites, images, maps, sensible site organization and navigation, user registration, access control, cookies, forms, data capture etc. At this point you are trying to create something that impresses the average small business owner not readers of HN.
Creating a portfolio site will help overcome the credibility problem but it is only a first step to finding clients. I suspect that you will initially need to find an established small company that builds sites for other local small businesses and try to become a sub-contractor to them. Freelancing to the end client at your age and lack of experience will be very hard.
Here is the other thing: if your portfolio site is outstanding and shows lots of polish and skill then there are start-ups that might take a chance on hiring you.
Get a Junior level position. People have been telling you your whole life that you can't get anywhere without a college education, which is horse shit.
You're in one of the few industries where the professional work you've done and the skills you have determine if you can get a job, not what college you went to.
If a company snubs you because you dropped out, you probably don't want to work for them anyway.
Source: I dropped out of HS, got my GED, dropped out of college, twice. Fell back on my Computer skills, now a dev at a startup making more money than all my friends who went to college.
Depends on why he dropped out. Could he not get a long with his peers and refused to do what was asked? Not someone I would want to work with.
Remember, work is called work for a reason. A lot of my job is fun, but work (and often grunt work) is what carries side projects from toys to releasable software.
Don't stop self-educating. Research and consume good career-related literature. Push yourself to learn new things (something I learned from a former boss - I learn a new programming language every year. It keeps me exposed to new ideas constantly), and don't stagnate. Work on open source - a good Github profile is the strongest indicator of a good candidate from my perspective.
Was it because of qualifications? Nope.
Was it because of my education? Yes.
So how did I get educated without going to school? Well, silly, I did what you -- and most of the other devs here did -- I just wrote code, read blog posts, read books, watched videos, and wrote more code.
You do not need to go to some rooty tooty university to be a developer. You just need to be useful, and good.
> I have no portfolio
Then get one.
> or any real open source contributions
Then make some.
> My GitHub profile is pretty empty.
Then fill it.
> And I doubt anyone would hire me due to my age.
Nonsense. If you're 17, your brain is ready for learning. Get an internship, or a junior position, and in five years time you'll be a valued employee with lots of experience.
Good luck, 30thousandfeet.
If you decide not to continue with your education, your best bet is to pick up whatever work you can to build a portfolio. Once you have a portfolio, you'll be better off trying to get an actual job, as freelancing (at least at the bottom end) is generally miserable.
What I can tell you is this: if you decide not to go to school, be prepared to work hard. Harder than anyone else. Harder than the day you worked yesterday. Without this form of ethos, you simply will not make it in the world.
If you do stay in school: work hard. Always try to work harder than the day yesterday. If you don't, no problems - you have a chance - but by the time you finish school, you better be prepared to work hard. If, by the time you finish school, all you've done is party and relax and 'enjoyed yourself' - you did worse than if you'd dropped out and entered the work force in the first place.
Life is hard work, is all I'm saying. If you can find someone willing to pay you to work hard - then you've already made more progress than most of people who choose to study so long in their lives.
Freelancing was easy at first but then the dot com boom hit and things were tough for a few years, but luckily I was living with my parents. Eventually I got heavily into Rails in 2004/2005, built some apps, sold some apps, and eventually did very well for myself, but as fit2rule says, it all comes from working really hard and generally I missed out on 90% of the life that people in their early 20s tend to live (not a huge deal to me as I'm not the partying type anyway).
Things are pretty good now and I've just started to do a degree which I'm finding to be quite enjoyable with the various experiences I have behind me, so.. it can definitely be done, but it's not going to be a walk in the park.
OP - before you decide to take this route, make damn sure that you want to. Fun > work
Locally it was defined as drunk driving, 18 years of child support payments, hangovers, restraining orders, addiction/detox, and one acquaintance who went to prison for weed distribution. I didn't participate in what they called "fun" and I don't regret it at all.
Work makes that way fun. Way, way fun. If all you see in this big mess of life is work, or fun, there is yet more to come ..
If you have any semblance of stability in respect to your living arrangements, here's what to do:
1.) Based on your existing expertise, come up with three projects that you can create to showcase your abilities. Shoot for things that can be finished within a few days to a week.
2.) Do nothing but work on these projects until they're complete. This might be hard since you're younger, but if you want to make a living, you'll need a body of work. It's not impossible to start a freelance career at your age. It just takes a hell of a lot of determination and focus. Plan on your social life being flipped upside down.
3.) Write about your work. Make a fuss about your story. Write a blog about why you dropped out, what you're doing, and blog about every project. Not only will this draw attention to your situation, but it will also allow you to articulate thoughts on your process and show potential clients how you think.
4.) Repeat. Don't stop. Keep working.
5.) To find clients, you'll want to start getting your name out there. I've had a lot of success just from posting on the Hacker News "Seeking Freelancers" thread that comes out on the 1st of each month. Take advantage of things like these and email anyone and everyone you know who might be able to give you work.
Finally, don't mention your age. It's irrelevant. If you can complete the tasks that a client would ask you in a competent manner, they won't care.
Does anyone else in the field identify themselves by high school related stuff? No, you say? Oh, then I'd do exactly the same. I know for certain that employers don't care that I got an A+ in HS physics, and I only got a C in gym because I lifted weights a lot so it was a pity C, and I suspect they're not going to care much about your experience either.
You want a job as a node.js dev or whatever, fine. Make certain that's the first google result on your name, not "so I dropped out because ..."
To put it in psuedo-computer-ish terms, it is premature optimization to not be in school at your age. If you can work part time and get your GED or back into school via a community college or whatever, you should. You can build your GitHub, BitBucket, whatever portfolio in your spare time. School will open you up to new terms you simply haven't heard of, yet, because you haven't had as much time on this planet as others.
How to apply?
Find a web dev company in your city, write them an email with two things:
1. You find their company really interesting and the projects you're doing.
2. You've been programming since the age of 12 and you're super interested to learn more coding in a cool company.
Be enthusiastic, people like that. :)
Hi, 30thousandfeet. Many years ago, I dropped out of high school at about your age. I remember the feeling; that sinking "well, I guess I did it; here I go" feeling.
I don't know what your school is/was like, I don't know your situation, and I don't know how long you've been away from it. But I know this: I have many regrets about dropping out.
Listen, you sound like a smart person. School was made for people like you. Find a way to go back and finish. Move in with relatives for a year if you have to. You don't get these high school years back, and they're more precious than you realize right now.
Edit: You said you have trouble coping. This is what psychologists are for. Talk to your school psychologist, or have your folks make an appointment with one or two in private practice. It's normal to see a psychologist for these sorts of things. A good one can help immensely.
And dropping out will most likely put you years behind your peers. Wait until you hear from friends about who is going to which college; meanwhile you're trying to get gigs to pay the bills. It will make you feel sick.
It is not too late. Even if you've been out for weeks --- you can make up the work. You can do it. People care. Teachers care. I care. Find a way ... make a way to go back. Talk to teachers, assistant principals, parents, relatives,... sort out your problems --- they're very likely solvable. Be at graduation. BE THERE. You will thank me later. Really.
I'm 22 and was in a situation like yours for a loooong time. I am also a drop out.
1) yes people will hire you, get over it. post your resume on Dice if you don't believe me. you'll start getting calls at 9am the next morning
2) stuff is going to be some amount of shitty no matter where you go or what you do. you may call me crazy, but you'll probably end up looking back on now as the good times. so enjoy where you are now in addition to where you are going (see point #1).
3) nothing matters as long as you write code every day and keep your head up.
also, i saw someone in this thread say "your technical skills mean dick."
fuck that guy and fuck that thought
you have worked hard to learn and develop what you have in your head, and it is as valuable as you say it is. you have a long road ahead of you.
if you look on the web or talk to friends/family and find a contract (or even better, a job!) that's great. if you can't, it is equally valid to build something for yourself.
no matter what, you have plenty of time to figure it out.
A place that's insane enough to ask for a HS diploma, is insane, so you'd be best off not working there anyway.
You're at a golden age. You're 17, in the incredibly unlikely even they ask if you graduated HS, duh, of course I haven't yet because I'm only 17. You'd have a much more interesting conversation at age 20. So fill that resume with experience to talk about, so no one gets the bright idea to reminisce about school "a long time ago".
There is no such thing as a moral or ethical vacuum. I'd rather you not lie, in general. Then again, you need to eat, and everyone would agree they'd much rather have you lie about some meaningless irrelevant piece of paper than mug someone for their wallet.
Note that bluffing can only get you so far, you need some "meat" to back it up. So if you only have 2nd grade arithmetic skills, that would be why you're screwed, not because you don't have a piece of paper. You seem fairly literate compared to a college grad so no problem there.
Interviewers have usually been impressed when I mention self-taught high school dropout. I've held positions at fortune 100 companies making 6 figure salaries until I dropped out of that too and started my company.
Credentials are a distraction. Follow your passion and build something you love.
I'm now 22 and working for one of the top agencies in Scotland. All my friends are still in university or dead end jobs.
As long as you have passion for what you do, and keep learning new things - you'll progress faster than you believe.
He started by taking the only programming job he could get as a 16 year old. As his skills progressed he changed jobs a bunch of times with each one becoming progressively less crappy.
He got there by working his butt off to learn everything he could about programming. On his own he learned everything you would expect from a CS program but was able to go into far more detail than a semester course. I've seen him talk circles around guys with formal CS training.
There is someone out there who will pay you to program. The pay will be peanuts and the work will be boring but once you have a job and some experience on your resume it will get easier.
Also go get your GED. With the GED you can say you graduated from High School and have the option of other formal education in the future.
Contribute to the project, starting with simple bug-fixes. They will be glad to have your help. You can then say, honestly, that you contributed code to that famous project, which puts you far beyond most candidates.
If you've been programming since 12 I imagine you do have a portfolio, it just might not be organized as such. So first thing to do is organize it this way. And if you don't have large enough projects to organize into a portfolio then you probably don't have the experience to freelance.
If school wasn't for you could you consider a GED? That would at least be something that could help you find some type of employment even if it isn't exactly what you are looking for. I don't know what your circumstances are but I'm sure people with a lot harder situation than you have gone that route.
Good luck either way.
I'm currently in a polytechnic high school (I don't have a high school degree). This is the third high school I'm in, because I always struggle with non-programming classes, in which I have absolutely no interest in and in programming classes I'm far ahead in terms of skill.
Everyone around me says I should get a degree, which I can absolutely understand, but I just want to get a job in software development, I just fear that I will later have a hard time without any degree.
I'm programming since I was 13 or 14 and since then I've invested most of my free time into open source projects (this is my Github profile: https://github.com/flagbug)
The main thing I wish I knew at your age was the difference (and progression) between the stages of freelancing, contracting, consulting and beyond.
I've helped several of my friends start their own freelancing businesses who are full time now, I'll echo what's been said many times on HN:
It's not what your education makes of you, but what you make of your education.
With the below, you can embark on a path of adding value to the world with your skills in a disciplined way to find long term clients whom you can help grow, and you can grow yourself.
The below only has value if it's contemplated, practiced, and reflected upon regularly. You'll find other things to add to the list but I think the list below is my first principles list of being successful, freelancing or employed.
The below, also, is how I approach anyone, and it turns into leads and work on it's own.
By remaining genuinely curious, thoughtful, and interested in how people are solving their problems (including excel sheets, access databases, or doing it manually), customers are validating the need for software in their lives and you need only pay attention and support them along.
I'll share with you the business model I was given at 18:
Find 10 customers who are willing to pay you $1000 a month for basic app support or development. If they won't spend $500-1000 a month making their business better, they're not a customer, but someone who wants to hire a free student. I was able to start in this way in the late 90's to 2001, and had a foundation from which to explore, maybe do more work in one place than another. Today, everyone's online and expects for software to exist for them. The key here is many places that can't hire a full time developer or person can probably afford a part time one who creates value for them.
Things that I wish I understood deeply much sooner:
Solving B2B problems solves the cash flow issue: Businesses that make money every month have money to spend. Getting people to spend their own money can be quite different.
Discipline: This will decide how our lives will go. It is the single most important master skill. The more we work at developing and keeping discipline in more and more areas of your life, the more successful we are.
Self-educate: The fact that you can self-educate is the single biggest skill that is needed in terms of your technical ability. This means learning things that weren't in my core, but rather becoming an extremely strong problem solver, which made me attract lots of interesting (and paying) problems to solve for which there might not be a lot of solutions.
Nothing gets easier: You just get better, if you want to.
Self-directed: Contemplate this phrase -- you'll be self-directing and self-educating for a long time, and it's the best journey you can imagine to get to know yourself in the midst of any uncertainty.
Date before you get married: You'll be hired in the beginning by people who will be taking a chance on you or simply like you because you're young, ambitious and have a positive attitude. So, do fixed fee projects for $1-3000 that cover risk for both you and the end user, even if you have to break down a big project into small $1-3K phases. This is a huge trust building technique with customers.
Value: This is the word I had to learn when I was 18. If I couldn't generate more value than what I was paid, I wasn't rehired. Value is saving or making a customer time or money. So I learned to find and be good at what was valuable to a customer, that I could do. What you're selling is helping the customer add value to their company in a way they can measure and is meaningful to them, which you can do for them.
Networking: This word looks like it's foreign sometimes. My networking is simple, before receiving, there must be giving. Help, help, help, share, share, share. You're not just out for a quick hit contract, but any long term ones you can find that are meaningful for both parties.
Track Record: Your education, and experience are second to the track record of solving problems you can build up. I spent 10 years working in as many industries as I ended up in, sometimes at the same time because I liked the variety. I aimed to get 20 years of work experience in 10 years of living. Now, on the flip side, I have more experience than what I know what to do with and it helps me understand anything I face more and more, it's the best snowball effect.
Attitude: I know we like to do things that interest us. If you can find helping improve the quality of others lives greatly by using a tiny bit of your skill and writing the software they need, for example, never saying no, and saying "let me think about it", those 5 words have gotten me more work, introductions and opportunities than anything.
Problem based thinking: Never, ever think solution first. Learn the problem and know the data better than anyone else before writing a single line of code.
You're not alone: I went through starting a freelancing life largely alone and endured a good 5-7 years of doubters and supporters. It's good you're putting yourself out there, and that there's a place like HN to put yourself out there.
Don't let others self-doubt infiltrate your mindset. Creativity and innovation happen in a mindset of possibility, not shooting ourselves down or letting others.
Personally, I'm getting back into the field after a lengthy hiatus. Hopefully, a bit wiser after recovering from burnout in 2005 and subsequent entrepreneurial adventures in other fields.
One thing I've started doing is volunteering a few hours a week doing tech related work for causes I support. One benefit of which is getting my confidence back. My age, 47, combined with having a lengthy period of time off can inspire self-doubt at times.
Problem solving and people skills though are turning out to be key and evergreen assets to bring to the table. Thankfully, those are also continuing to improve with age.
Never give up. Ever.
Work on your your portfolio, your GitHub profile, and your open source contributions, and understand that finding a job is a job. You might want to send a lot of resumés, but that's not where you begin. First, research companies. Find companies that were founded by college dropouts who did well.
I don't think freelancing is a bad thing, but if you believe it's your only option, I disagree.
Take a look at the fine print of IT/programming jobs ads:
Master Degree in Computer Science blah blah blah... or equivalent experience.
If you translate 'equivalent experience' into it's true meaning, it reads: you are able to do the work.
Companies know as much as anyone that it's a crap shoot whether an engineer with a degree will do any better than one without.
The owner of the near 30 person company I work at, a very capable and respected programmer himself, dropped out of high school, and does millions of dollars in business.
As far as your age? That makes no difference whatsoever these days.
Mind if I email you as well?
Get your GED, get an AA in something at a community college (they have open enrollment in most cases) and transfer to a decent school. You can (and should) get a job, but being the guy without a degree will always make it more difficult for you.
Firstly, freelance is not your only shot. It's entirely possible that there is a company out there looking for a junior web developer, so don't discount that possibility.
Secondly, try to find some more experienced web developers to advise/mentor you. Where are you located? There may be an appropriate location (e.g. Hacker Dojo in Mountain View, the Noisebridge Hackspace in San Francisco) or a meetup (check meetup.com for Meetups aimed at Ruby, JS or web developers in your vicinity). Having someone who can advise you face-to-face will be better than relying purely on our advice here on HN, and there's the possibility that they'll be able to point you in the direction of potential clients/employers.
Thirdly, think about what sort of work you want, then create a showcase web site/app to demonstrate the fact that you have the skills necessary to do that work. Put all the source code on Git so people can review it if they want to, then approach potential employers and clients with the following approach:
Potential employers: "Hi, I'm a self-taught programmer. I'm looking for an opportunity to use my Ruby/JS/web skills. Here's an example of the sort of work I can do. Could I come in to meet with you to discuss whether there might be a position for me with your company?"
Potential clients: "Hi, I'm a freelance website designers. I think I could design a great website for your business. Here's an example of the kind of work I can do. Could we arrange a meeting to discuss?"
Fourthly, expand your skillset by learning how to do more stuff that will improve your chances of getting hired. For example, if you don't know anything about databases, then learn how to set up MySQL and use it to store data as part of a webapp.
Finally, don't worry. All web developers were self-taught until comparatively recently. There's plenty of scope for a young, enthusiastic, self-taught developer to build a career without having finished school!
Feel free to contact me directly (e.g. via http://jackgavigan.com/contact/) if you'd like to discuss your situation in more details without posting personal information publicly.
Your skills mean nothing if you can't sell your skills.
I turned in applications to many different businesses, telling each one that I would "add value" to their company. I was laughed out of a computer repair shop, told that in my rural area, it is impossible to find tech jobs.
The first place that called me back was McDonald's. I told them that I would take the job, but then Taco Bell also responded. Taco Bell was closer to my house, so I called McDonald's and told them sorry, but I had a better offer.
I worked two shifts at Taco Bell, proud in my uniform, making tacos and burritos as fast as I could, before a local hardware store invited me in for an interview. After passing a drug test, I was working in retail. Hardware, building real things and the like is a passion of mine. I started at $8.50/hr, better than minimum wage. The hours piled up fast, and before I knew what was going on, my bank account had 4 digit numbers on the statements.
My mom also helped me get another job at the restaurant where she works. I washed dishes. Me, with a 4.9 GPA, selected as "Super Student of the County" or some award I can't even remember, was elbows deep in dirty water for 8 hours a night after a 6 hour shift selling nuts, bolts, and brooms. It was hard work, I could barely stand after unloading the dishwasher for the last time, mopping the floors, taking out the trash, polishing the glasses and silverware, locking up, and driving home.
This may sound like it's beneath you because "you can code". So can I. But working for minimum wage at one job and barely above at the other, I made about $100/day, not counting tips from the restaurant (which have since payed for a new laptop) and before taxes.
I met some great people at the hardware store, and although I had to give it up when I took a few math and language classes at the local college, I loved it. I still work at the restaurant and I am typing this after a shift. My arms smell like funky dishwater and my feet still hurt. But I worked six hours today for $48, and probably $40 in tips. I don't know about you, but $14/hr is good pay for unskilled labor, even though I can hack or code. I could give freelancing a try, but I am pretty sure it would end in the failure this echo chamber loves so much. Instead, every other Saturday I take home a paycheck and deposit it on Sunday. If I decide to pick up my floor where I throw my tips at the end of the night, I am rewarded with a few hundred dollars. This will easily pay for gas and other expenses. A large portion goes to savings for my next 4 year which will be largely income-free. The leftovers go wherever I want. I decided to learn electronics, so I bought an arduino and some components for about $100. 6 months ago I couldn't have imagined going to Radio Shack and laying 5 Jackson's on the counter to walk out with something that fits in the palm of my hand and will let out the "magic smoke" if I mix up GND and RAW.
The majority of comments have told you to build your portfolio and find pain points of businesses around you. Instead, I urge you to find a job, be it at a McDonald's or a 5-star cafe. Perhaps at a Walmart. You are young and you don't need to work for a living wage.
I used to think that the only thing I would have to do with my hands after school was type. Now, I scrub dishes. But I also have 35 hours a week where I am forced to be away from HN, Facebook, and Reddit. I get to shoot the shit with my coworkers or daydream about how we are all machines behind an elastic load balancer and if anyone of us were to cut our hand off, the kitchen would experience a cascading failure and it would be a very long night.
My job provides structure to my life, something I am terrified I will lose next year when I go across the country to be a freshman again. It also has a guaranteed income of $8/hr. Tips are good. The meal at the end of each night is great.
Instead of spending hours hounding LinkedIn, Fiverr, or ODesk, I drive 12 miles and put on nonslip shoes. It's easy, it pays well, but most of all, its fun.
My advice: bootstrap your career with the MVP of jobs: anything with regular hours. Pay doesn't matter as the hours will melt away. I would stay away from programming or IT for minimum wage, as that will probably poison your passion for computers.
Step 2: Begin Networking w/ Attendees
Step 4: Offer to be an intern if you have to
0. You're in it now. No matter what happens, no matter how unfair, this is your life now, and you're up to your neck in it. It's entirely up to you how this turns out, and it's going to suck.
1. Get your GED. One more test isn't going to kill you. Find the time, study, pass, get on with life. Yes, you need to do it. Yes, it gives you other options. Yes, if you don't do it now, you'll forget absolutely everything and never be able to do it later.
2. It's all about experience. I hire engineers for a living. The importance of your education is inversely proportional to the amount of experience you have. Ok, so that's not universally true; no one wants a self-taught doctor performing brain surgery, but you get the idea. From now on, your life will be about optimizing for the experience you'll receive. You need to collect it via self-generation (see later) or otherwise.
3. Mentors are paramount. Find a smart person, attach yourself to them like the leech you now must be, and drain them of their smarts. You are now an information parasite. Go forth and feed. When you enter a room, start a job, work on an open source project, your first task is to find someone that knows something (pretty much anything) and force them to teach you what they know, immediately. Give them a reason to do it. Show them you're worth it.
4. Become a voracious reader. I learned everything (technical) I needed to know for my first job from O'Reilly books. I lived on them. Steal them if you have to (I'll give you a PDF of mine for free, if you want it - see below). Read them, do the examples, build something that teaches you something. Once you've decided the system can't teach you, you become your own teacher. Sorry, but that's what you've signed up for.
5. Learn how to learn. Similar to the reading thing, figure out how you learn new things, and get insanely good at teaching yourself what you need to know. This is now your life. I found I was not so great at frontend work, but I could wrap my head around how distributed systems, especially data infrastructure, worked. Find what's intuitive to you and then figure out how you taken in new information. Then go do that. A lot.
6. Be your own cheerleader. Very few people are going to invest in you. It's going to hurt. You need to build your network (see below) but you're going to have to rely on yourself.
7. Build a network. One of the main things you need is a solid network of connections. These can be people you've worked with, want to work with, know from the open source world, meet at conferences and other events, and so on. Shake a lot of hands. Smile and nod. Be charming. Impress the living shit out of people without being a tool.
8. Generate a body of work. If you don't have anything to point to, no one is going to hire you. Freelance is just a series of micro-jobs (hint: it's harder than finding a job because you're effectively constantly applying). Join an open source project and become prolific. Fill github with evidence you know what you're doing. Join mailing lists and answer questions endlessly (we've hired people at Cloudera because of their participation in the Hadoop community alone). When you get tired, see #0 above.
9. Never let anyone tell you who you are or what you can do. For example, what makes you think you can't get a job? If you're starting with "I doubt..." you need to take a serious look in the mirror. I had a teacher in high school tell me I would never be anything, that someone had to pump gas in the world. "I'll show you," should be your new motto. Live by it, die by it, show them they're wrong.
10. Overcompensate. While not exclusive to someone in our shared position, make sure you push harder than anyone else around you. Learn more, think harder, be more tenacious, be more memorable. You'll always find people smarter than you, and that's OK, but you shouldn't ever stop trying to be smarter than them. It will make you better.
11. Hustle. You're already playing by a different set of rules. Always be hustlin'. To my earlier point about a free copy of my book, if you want it, come find me.
12. Give them a reason. You need to find someone who will take a chance on you. I got a job once by emailing the CEO and saying, "I want to work at XYZ, and here's why you're going to hire me." It worked. Stand out. Give them a reason to take that chance.
You can decide this is feel-good drivel, or you can trust that this is what I do (or at least try). I am not some beautiful and unique snowflake; if I can do it, you can. Go find a job. Screw freelancing. Don't talk yourself out of something because the rules say you can't have it. I believe in you. (I'm also pretty pissed off that you got me to post something on HN. Way to go, jerk.)
Since you've been programming since 12, I can say you are far far better off than many of us already. I for instance, got my first computer around 15 and had to learn how to drag a mouse around a screen, touch type, and use the internet.
What you need to realize is while you also need technical skill, when you're starting out, that's really not the most important thing. Very quickly you will learn that many people are looking down on you or see you as an incredibly cheap deal. You're a dropout, and it may sound crude, but no one cares about your life or your problems. They really don't. They probably think you're some lazy kid who is money hungry. But it doesn't matter. Most of these people will NEVER hire you. And that's okay; ignore them. Many people still need the skills you have, no matter how refined those skills may be. Now you have 2 main barriers to getting them to pay you.
1. How do these people find you? Do they type into "the Google" and find your beautiful portfolio and contact you? At this point, perhaps not. Perhaps you need (shocking, I know), to get off the internet and meet them before they even do that.
2. Can you solve their problem? You may not have a portfolio, and it wouldn't matter, except how do they know whether you can solve their problem? I don't care how you accomplish this, but that's all really all they want to know. You'd be surprised how a simply/ugly static HTML page can blow the mind of certain people. Many do not even know what they need to be able to hire someone online to do it for them. Just using email is enough of a hurdle.
One was a private server for a small online game. A small online game you say? What does that have anything to do with web dev? It doesn't, I enjoyed the game and did it. But it did help me immensely with not ending up on the streets, I used my web dev skills to improve it and built a community around it, and made a bit of money. Most importantly, I met many people who could later act as testimonials to their friends and family of my web development skills. Most of this stuff happened the same time I was refining my technical skills.
The second venture was started because of one of the players on the server. He referred his friend to me who had a business idea but was unable to execute without programming knowledge. We built 2 large online communities and made a portion of a million dollars in advertisements and sponsorships. This later allowed me to officially start the freelance business I have now (I just turned 21). Which allowed me to secure multiple full-time offers at reputable companies despite my (lack of) credentials, speak at some local events, and charge significantly more (aka bring more value) than I ever imagined I would back at 15.
Enough about me, let's get back to you. At this point, the biggest skill you need to learn is not technical, it's learning how to influence, persuade, and prove to potential clients that you can do the job. I have to get going so I'm going to stop here, but you most definitely have everything you need to be successful as a freelancer, don't let anyone tell you you don't.
But it takes a heck of a lot of determination and hard work.
P.S: If you're really unable to find your first client, I do have a small project making doing some front-end work for a website. Very simple HTML/CSS/JS stuff that I was planning to give off to a friend to learn. But please, do everything and anything you can to find that first client yourself. It will help you a lot more in the long run than people on HN feeding you projects. Good luck!