Ask HN: How do I earn money as a teenage programmer?

189 points by Sxw1212 ↗ HN
I'm having trouble working this out, because I have to earn money to pay for car insurance and such, but software companies are not willing to hire people my age for good reason. My resume is also limited because I have only built applications for a few businesses who I had previous connections with. I'm looking for advice for how to start freelancing, because that seems to be the most viable way, without a large resume to start.

102 comments

[ 2.1 ms ] story [ 161 ms ] thread
Search for patio11's posts. Also, develop a great website as part of a portfolio.
I would recommend getting involved with Udacity as a classroom mentor/forum mentor/project reviewer. All you have to do is demonstrate enough domain experience for whichever course you want to help out in. You can do that by either completeing the course in stellar fashion or demonstrating your skills via a stellar personal project. For more info on it, you can check out my other comment from a couple of days ago: https://news.ycombinator.com/item?id=14472353
On a similar note, maybe offer to teach programming during the summer. There may be parents who are willing to pay a bit so their kids can be exposed to programming, and being a kid yourself, you could create a fun and non threatening atmosphere. Plus, for kids, it's not so important that they learn exactly the most marketable languages and techniques, but just to expand their brains and tickle their interests.

Another idea is to tutor introductory college students. I made reasonable money in college as a math tutor, even as a freshman. The college had a tutoring center, who paid my wage, so I didn't have to deal with collecting money from my students.

Make open source contributions and establish yourself as someone whose code is trusted and accepted by your peers (the open source community). I don't mean to just publish your own open source project, but rather to be involved in other people's projects, specifically the ones that you plan to use for employment.
Get on Upwork or similar sites and price low and deliver. You can up your rate as you earn reviews and a portfolio.
What languages and platforms do you know?
Don't use UpWork or similar. The rates are low even for a teenager.

The best projects and rates are through your network.

Family friends, businesses your family uses like you mention.

So start asking around who needs a website or web application. Those will be your best gigs, projects and clients.

Look for ways to setup recurring revenue. Maybe a business needs a website offer to build them a basic website, maintenance, hosting, backups and updates for $99/mo set it up with Stripe or Paypal recurring payments. Increase the cost as pages grow. Offer to include once monthly limited updates, usually clients will only update a page every month or so but you can adjust pricing accordingly.

Or if you build a web application for a client offer a maintenance plan that includes hosting, maintenance, database backups, etc.

This podcast has some great information to start building your own products and apps.

Startupsfortherestofus.com

And like others have mentioned patio11 has tons of great info.

Good luck.

>Maybe a business needs a website offer to build them a basic website, maintenance, hosting, backups and updates for $99/mo set it up with Stripe or Paypal recurring payments.

I did this as a teenager and it ended up being a nightmare because you become a magnet for people who want thousands upon thousands of work done for no upfront cost and a low monthly fee. And it puts you in a terrible spot as you are strongly incentivized to say "Yes" to those people because you are desperate for the money and experience.

My recommendation would be to estimate and bill for the actual time put into those projects and have a fair hourly rate that reflects your knowledge and experience.

I agree. Never sign up clients on a monthly arrangement until you have a decent amount of IP available that is readily re-useable.

That way your value proposition for a monthly fee is that it effectively acts as an extended warranty, and saves the upfront costs for a client. But you need to be confident they will sign a term agreement (24+ months) and they need to be confident they can depend on you to fix things when/if they break over that long period of time.

I've seen plenty of scenarios where money has been left on the table for a client who was willing to pay upfront and the contractor did themselves out of a nice fat cheque by talking the client into a monthly arrangement (which just gives them a debtor issue).

The rates are low for your first jobs, but if you're good at what you do you can still charge a lot more on those sites.

Yeah, they're obviously not as good as your own network. But, if you literally don't have anything else going on they're a start.

The best projects/rates are through your network if your network is in a rich country. For someone who is in an average country, and even more so for a teenager, upwork and similar places can be very useful. Definitely were for me when I was a teen.

Regarding the rates being low on sites like this. Sure there are low rate jobs, and a bunch of people who compete by lowering rates. That doesn't mean you have to do that. It's completely possible to ask for more money on upwork & friends. The classic patio11 advice of charging more works just as fine on upwork as it does elsewhere.

