Ask HN: How do I earn money as a teenage programmer?
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 ] threadAnother 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.
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.
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.
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).
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.
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.
Indeed. Consider taking out an ad in your school newspaper; I had good luck with that back in the day.
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.
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.
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.
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.
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.
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'm 19 with no formal qualifications except high school. Not a 'genius'.
There are jobs out there for young developers!
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...
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.
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.
Step 2: collect money
The small business world is filled with unsolved problems. Get out there and find 'em.
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.
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!
* 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.
> 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'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).
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.