If you're in a rich country, you're still very likely to get very poor rates through friends and family as a teenager, around 1-10% of market rate for a college graduate, at least that's my experience, but maybe I just sucked at marketing myself when I was a teenager.
The best projects and rates are through your network. Family friends, businesses your family uses like you mention.

Indeed. Consider taking out an ad in your school newspaper; I had good luck with that back in the day.

(comment deleted)
Start with minimum wage for your first project. You're likely going to suck, and you don't want to piss off your family friend or have an awkward money discussion.

That's for strangers for business relationships. You should up your rate every 2-3 months to begin with as you build up your portfolio.

y, increasing your rate is a good idea. Don't start with minimum wage though. For early clients I liked to try to do things at a fixed fee that I had a good handle on how long it would take. With a fixed fee they can't see your hourly rate and won't raise a red flag if they are paying you more than they make. Some clients are really sensitive when they hear things like $50 or $100 per hour.

For starting out I would target at least $20 per hour as your target hourly rate. Sounds like you have a bit of experience so you could probably go higher. Use this target hourly rate to set your fixed fee prices.

As you gain more experience and get better clients and projects increase your hourly rate. You'll get faster at things too. So you can increase your rates over time up to $50/hr and $100/hr+.

Learning Rails or Laravel to expand your skills and earning potential. Plus they make working on even small projects easier/faster. I'm a big fan of Laravel. Check out forge.laravel.com for setting up and deploying to VPS.

Also break projects down in to phases. That way you don't have a large fixed fee phase that takes up too much time.

For new/most clients get 50% up front and 50% upon completion for each phase.

Create a simple contract that outlines the scope of work for each phase. If there are changes or additions make sure to send the client an addition to the scope of work with a price increase to approve for that phase.

$100 a month for website maintenance and backups?

In the UK the low end of website design has been eaten up by the DIY web-builders (eg Wix). Usually you can tell, because of the inferior (!) design the small companies that aren't using such tools - often they appear to be using "bedroom companies".

When you get up to a reasonable price then IMO you can't expect to get a good enough product from a singleton worker any more (I used to do some full-stack web design/dev). Sure the design could be great, what about the back-end security, what about the optimisation, what about the SEO, social media promotion/interop, ...

Even just a couple of years has changed this market considerably.

That said small businesses don't always know about the advances, so you can probably still get work.

For local businesses you can sell a package at $99/mo for creating the site, providing hosting, backups, maint. for a simple 4 page site. You take a little risk forgoing the initial payment for building the site but once they are on board you'll make more over the next few years. For a teenager once you have a few of these on board you won't be as hungry for taking low budget projects. But yeah lots of businesses expect a full site for $375.
I've been there while I was still in the first year of college of a 5 year MSc in CS course and needed some extra cash.

I started on Upwork with a very low rate (~$20/h) and applied to as many jobs as the platform allowed me to, with a custom cover letter for every single one. It was time intensive, but without any reviews it's your only way to stand out.

After I got my first project, I made sure that my client was blown away by everything: communication, turnaround time, code quality, etc. When I was sure the client was happy with the result, I asked him if he could leave me a review describing the process of working with me. By asking, you're letting him know that his review matters, and he'll probably put some extra effort instead of just writing something for the sake of it.

I kept (slowly) increasing my rate and continued sending custom proposals for clients. This is your advantage over all the low bids you can be sure they're getting.

After a few projects under my belt, I've built my personal portfolio, making sure Upwork reviews were there, along with a small description of the projects I completed. I've published my portfolio around in a few relevant websites and this has brought me client work directly to me a bunch of times.

After a while, you'll notice you're getting more proposals than you can handle, mostly uninteresting and low pay. That's when I've set my Upwork rate to something high enough that clients that weren't serious just wouldn't contact me.

I was 20 when I started doing this. I'm 23 now, with my MSc almost complete (just delivered my thesis this week) and a remote job working full-time at a startup with a great salary.

This is not a fool-proof plan, I may have gotten lucky here and there, but it is absolutely viable to do this without a resume. I've never had a resume to this day.

(comment deleted)
Can I ask what type of skills you recommend for upwork? I've done a lot of mobile and now I'm working in Unity and when I looked through Upwork I didn't see many opportunities.
I'm not sure how well this advice translates. I found my first job (as a teenager) by scouring craigslist. I sent my resume probably to 3 or 4 hundred companies over the course of a few weeks. Finally, I found one that didn't want a resume but wanted me to complete a project instead. I spent a few hours working on that, submitted it, and got called back -- they didn't care I was a teenager and paid me $23/hr on a contract. This was fantastic money, since the other places I was looking at were places like subway and best buy.

So again, not sure how well the advice translates to your area -- but try looking for places that ask for coding samples or projects instead of resumes.

The most honest answer is you don't. Unless you are a legit genius-level developer, in which case you wouldn't be posting this question on here.
This may sound mean but truth of the matter is - a lot of people think they're way better than they really are.

I wouldn't trust most working developers I've worked with to be able to deliver me something decent from start to finish, alone.

That's why companies have BAs, managers, testers, etc. Because doing it solo is a rare feat, unless we're talking gluing a wordpress theme together, in which case I'd recommend they look into squarespace :)

   I wouldn't trust most working developers I've worked with to be able to deliver me something decent from start to finish, alone.
I have the same feeling for a lot of my CS university peers but yeah like you implied being on its own is a different situation
No need to be a genius, a passionated teenager can do as good as a junior dev that went through university
I'm typing this on my way from work to university.

I'm 19 with no formal qualifications except high school. Not a 'genius'.

There are jobs out there for young developers!

I paid my way through private high school by building websites for small businesses 19 years ago. Nowadays you can build a CRUD web app with the same effort. Many small businesses will beg you to solve their little technical problems.
Not sure how well the market is doing now, but I made quite a bit of money (half of fulltime jr dev salary) doing freelance Minecraft development work off of forums like SpigotMC.
Keep programming fun and do a normal job. Imagine that you decide to pay for your car bills by working on some type of car garage place, either doing mechanics or serving customers. By being part of this business you will learn many skills that may not seem as important as the latest Tensorflow coolness, but are best learned now rather than later. Learn how to put the customer first, learn how to negotiate, learn how to survive being on your feet all day, take on responsibility, have great camaraderie with the team, learn how to be an entrepreneur, learn about how much effort a company has to put in to pay taxes, staff and suppliers.

Sure you will be too tired when you get home to do all that wonderful programming, but this is not a forever job, it is a job that gets you solid experience that may be more useful than you think.

For instance, imagine some fantastic Tesla gig comes to town. You want to be programming that centre console with some Tensorflow coolness. You are up against some other guy that wants to do the same. You just so happen to know how to sell a car because you have done it, you have also done it as part of a team and appreciate the nuances of it. Your idea of what shows on the centre console will be better than the other guys because you have seen how customers behave on the showroom floor. So for you it is not just a programming job, it is about customer satisfaction and the bigger dream.

I provide an automotive analogy here, I recommend any 'normal job' and that can be in retail or in factories or an office, it matters not. Specialist sales is true retail, stacking shelves or sitting at a till is not what you want.

Essentially all software is for someone or some industry, clearly there is 'plan9' exceptionalism, but the general deal is that software solves a real world problem. So you can do normal jobs in this real world, to therefore understand the world of the problems that the software is trying to solve. So if you work in retail and learn how to put the customer first, that will come in handy if you have to do online sales stuff. Will they want the guy that sat in the basement programming, or the guy that spent time hard at work learning the core thing the hard way? I suspect the latter.

With this strategy you can keep programming fun. By that I mean not patching some legacy system that needs a complete rewrite but that is organisationally impossible. It means not being micro-managed. Also, with 'normal' jobs, the hours may be long but you don't take your work home. With software there is none of that, it is as bad as studying for always having more one can do.

With a lot of normal work there is an aspect of where you are making the world a better place and making a difference. If you find your work is valued by customers or the local community then there is job satisfaction that is quite hard to find if sat behind a screen.

Every business has pinch points, these can often be automated by someone who can code. So in that apparently mundane factory you might see an opportunity to solve a problem or two, in code. It is for you to see these opportunities, however they are everywhere and you can develop a niche new product for your company, if you polish it beyond MVP you might be able to sell that across the sector. For instance, returning to the car analogy, you might find that a common problem in a particular dealership where a product puts you through a hoop or two more than needed. You could be bright and fresh to the problem and get it right for those too encultured in the old ways to see that better is possible. Having solved the problem for your original employer you could then put a 'v 2' version of your software out in a specialist marketplace, then learn how to support and sell a full commercial version of what you originally built. You can also do this whilst keeping the original normal day job. In making such a creative solution out of thin air you have got on with the job and not stood around waiting chicken and egg style f...

When I was in high school, my summer jobs included: lawnmowing, building construction, dishwashing, and being a gas-station attendant. It worked out just fine.
And so you're saying that because you did this work and he would like to do technical work that somehow he is wrong? What value are you bringing to this discussion for this young man?
> And so you're saying that because you did this work and he would like to do technical work that somehow he is wrong?

No.

> What value are you bringing to this discussion for this young man?

My goal was to help him not feel stressed out if he has trouble finding this kind of work right away.

My school used this online grade management system and the students access to it was really bad and only showed the letter grade for each calss average. So I made a python app to manage all your grades and calculate the by scarping the online site using python. I sold the app and made some money so i don't know if you can do the same. Otherwise just keep learning and follow everyone else's advise.
>but software companies are not willing to hire people my age for good reason

I doubt it. I've hired two 18 year olds to work remotely for me, one of whom does excellent quantitative analysis I've yet to see out of anyone I've employed with an advanced degree.

Companies are by and large very stupid. Don't devalue yourself or your skills.

Craigslist is decent.

One of the best things you can do is invest in a Github or open source portfolio where you demonstrate proficiency with various technologies, methods, and algorithms. It'll be easy for me (or other hiring managers) to look at it, ring you up, ask you questions to make sure you didn't fully steal all the work, and task you with some basic contract work to see if it's a good fit. Then we go from there.

I got a lot of recruiting requests after I contributed a pretty solid amount of documentation and debugging work towards Facebook's HipHop (now hhvm, sort of anyway) repository and project.

You won't get paid upfront, obviously, but consider it a good investment. Hiring managers are more increasingly wanting to see proof that you can do work, especially independently.

Good luck. And if you're handy with R-stats, quant work, machine learning, and maybe even some Python/shell programming (have an application that could use some freelance work), hit me up. Info in my bio.

Seconded, and can confirm. I came to my current software company at 17 and I've been treated fairly to my skill level since (18 today). There are people out there who will see beyond the age, if you look for them. I also fully agree with investing in open source portfolios, and being able to explain how / why you made the choices you did in projects. If you want to go freelance, I'd also suggest talking to local smaller businesses, since that's where found it easiest to find willing clients. But there, again, having a show-able portfolio of work that's similar to what you'd want to be doing goes a long way.
Sure, but what if he's 16?
(comment deleted)
I started doing remote web development for a company I'm still involved with at 16.
Step 1: solve someone's problem

Step 2: collect money

The small business world is filled with unsolved problems. Get out there and find 'em.

Open an account at freelancer.com and similars and see how the system works and what can you offer. It really works, though competition is high. This will help you build a portfolio and make money in the process.

Search for people problems and build an app to solve it. Apps are hot.

Github portfolios, open source projects, etc... may make you look important but it does not generate direct income. Try to avoid the ego trap there.

Keep checking in with your network for jobs they need that you can do. Present yourself well online (your portfolio and yourself). Expand your network.

Two previous threads about starting to freelance: https://news.ycombinator.com/item?id=8761088 https://news.ycombinator.com/item?id=14424699

I'd pick a technology to focus on, and present yourself as a person who specializes in it. Put your skills and work first and foremost online / on your resume. Choose something you can use quickly, and fully build the projects you have or are about to have. Whatever it is. Start with the HTML/CSS/basic JS. Or Wordpress, Drupal. Or React or Rails or Flask. Practice most for the job you have. Second most for the job you want.

Work with the businesses you built things for to be references, and if at all possible get a good looking project one to be publicly accessible. At least as a few screen shots. Clients want to see what you've done.

https://en.wikipedia.org/wiki/On_the_Internet,_nobody_knows_...

Good luck!

I was in your shoes 10-15 years ago. Here's a few bits of advice:

* Upwork (well, Elance back then) worked out pretty well for me. The skill test are a nice way of showing that you can do the work without having much history.

* You don't have to tell everyone that you're a teen - don't lie about it, but don't shout it from the rooftops.

* As other folks have mentioned, a GitHub and/or personal website can help you.

* Create a couple of side projects - they don't have to be that original or full-featured, make a simple game or something. Just put something out there that you can point to and say "I built that".

I do some mentoring and also occasionally hire folks for contract work. Email is in my profile if you're interested in either.

I made a few thousand a year as a teenager in addition to a typical teenage job at a bagel store/CompUSA by leveraging family friends to build websites for their pet projects like a craft business or band website. You have to actively market yourself and constantly reach out via parents, but if you are persistent, you might find work. People will often think that a teenager is both cheap and capable (which they often are) so you might be able to get contracts that formal companies cannot. It takes a lot of practice to understand how to communicate with clients but you will get the benefit of the doubt as a young person.
It isn't sexy but small businesses need help setting up websites and stuff like that. It's good experience both with programming and also working with people (which is usually the hardest part of any programming job).
Try UpWork. In the past I have used UpWork to hire a programmer aged 19 or 20 and paid $23 per hour.
Big companies work like mafia.
As someone who started very early in his teenage years doing something similar to provide for his family and pay off family debt, I'd like to think my advice is at least somewhat relevant.

> software companies are not willing to hire people my age for good reason

First of all, many people have not been through this and are unable to relate. I'll tell you now, yes, as a teen, it will be incredibly difficult regardless of your capability, to have buy-in from the wallet holders of these companies. However, there are ways to mitigate this while not lying:

- Differentiate yourself from your competition. Sure, everyone can code, sure everyone can talk and say they can deliver, that they're meticulous and detailed-oriented. Everyone sounds the same, so how do you sound different? Think about what's important to the business owner. Truly understand why they are pursuing a certain project. Most likely, someone didn't just dream up a project and decide to dump money into it; it's an investment, they want to gain something from this effort. Speak to their hopes, address their fears, and demonstrate an understanding of their business. This insight is sorely lacking in our industry, especially amongst developers who are often too stuck in the mental map of their software architecture, and miss the bigger picture.

- Do not draw attention to your age. I don't want to get in your head that older people, business people have a prejudice against you simply because of age. But it's there, it's incredibly noticeable, and invites questions. Sure, most people will not take issue with your age, but subconsciously, all sorts of questions arrive in their heads. Trust me when I say there is little you can do to ease most of these concerns, no matter how reputable you are, how amazing your past work has been, or how mature you seem. The answer is simple: don't make mention of your age or anything that may indicate you're a teenager. If possible, avoid phone calls and in-person meets; be sure to mention early on that email communication is preferred, and that you are more accessible via email. Over time, if people notice you are more responsive via email, that's how they will reach out to you.

- If they're not going to buy, they're not going to buy, learn to accept it. You will invariably face a lot of rejections, and it may be because of your age, it may not. Either way, accept it and move on. If someone tries to lowball you "because you lack experience", "you're too young", you do not need to beg and chase them to "give you a chance". Don't start off on the wrong foot, it'll cause more headaches than it's worth.

- Avoid bidding sites. It's a rat race to the bottom. You're at the whim of these sites, and whenever they feel like it, they'll increase their cut while offering you nothing more of value (see: Upwork changing their fees from 10% to 20%). If you absolutely have/want to, charge your standard rate, don't lowball just so you can get contracts.

That said, all of this is assuming that you have a lot to offer and are good at what you do. Focus on your personal growth and learning, try to take projects that further that mission, and focus on providing value.

Good luck!

I'm in Canada, we wouldn't discriminate based on your age (in fact I think it'd be illegal).

I'd say start contributing patches to open-source projects you like. You'll have to fork them, which will make your Github page less empty (but no one will be fooled into thinking they are yours), and you'll learn how the open-source world (and therefore some teams) works.

If you don't like any particular open-source projects, start finding some to like because it's a big part of the culture (unless you absolutely want a corporate soul-sucking job).

I am in your position right now. Being 18 and working part time when having school / full time now because of summer break, and doing this since I've been 17.

My biggest advice: get involved into local meetups. Talk to people, try to make a good impression. Try to get friends with the organizers, so you can become a coorganizer eventually.

I'm getting a lot of job offers, but really, the only worth looking at, are those you get offered by other programmers you get to talk with.

Try to read a lot of development blog posts/be active on chats as this way you get knowledge to make up for your lack of experience when discussing technical topics.

EDIT: Addition: Nobody cares about your age if you can deliver.

One thing I'd add: be eager to find opportunities that aren't just money-makers but that help you move up, meet people who are better than you at what you do, and can help you grow.