Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What is the best way to spend my time as a 17-year-old who can code?
161 points by jmeyer2k on Sept 24, 2017 | hide | past | web | favorite | 180 comments
I'm 17 and I can code at a relatively high level. I'm not really sure what I should be doing. I would like to make some money, but is it more useful to me to contribute to open-source software to add to my portfolio or to find people who will hire me? Even most internships require you to be enrolled as a CS major at a college. I've also tried things like Upwork, but generally people aren't willing to hire a 17-year-old and the pay is very bad. Thanks for any advice!

My GitHub is: https://github.com/meyer9

I was 17 once. I could code once.

What's the best way to spend your time? Basking in the sun. Finding a scam to score some schnapps or beer or weed. Telling somebody you love them, and just going for it. Recklessly driving a car at a high rate of speed down an old country road. Learn how to play a bass guitar. Spend your waning hours getting your hands dirty while there's still time, and before the world judges you too harshly for wanting to live in it.

And if you've done all that, and you're bored with it, maybe it's just not for you, or whatever. Then work on projects that interest you. I spent a lot of time perfecting photo galleries, and was able to stretch that in to a modest career and a house that went in to foreclosure. Linux could use a lot of things still: there isn't one good kick ass music player to rule them all like iTunes on the Mac. There just isn't anything for organizing photos like iPhoto. There's gaps in the Linux user experience that need filled with good competent software that isn't a maze of checkboxes and sad UI/UX. And if Linux isn't your bag, well, fucking learn some of that then. When I'm not a programmer, I'm a Linux server administrator, because when one don't pay the bills, the other one will.

But my stone cold honest advice: Live. Live well.

I hate the notion that once you become an adult it's too late to enjoy yourself. Everything you suggested he do can also be done as an adult. Quite frankly, some people just aren't interested in doing stupid typical teenage stuff.

I could code at 17, but I focused on school until I graduated. Then I got a job doing freelance game development when I was 18. Paid better than stacking shelves at the local grocery store and I was learning.

I don't do game development now, I'm in my late 20s and run my own software development business. But I don't drink (never have), never drove a car like an idiot (I even have a motorcycle license and never rode a bike like an idiot). I went to Amsterdam and tried weed, as an adult, good luck doing it when you're 17.

I'm married, have hobbies, play sports, play guitar, whatever. But those are my personal interests, and my personal choices, everyone is different. Clearly the OP came to Hacker News asking for programming career advice, not advice on how to live his life.

So my advice is, find something programming related that you're interested in. Teach yourself, post some stuff to Github and then find some work in that area once you've got proof you can do it. Manage your expectations, don't expect to be paid well, expect resistance from ageist co-workers, but also respect them because there's always room to learn.

The time and energy cost of being social rises massively as you grow older. It's hard to make close friends in your 30s, very hard in your 40s and older.

Those early friendships and social contacts are extremely useful in later adulthood. Be it support, advice, whatever. They're also a great gateway into meeting more people in an unguarded setting, like a dinner party. It's easy to make friends when you have friends, it's much harder when you don't know anybody.

The greatest advantages of being a teenager are the free time, possibilities, and lack of responsibility. There are hobbies I had in my youth that I literally could not pull off with a wife and child. I don't care how understanding and loving my wife is, me deciding I'm going to take off for two weeks to hitchhike across Europe by leaving a short note is not going to fly.

Sports, guitar, motorcycles... they're not teen hobbies, they're shit adults to do feel like we're still alive. To feel the way teens feel lying in the grass on a warm day and not giving a damn.

> Quite frankly, some people just aren't interested in doing stupid typical teenage stuff.

Thank you.

Is it really harder to make close friends or harder to make a lot of friends?

Kids will force you into having less friends but the friends or family that remain will be closer plus kids will force you into social situations. In your 20s you can give trust more freely because you have less to lose but when you involve kids the trust and closeness requirements increase so the circle decreases.

I think the desire for a lot of friends goes down as well the older you get as well.

This guy gets it.

> they're shit adults to do feel like we're still alive

Perhaps the problem here is that there are two groups of people, those who feel like they're aren't alive and do things to try and feel like they are, and those who don't need to lie to themselves to feel better.

I understand what you're saying in your post above, but I think it's wrong, personally. I know many people now who followed that route and their lives suck now because they didn't invest in themselves early on.

Sure, you have some cool memories, I have some cool memories too, but when I sit here, with my one-year old son asleep upstairs, my dinner cooking away in the oven, it's not the past that my mind is drawn to, it's the future. I think about what the next year will hold, what the next five years will hold, and what we'll do in a decade. I don't sit here thinking back to the summer days I spent out underage drinking with friends, those memories are slowly disappearing one by one as I live my life, but I do remember the time I spent working on projects, exciting work, responsibility free work, starting my own business at 18 was better than drinking in the sun and waking up feeling like death still dressed in a corner of a mates kitchen.

You can spend your teenage years living it to the max, and when you come to the end of the line, you can derail and find yourself stuck in the shit, or, you can start to invest in yourself early on, while you don't have a wife & child, while you don't have meetings to attend, clients to keep happy, and bills to pay. While your brain is still fertile and you pick things up at twice the rate you will in your 20s and 30s.

"Have fun" is exactly the advice we should be giving OP, but telling him what fun is, that's not how it works.

So OP, have fun, in whatever you choose to do. Don't stop enjoying life, for in every circumstance, there are things that can bring you joy.

Programming wise, practise. Practise practise practise.

Start a project. Make a game. Commit every day for a year. Interact with other developers in a field you enjoy. And don't be afraid to fail.

I did crazy stuff in my youth, I wrote code, I did nothing. I worked, I played, I wandered. I don't look back, I even lost the box of press clippings I had. I sometimes run into people from my previous interests and it's weird, because they remember me and I don't remember them.

Twenty years later, I don't really remember the parties, I don't recall the code, or the late nights out... but I still cherish the friendships I made. I can trace 90% of my career to people I met, who introduced me to others, who introduced me to others. You can't make those connections at 40 or 50, you can always learn another language then. The world is full of coders who have horrible jobs, because they are poor at interpersonal relations. They're a skill like any other, and 17 is a perfect age to work on them.

The road not taken, eh? [1] People tend to overthink the importance of the decisions they made at the some point in their life. While true that you may have made some excellent friends during teenage years and got to jump-start you career but it needn't imply that you would grinding in a low-level corporate job if that wouldn't have happened.

I had to endure few shitty jobs because of lack of connections but that got fixed when I eventually did make good ones. And that happened without any deliberate effort. I can't comment on the importance of working on inter-personal skills but in my experience, being stressful about it doesn't help.

[1]: https://en.wikipedia.org/wiki/The_Road_Not_Taken

I'm not going to recant my entire life story here. But programming career advice IS life advice.

If I were 17, I would've focused less on my programming career, and more on life itself.

But that's the rub. No take backs. No retrys, no continues, no replays, no New Game+.

So I feel the best I can do, if they're asking, and I've been there, is to tell it how it is in my heart.

I agree a lot with what you said.

But I always recommend people travel internationally in their 20s. Sure you can do it when you’re older. And it is still amazing.

But there is something about traveling in your youth that can’t be captured later in life.

My theory, as a youth you are exploring yourself as you explore the world and it feels so epic. As an adult you are just looking at stuff and eating.

While I agree with your first sentence, I strongly disagree with your second.

If someone is only "looking at stuff and eating" as they explore the world, then they have given up on exploring themselves (maybe temporarily, maybe permanently). There is plenty of opportunity and reward for growing ("exploring oneself") when you're older, and choosing not to is simply the path of least resistance that many/most people seem to take.

Lots of younger people seem to think that the spirit of life starts to die after some age (30?) or life event (having kids?), but based on people I know who have passed these milestones, that is completely not a fait accompli. Quite the contrary.

It's just easier to find time to do so and find others to do the things he suggested with at a young age. Also it's an investment in yourself - all those experiences are really valuable and will pay off for the rest of your life, so good to have them asap.

Sounds like you dont have any kids. If you don't intend to have kids then your life can continue as is but once you have kids you have a new perspective on time, life and productivity.

I agree with the sentiments, just want to add:

If you don't want to smoke weed, drink/party, chase girls, play in a band, that's fine, but be absolutely sure you don't want to. And you probably never will feel absolutely sure; so just go do them anyway - that is the only way to know. A 17 year-old running around, drinking, partying, speeding, chasing girl after girl, acting awkward, etc. makes a lot more sense than a guy in his forties or thirties doing those things. You'll build social skills and have a lot of fun in the process. Of course you can still do these things as you get older, but it won't feel right. You'll feel immature and lagging behind, at least I feel that way.

People treat and perceive you differently as you age. The most valuable thing about Youth is the degree and amount of social and romantic opportunities available to you. Take advantage of them.

Wish I could downvote this twice. This post builds on the Hollywood portrayal that’s widespread and assumes what’s fun and fulfilling is basically beer, weed, and recklessly driving, etc. I assume if a 17 year old finds doing these all the time fun enough, they would not need any helpful advice in execution.

To the OP: if you don’t like becoming an average older person, avoid following average older people’s advice. Think for yourself.

I think the idea is to use the flexibility of youth to build social connections rather than academic ones. The code you did in high school, or even college, won't (typically) get you a job nor a fulfilling life; the friends you make (typically) will.

This profession, more than any other I think, can allow you to disappear from society chasing knowledge for its own sake and it's pretty easy to wind up 30 with a fat stack of cash and glowing career but no friends, no family and no way to efficiently bootstrap any change.

I completely agree, sometimes younger people are just eager to grow up and get to work.

This was definitely my mindset at 17 (and today).

And do what?

You can’t outsource the CEO role of your life. You need to figure out who you want to be yourself and execute accordingly.

And there is compounding impacts for seemingly trivial decisions you make at 17. They are more important, not less, than the future decisions on that factor.

Also, I hate to point out that 17 isn’t that young. That some people in the thread are so underestimating of 17-year-old capabilities is disappointing.

> You can’t outsource the CEO role of your life

They really need to make Alan Partridge does Silicon Valley.

I have lived some parts of my life the crazy way you describe but honestly, the only memory I have is of wasted time with idiots who didn't value who I was or what I did. I am not describing people who have beers or weed for fun, but those who have it as the only source of fun. The memories I cherish are still of hacking something, solving an intricate problem, or doing something that I didn't believe I was capable of.

There's a long-lasting joy in creating something and sometimes, for some people, it might be mightier than any crazy party would give.

I remember back in about 2001/2002, when I was an 11/12 year old with dial up, I wrote some software to send/receive UDP packets. I sent a copy to a friend, and then we tested it, and our messages were coming back and forth.

I'll never forget the wonder I felt, the joy, the prospect.

My gut reaction was to say something like this before even clicking the comments, but I think it can be better said like this: It's great that you can code well at 17, but don't let that be the only thing about you. Have hobbies that don't involve the computer, or do so tengentially. Play music. Read books. Travel. Cook. Do something with your life that doesn't involve staring at the same screen all the time, which is to say that you can still do stuff on or near your computer, but don't make it the focal point. I really like music, and I really like computers, so finding passions that mix those (like creating music on the computer, or learning my way around MIDI) is where I want to spend some time blending those passions.

Just to emphasize, parents point is to “live well”

Not all teens enjoy what is described in the first paragraph. So if it is not your cup of tea, then don’t be afraid to be true to yourself. If living well for you means spending time in your basement in front of your monitor, reading books, barely interacting with other people, then just do that. Don’t try to fit yourself in something that you are not.

Regarding coding, my advice is find an interesting project and code it in as much languages as possible. C, Java, some Lisp, Erlang, Ocaml, Haskell and Scala.

So if it is not your cup of tea, then don’t be afraid to be true to yourself. If living well for you means spending time in your basement in front of your monitor, reading books, barely interacting with other people, then just do that.

Even then, for 90% of the people there far more obligations >30 (partner, kids, mortgage, work, etc.). When you are young you are much more agile, enjoying that is good advice, or you might be 40 and missing the life that you never had. Of course, you can enjoy the freedom in many different ways - if you are into programming and free software, go to FLOSS conferences, meet people, hack together, enjoy dinner together, etc.

I started programming when I was 10 or so and was reasonably good at it when I was 17 (as good as a kid without Internet, Turbo Pascal, and a couple of library books can be). Even though I ended up in computational linguistics, I feel blessed that I got fed up with programming when I was 18, and decided to study philosophy. It was mind-expanding and lot of fun. I ended up in CS/CL, but much more energized when I would've dived into CS immediately after high school. Of course, the low tuition fees in Europe allow you to make some detours ;).

At any rate: find a nice project and find other nice/smart people to hang out with.

> you might be 40 and missing the life that you never had

I've never understood this. How can you miss something you never had? Is it that people regret not doing something? Everybody has regrets, but I'd regret losing everything I have now more than I'll ever regret not having done something in my childhood.

I knew of people in college that were socially inept probably because they spent much of their time in isolation working on computer hobbies growing up. I'd see them in the labs and they always seemed really depressed. It seemed like they lamentee not having friends being invited places, etc... I get it because when I moved to a new city I felt like I had that same problem except only temporarily. But living your life with minimal human contact with others? I'd regret that.

You have an imagination right? It's actually worse because your regretting not doing a thing that is only in your imagination which is impossible to live up to. So you're sad because you didn't do x, let's say snoboarding bit since you haven't done it you are regretting imagination not regretting not doing more of something you understand well.

I've spent too much time in basements. Leaky walls. Mold. Stuffy air. It's no way to live.

This is horrible advice. "Waste all your time when your mind is sharpest, then become a boring old stooge as soon as you burn yourself out doing stupid shit."

How about instead you balance out doing what you want and doing what's required to reach your goals, at all times?

Reckless driving is not cool, it's fucking douchebaggy. Other people are on the road, trying to go about their lives without being crippled, maimed and killed. They're all trusting you, their fellow citizens, who have their life in your hands, to treat it with respect.

I knew with 100% certainty that this comment would be in here. I didn't know which of you down-home relate-able everymen was going to write it this time, but I knew it would be here.

This is genuinely good advice.

I'm a bit surprised that so many commenters here are reacting to the second paragraph as if it described an extreme lifestyle that would inevitably lead to ruin, or as if you need to make a choice between having these kinds of experiences and being a successful, fulfilled adult later in life. Neither of those things are true.

Here's what I believe the parent post is saying, but stated differently: try all the things that life has to offer, and get outside your comfort zone. Let yourself make mistakes. Explore. Try to connect with many different kinds of people, especially people who aren't like you. Push the boundaries a little. When you find something you're passionate about, dive in, but be sure to come up for air regularly and enjoy the simple pleasures of life.

Don't let the anxieties or negativity of others stop you. If you do those things, I promise you you won't regret it.

I can't believe this is the top comment.

I was 17 once, was a good programmer, and learned how to play a bass guitar. ;-)

I have a slightly different twist on the same advice. Living well doesn't necessarily need to be the "cool" stuff such as described above. Nerdy things can be cool too. Learn math, or physics, or electronics. Studying those things was "living well" for me. It could expand your options for what you can do with programming, or for when you get bored with it.

That would have been bad advice for me I think. I loved learning about mathematics and would happily read textbooks rather than doing the stuff that I wasn't supposed to do which is ironically the stuff you are supposed to do as a teenager.

I did go out drinking sometimes and it was fun but living it up depends on your personality and if you are not naturally social its probably not going to be enjoyable pretending to be that guy. Plus at 17 everyone will see through it and not be polite about it.

I don't regret studying hard at 17. I had a passion and enjoyed learning. Was a great part of my life when other things were not so great.

High school through college is probably the time in your life when the opportunity cost of picking up new skills and having interesting experiences is the lowest.

Those things sound expensive, not everybody can afford to live that way, and many wouldn't want to!


I'm 21, and everybody I know who did this is either already burned out or in a precarious life position of some sort.

OP, don't listen to this crap here's the stuff I wish I'd done four years ago:

- Look at real systems in the wild and ask yourself "Could I build that?", if the answer is no figure out how to and try it. I mean websites, command line tools, applications. Once you start looking at the world of computing through this lens and thinking about it you realize just how much you still don't know.

- Focus on the CS fundamentals, look up the algorithms textbooks employers will have expected you to read during college and get a start on them early. The fundamentals change much slower than the latest web framework, and if you master them you'll be employable for much longer than someone who only has a long string of obsolete web frameworks to their name in 20 years.

- If you have any hobbies you'd like to pursue, find a good book on them and do it now because you're actually not going to have all that much time later. Especially if you're pushing yourself and pursuing projects, secondary things you want to learn will start falling by the wayside. I still haven't found the time to learn piano.

- The world really is full of interesting problems to fix. Here's some advice on spotting them: http://www.jdpressman.com/2017/08/28/the-favored-mindset.htm...

- Figure out what you really want as early as possible, and I don't mean "from your career" or whatever. I mean what you want period. Lots of people say they 'just want to be happy' because that's a default trope, but if you really just want to be happy your best bet is to become a Buddhist monk. You have to think beyond such things if you're really going to find a coherent self identity.

Some stuff I did do four years ago and would be hurting if I hadn't:

- Figure out how to reliably have a great conversation with people. Carnegie's famous How To Win Friends And Influence People will get you most of the way there. This is a skill you'll use every day of your life just about, and it'll really help you get towards some of that living the parent insists is vital.

- Start trying to meet people outside of your traditional high school friend group. Unless your high school is truly elite, whoever your friends are there are probably kind of stunted and ineffectual compared to the people you can meet out in the 'real world'. Pay some mind towards how much others can help you, but people who base their entire social life around that I'd think live sad cynical lives.

- Don't get lazy, keep pushing the limits of what you're capable of. In order to learn you always need to be just a little bit outside your comfort zone. If you always stay within what you know you're capable of you won't learn.

I read the subject line and essentially the same reply popped into my head. :-)

I won't disagree that the most important thing is to enjoy life, meet people who have real problems that need solving, and to build relationships that could last a lifetime.

That said, I spent a lot of time on the computer when I was 17 (and 18, 19, ....). I still draw upon that experience today. Sometimes, when I solve a problem or fix a bug, it's rooted in something I did way back when I was 17.

On the other hand, I also wasted a lot of time too.

My advice is to get close to a real problem. Intern somewhere. Do it for free. Get close to real work, roll up your sleeves, and try to contribute. And have fun.

Never, I mean NEVER, intern for free. You will almost certainly be the equivalent of 'drink run boy' and learn nothing. If you are willing to work for free, find a volunteer group where everyone is unpaid. That has its own problems but at least it's sane. BTW, 'non-profit' is not the same as volunteer.

I hear where you are coming from, and I was always fortunate to have interesting, paid internships. I don't follow your logic though.

If you are being paid, they very might well ask you to fetch lunch and dry cleaning. And, since you're being paid, you feel obligated to comply. Many interns have that unfortunate experience.

If you're not being paid, then you just say no thanks, I'll go home instead.

Take this advice on the "Live. Live well." But don't take the advice to focus on smoking weed or on drinking beer or recklessly driving a car, at least not only from a self-described doper. Living has consequences.

The fact that you are asking the question tells me you are on the right path. Keep learning and honing your skills. If college is in your path, use it to get better at fundamentals.

Don't just code. Learn the fundamentals of software engineering.

With pay comes expectations and that can be ugly. You have the rest of your life to get paid.

The first question is: how do you know you can code at a 'relatively high level'? Don't be surprised to learn that you still have a lot to learn (actually, there is always more to learn, get used to it) For example, from the small amount of code on the github, I see no documentation or tests. Also javascript and python are fine, but they are only a beginning. The best education you can get, before you go to college(!), would be to join an open source project and try to contribute. The feedback you get may be brutal, so choose a project you can care about and that is well structured for newbies (look for projects that include specific provisions for new contributors like a 'graded' bug list that have a category for easy fixes waiting to be done). Start looking at the code so you develop the skill of reading and understanding OTHER peoples' code and then fix a few bugs and submit them for review. You will learn more in a month this way than you will in a year on your own.

Coding is very different as soon as you start working with other people, whether they are other developers, customers, bosses, etc. The best way to learn those other skills is before there is money involved.

If you really want to take on projects, look for volunteer organizations in your area that might want help with their websites. They often have at least small budgets and might be able to pay you something for that help. Even your high school IT department might need some help. Ask! Does your high school get any sponsorship from area companies for things like tech or robots? Contact those companies and see if they have any needs.

Good luck!

Following on this --

OP, some helpful resources for your first PR(s):



1) Get into fitness and nutrition, to maintain a high energy level as your metabolism slows down. Also don't smoke.

2) Learn another language

3) The normal pipeline is HS-> College -> Entry level corporate job -> change jobs -> slightly better corporate job -> change job -> ... -> senior programmer in a corporate setting.... I'm at the end of this pipeline, and it pays the bills but its not that great...

How to get out of the pipeline? Make money in a non-standard way: start a tiny business, make money in the stock market, or day trade crypto, or sell t-shirts, or make an iPhone app, or start a newsletter, anything... apply your mind to making money in a different way, because the alternative is the a boring corporate pipeline. Most successful entrepreneurs start their first business around your age, which usually doesn't succeed but they learn the skills to make a better business the next time around... and keep leveling up.

4) Also if you are going to go to college, learn from my mistake... I went to college in Madison, WI, but its a transitory school (few people stay in Madison after college), so my network of people all moved away... If you know you want to work in NYC, then go to college in NYC because when you graduate you can leverage all those connections because they will probably still be in town and not all move away.

5) If you are in the US and going to take SAT/ACT study / or take a prep class and plan on acing the things. High score can result in entrance to the best school and/or tremendous savings in terms of scholarships

I want to stick up for the "normal pipeline" of going to university for Computer Science. It should really be the default choice of anyone who wants to get into programming. Granted, I know plenty of other people who are programmers now who didn't do CS, but they almost all still did university, and they regret not having done CS in hindsight because it would have been more applicable to what they ended up doing. Spending four years doing CS really does help you a lot when it comes to solving tricky problems (and on Big 4-style coding interviews). It's hard to be disciplined enough to do all of that book-learning on your own.

Also, at 17, you're likely to think you are way better at programming than you actually are. A high quality CS program will quickly disabuse you of that notion, thus allowing you to get better.

And like many others have said, of course, still have fun along the way.

Also, at 17, you're likely to think you are way better at programming than you actually are. A high quality CS program will quickly disabuse you of that notion, thus allowing you to get better.

At 17, I thought I was a brilliant programmer.

Twenty years later, I think I'm finally pretty competent, and I realize how embarrassingly little 17-year-old me actually knew.

> The normal pipeline is HS-> College -> Entry level corporate job -> change jobs -> slightly better corporate job -> change job -> ... -> senior programmer in a corporate setting....I'm at the end of this pipeline, and it pays the bills but it's not that great...

This, in a nutshell is the problem with investing your youth in coding. There is more to life than optimizing your potential as a producer so you can optimize your potential as a consumer. I, too, am at the end of this pipeline. There are worse places, but explore your options first.

If you want quality life advice, look elsewhere. More generally, don't look for it in any narrow community where most people are still young. Being young doesn't preclude wisdom but being young and narrowly focused doesn't improve your odds of finding it.

If I were starting over I would spend more time understanding my goals and values, work harder at building deeper social bonds, and invest more in caring for my mental and physical health. I think this would have made me a better person, a better parent, and even a better employee.

You've already received good information at the coding part, so let's talk about the 17-year-old part.

Do sports! One that doesn't involve hitting your head on stuff. Read some of the philosophy greats. Appreciate art at museums. Go to social events like school ski trips, meet friends and ladies (or guys if that's your thing). Make a couple minor bad decisions so you know how to handle the consequences. Go to concerts. Show your parents gratitude if they've done a lot for you (protip: they have). Don't take these years for granted.

You can be a successful coder and still have time for these things. Don't railroad yourself into workaholism, maintain a healthy balance. It'll do you good!


You _do_ realize Flash is dead, right?

Yes, but sifdine is dead too, so there you go.

So to summarize the advice from the dead to jmeyer2k:

1) Don't use Flash.

2) Whatever tools or languages or libraries you choose to use and put a lot of time into learning and becoming proficient at, don't sweat it when the die, just move on to better tools. It will happen again and again. It gets easier and easier each time.

I wanted to mention my thanks for (2). Knowing it gets easier is very helpful to know.

(I guess I commented because I honestly couldn't quite understand or figure out the logic that went into sifdine's comments.)

I should have mentioned, it also get even more fun and more powerful each time!

Don't forget to readjust your "don't even think of that because it's impossible" filters each paradigm shift.

Honestly, you have plenty of time for a career. Almost every old person you meet will tell you to live your life while you’re young.

My fiancé and I were ski bums and travelers through most of our 20’s. We are “behind” now, most of our friends have houses and kids (we are currently in our mid 30’s).

However, we’ve had experiences that you just can’t have when you’re older. Youth hostels and college bars become a bit uncomfortable as you get older. Hangovers get worse with age. You lose the energy later to party til 6 in the morning and trust me, you want to know that you’ve “been there done that” rather than always wonder if you would have liked it.

Play sports too. Team sports. It will be a way to meet people (outside of work) if you ever find yourself moving for a job. Sports also get harder as you age. You end up with more injuries and take longer to heal. Easier to learn when you’re young and made of rubber.

Finally, don’t get caught up in financials if you are thinking about a family. Do that while you’re still young (maybe mid to late 20s?). It becomes harder and harder to have kids as you get older.

If you’re introverted like I am, you’ll be happy that you forced yourself to get out of your comfort zone.

I’m not saying don’t code. I’m just saying strike a balance that works for you. That job title may not be as gratifying as you think.

What I did at your age: find local companies that need small gigs. Forget about trying to use those gig sites, you’re just competing with countries with super low wages - not worth your time. Get some experience under your belt then get a salary job somewhere, pay won’t be great at the start but you’ll learn a lot real fast.

You can study a ton and learn all the algorithms in the world but you have a lot easier time learning on the job in a position where you wouldn’t need them. If you’re still in high school ask if they have any local business connections that might need your assistance. I did mostly websites but I also never turned down general it help for people that had a computer that didn’t work right. I also did real invoicing and tried to treat it as a business.

Having been at OP's situation, I find this advice the best given that you want to earn money while doing it. Not only are local companies more reliable with actually paying (when compared to finding gigs online where people can just block your IM), you will also be able to meet them face-to-face, which will let you learn about social and sales skills when it comes to business (which are likely to convert into more money later on).

In general I think you are on the right track -- you need to find some way to validate your skills when it comes to programming. That might take a few projects. It is also likely that the first clients don't care about the technical details as long as the thing works. It might feel like the people don't appreciate your skills, but as long as you are actually enjoying what you do, you shouldn't be worried (this also applies to the 'wtf go be young advice'). Better clients (or companies to which you interview to) will be able to understand you later on.

> Forget about trying to use those gig sites

How would you recommend finding them then?

Like I said, talk to local companies or in ops case his school. People love hiring students especially at that age. Can’t be afraid to just talk to people.

I'd recommend this:

When I was younger, I used to think: "Wow, I want to create the next Facebook." I was envious. Thinking like that set me back and I was just trying to create a "mimic" of Facebook. "Everyone is going to use my product because it will be so much better." False.

It's not that you can't build something better, but don't try to be the next Facebook or the next Google or the next Twitter or the next... anything. They are huge and established. To try and "break the public" out of using these is almost impossible.

Create something different. Start on small projects so you can learn. Just start creating small useful apps that you and your friends and family can use. Practice and get good at what you do.

Just a few examples of some projects that I've worked on in the past that are now live and in the wild... https://mypost.io and https://scamshare.com

I've got at least a half dozen more projects in the works. It seems with each product I release, I'm learning and it is often well received. Unpredictably, MyPost.io became very popular in Russia. ScamShare received 21,000 visitors in about 2 weeks. I mean.. nothing to brag about, but its just getting used to some exposure and seeing what things I can create that people can use and enjoy.

My next few apps that are being released will be subscription-based.

Anyways, get comfortable with creating stuff and learning about what people like. Learn how to develop your own personality and style of your UI.

Eventually, there are two ways you can go:

1) Work for someone. 2) Work for yourself and your clients.

I'd suggest after you graduate, go work for someone for a few years. Learn how business work. See that world for a while. Then if you get tired of it, start thinking about going into business for yourself.

To branch off of this, you're also 17 and have a better idea of what your cohort is doing or interested in than all the marketers in the world (who try and sell / create things for you). Solve problems you're interested in or come across that maybe your friends bitch about. If you're ever in conversation with your peers and you hear someone says "Man, I wish x could do y" then actually listen and think about it and whether it could be a fun and useful project.

Also, don't forget to be young and get out there in the world. You'll have your whole life to spend behind a computer screen and being part of the world gives you a greater understanding of the roles your skills can play in it.

Find some open source project(s) that you are interested in and has a friendly community. Get into developing for that and learning how you actually not that great of a programmer ;) Get better, immerse yourself. Go to college in the next year or two, that's important.

But also keep a balance and do things you can't do when you are in your 30s. Get physically active in some fun sports, learn how to compete and make friends. Date, a lot, and learn how to have conversations, flirt, and just hang out.

Make mistakes, they are cheaper to correct at your age.

The best thing, as a young person that likes to program, is that you can feasibly code and travel around. So do that. If you are intimidated, start small and just drive to different cafes in your city, or go to different cities. Then find a way to move to another city, even for a few weeks. Tourism is boring, but living other places is awesome. Then think about going to a different country, see the world, but also develop yourself professionally.

Ignore those that tell you to dope up and tune out, that's an absolutely shitty way to spend your young years.

"Make mistakes, they are cheaper to correct at your age."

No, no they're not. The "be stupid early" plan is a major fail IRL. The idea that society will forgive you for it is proven wrong every day. When employers look for anything to disqualify you, that old FB post with you being stupid is made to order, or the arrest for DUI, or any of those early mistakes, are very handy. It's actually much harder to overcome early stupidity than it ever was in the past because the internet remembers.

The math of compound interest applies to a lot of things beyond your bank account. The earlier you learn the basics of something, the earlier you start doing a hobby, the earlier you start collecting RL 'achievement earned' points, the faster they will grow in later years. I would argue that THAT is the way to invest the freedom of youth. Try a hobby or learn something to see if you like it. THAT's ideal to do when you can easily move on to something else while those choices are entirely up to you. You will move on to college and a career with much more confidence that the path you are on is one you really want. YOLO is true. Why would you want to waste any of it?

I also want to call BS on the 'life ends at 30' advice here. You really think traveling is best when you have no money or skills? BS. You think no one >30 is physically active? More BS.

You misinterpret neither everything I said.

The "make mistakes" isn't, "do drugs and get STDs and fuck up your life!", it is "try things that you might not like" or "date two women at once" or any variety of "mistakes" that people are afraid of doing at that age.

Also, life doesn't end at 30, quite the opposite. I love being my age (well over 30!) and am very physically active. But traveling is a hell of a lot easier when young, because you don't have kids and bills and pets and all the other things that are great later in life (well, not the bills, but the things you get for paying those bills), but make floating around difficult.

And there's no way to compare the physicality of someone in their 20s with someone in their 40s. If you think so, you were not physically active in a significant way in one of those two ages brackets. I could play soccer for hours in my 20s, but I had to finally give it up at 45 because it's just too hard on the body.

I don't think I misinterpreted, "do things you can't do when you are in your 30s". That's a categorical statement and wrong. Yes, a 30something (40, 50, ...) is not a 20something, some plus, some minus, but nothing zero simply due to age.

I also don't think "make mistakes" and "try new things" are equivalent. Especially in the context of the lovely set of 'mistakes' advised in quite a few other posts in the thread.

Based on your followup, what you meant, is, unfortunately, not what you actually wrote. Nuance is important.

I'm not surprised by people here offering 'life ends at 30' advice here. No wonder there is so much rampant ageism in this industry.

I didn't say anything about life ending at 30, in fact I'd say it is often the opposite. But it at least changes. I'm just recommending taking advantage of the things that easier when you are 18 than when you are 50.

Came here to say contribute to open source! I started contributing to open source around 15 and learn a ton from a bunch of people that were way smarter than me. For me it's become harder to contribute to open source projects the older I get.

To be 17 again! My teens were a blast. I have a 486 and a PowerPC 6100. I worked a whole Summer to buy Metrowerks Codewarrior for $700 not realizing there was an education discount for $99. :-(

I was into C++ and C. I didn't rely on any toolkits. I wrote my own GUI (Windows, buttons, Sprites, event handling, renderer, physics and threading (although threading was a complete failure). I tried to re-create the Legend Of Zelda with just my own tools.

I still have all of this code from back then even. I should dust it off.

My advice: really learn your language, exploit it, learn another one. Try to write the same project in 2 different languages. Don't settle for what the OS has to offer. Try and create your own classes of functionality. Eat good, get outside, enjoy your friends and get ready for college.

> Don't settle for what the OS has to offer.

But probably do when you start actually writing real applications that people are going to use, that aren't just games or toys. Don't be that hotshot developer that creates yet another GUI toolkit ignoring accessibility (for screen readers and the like).

Good point. Real world, mission critical use what is tried and true.

If it’s within your ability to financially, I would absolutely recommend college. Make sure and attend a top 20 CS university if possible. Like other posters recommend, take advantage of both learning and social opportunities.

I would also highly recommend you avoid listening to bullshit life advice encouraging you to “live” by being crazy, partying, traveling, learning instruments, or anything else that seems like it belongs in a shitty coming of age movie. I have been at my happiest when I am doing what I love (coding and creating). I have also found that putting effort into quality relationships has been worth the effort.

You gain nothing from being shy.

Video games that are not in some sense a social bonding with your friends may amount to very little. To take the context out of video games, I know one person who spent countless hours on pool (billiards) and regrets it, and another who spent his whole 20's upgrading cars and more or less regrets it (as it robbed him of enormous amounts of time that he could have spent with family/friends and also a bottomless money-pit).

Don't feel like you have to be hanging out in beaches/bars/clubs to have a good time. Some people really like being in forests, chopping wood, taking care of chickens, making food, etc.

Use social media like Facebook only as a means of keeping in touch (think of it as a system of open letters) and for finding your people (the people who care deeply about the things you care about).

Answer enough questions on stackoverflow and you'll get job/book offers.

You gain nothing from being shy. Really. Talk to everyone around you.

You are 17. The chance that you can code is high, that you can code with quality and without super vision is low.

Whatever you do, go to a somehow bigger company, make an internship and work besides school or whatever you do with 17.

I was in your age, i thought i'm really good, i was not bad and a quick learner but still had to learn a lot. And yes i wrote code in c++, Java, Javascript and PHP at that age and there is still a good way to go for you.

Generally, I agree with bittermang: don't waste your youth on github. Live your youth, it's not "the greatest time of your life" like some people say, but it is a singularly unique time of socially accepted irresponsibility. Work on your social skills, they will pay off down the road a lot more than learning C. Learn to listen, to be kind, work on your empathy.

Now, if you must spend your time coding, don't do Upwork, don't do freelance. Instead, solve problems for people who don't realize they had problems to solve. Talk to your friends, parents, grandparents, find out what bugs them in their day to day life. Observe what they do and think of how they could optimize it.

Help them by creating tools to solve their problems. That's what programming is - telling computers how to help us solve problems. To code isn't the goal, the solution is. If you figure that out, figure out some skills in that area, you're ahead of 95% of the people coming out of CS schools who still think the point of their 4 years degree is to optimize a sort routine.

Honestly, go to college. Your worldview will be changed, in a good way. The number of "unknown unknowns" will be dramatically decreased.

That said: Don't go into serious debt to do it, and try to get into the best school you can. Perhaps even consider going abroad (Germany has many programs in English, for example.) Approach it as a learning experience, not as a credential.

I was in exactly your situation 3 months ago. I'm also 17 and can code okay-ish

I threw my resume out there and eventually landed a paid internship. I realized that I don't want to code for other people. The cool part about coding for me was that I could make anything I wanted, but when you're working you're stuck implementing someone else's vision.

My advice is to hire yourself. Start selling apps or whatever, but don't sweat it too much. You're at the age where you're allowed to do stupid shit and get away with it, so just enjoy it while you can.

General advice:

- Writing code that works is only the first step.

- Writing code that works and is written in such a way that other people can understand it and maintain it takes a lot longer.

- Treat "yourself in 6 months" as another person because you WILL NOT remember why you wrote it the way you did. This goes way beyond just writing good comments and documentation.

- Coding for your self is how you get hooked. Coding for other people is how you get booked (paid). These are NOT mutually exclusive and there is a delicate balance.

On the subject of getting hired:

- Writing code that works is the bare minimum. It will make you hire-able but it won't get you hired. At least 50% of the other people applying for the job can probably code better than you.

- There is ALWAYS somebody better than you and that's okay :)

- I'd much rather have someone whose code isn't as good but is better in a team. Again, there is a balance.

- Good interviewers will look for people who can work in a team. Frankly, this only comes from experience working with other people. Contributing to OSS is a great way to show you can work with others' code.

>Even most internships require you to be enrolled as a CS major at a college.

So, kind-of-open secret about requirements listed in job descriptions: they're bullshit. Not meeting them is an excuse for folks to throw away resumes if they need to, but with the job market like it is, they often don't need to.

If you can code, it just means that your response rate is something like 2% instead of 4% or whatever. If you want a programming job and you're okay with the least-effort option of web dev, slap together a web app of some sort in a week or two, put it on github, and send out a hundred resumes or so. I'd be astounded if you didn't get at least a couple of phone calls.

Worst case you're out some time. A decent backup option is to attend the best CS school you can get into for as little time as it takes to get an internship/coop/cofounder and then drop out.

The best thing you can do , IMO, is to spend a large portion of your time getting better at what you are already good at. Practice every day, whether its writing code or skateboarding or whatever it is that is your craft. Become aware of your weaknesses, but don't spend too much time improving them, just enough to know when they might become vulnerabilities. That will allow you to avoid situations where they may affect you negatively.

You're going to have to scrape by for a bit to earn the right to a good job, so be humble and try to work you way up from something that may seem below your talents. If your quality of work shows that you are competent and hard-working, doors will eventually open up for you. Don't ever act entitled; always turn the other cheek. Be consistent and persistent. Good luck!

Get experience by doing some side projects you are interested in and work on some real stuff. Learn while solving problems will be the fastest. Of course this relies on that you already have some knowledge on coding and have a relative good grasp of different aspects of software development.

Also, read tech news to get the latest technology trend and what's hot in the area*Can read from http://www.pxlet.com). At this age, gain experience and build a strong foundation is the most important thing.

Then involve in open source projects by starting to read their source code and use them and submit patches and then you can get sense on how frameworks are developed and maintained.

Once you get the experience, it should be easy for you to get an ideal job. Don't rush before you get ready.

> is it more useful to me to contribute to open-source software to add to my portfolio or to find people who will hire me?

Vastly more beneficial to you to contribute to OSS in my view. Nobody will really care how old you are (they'll only know if you tell them, or make it obvious in your profile) - you'll be judged only on your contribution.

The experience, both for yourself and your CV, will be worth far more than some menial task set by whoever hires you. Bear in mind that anybody who does, short of some sort of family/friend connection, either can't get or can't afford an undergraduate intern.

How about playing ice hockey, going to the beach or dating?

By far the best advice here.

> I'm 17 and I can code at a relatively high level.

I thought that when I was 17, and I was proven laughably wrong when I started university and learnt how to program properly.

Then once again I thought I was pretty good at programming and went in to industry - and once again I found my skills were nowhere near as good as I thought them to be.

My advice is to put aside notions that you are good and always be looking to improve and learn.

> but generally people aren't willing to hire a 17-year-old

Who needs to know that you're 17? If you have a good enough portfolio it will speak for itself.

Finally, someone with actual good advice.

_This_ guy gets it.

I’ve got my first programmer job a couple weeks after I turned 18.

IMO before you have years of work experience, on a job, you’ll learn useful stuff much faster that you’re able to do by yourself or by participating in open source projects.

One reason is motivation: salary, boss, peer pressure.

Another reason, as an inexperienced programmer, on your first jobs you’ll be surrounded by people with much more experienced then you have. For me, the equation has changed after a ~decade in the profession. Before I got that experience however, I was lucky to work with very nice people much smarter than I was. I have learned a lot from them, probably more than a half of what I know to do now.

Select these first employers carefully. Don’t focus on salary. You don’t want to work in a large company where the software is not the core business. Prefer small to medium companies (not necessarily startups, 10-50 people are still OK). Prefer companies where the software (or hardware running that) is their core business. Prefer companies who do some R&D, not just coding. Prefer companies who do what you’d like to do.

Don’t afraid to switch jobs. Especially switch into different fields/platforms/languages.

Good luck.

P.S. I’m much older then you are, and I’m well outside US. Because of that, take my advice with a grain of salt: I’m not sure how well that applies to your environment. But for me I think it worked more or less OK.

If I had to give advice to my 17yo self it would be this:

- ditch "gaming" as a hobby. Its a lot of fun but you'll regret most of the time you spent later on. Go create more stuff instead...

- think about the "business side" of software too, not just the technical part. There are more ways to make money than you know / can think of! (I was surrounded with loads of crappy share- and freeware tools where people were still making a living of. I did not realize this and skipped a lot of opportunities.)

- stop "coding" in VisualBasic ;-) try other languages (However, if you just want to quickly get something live, use what you know best already)

- Keep your eyes open for new emerging platforms and technology which pop up every century or so... and get onboard early on to understand the dynamics, play around, try your ideas. You'll have a first mover advantage for ~1-2 years and can get away with almost any not-too-perfect-solution because there is nothing else solving it right now. (Think the Internet, think cheap web hosting, think online gaming, think iPhone / AppStore & Smartphones in general, then Android, then xxx, ...

- Whatever projects you start. Make a commitment to yourself to launch them all. At least a version .. ´. Nothing wrong with a crappy and dead tool or website which is not supported since years - but everything wrong with a private repository and an un-launched 99% ready software/webstie where you spent countless of your life-hours on! Launch everything!

- Oh yes, and just try ALL your crazy ideas too. You have nothing to loose. Just do them!

As an aside, VB contractors make a _WEDGE_ in the UK. While I wouldn't suggest it being your sole language, if you want money, it may be something to keep relevant. That being said, I haven't used it since 2004.

What you got going for you right now is assets and momentum. You got a place to live, you got a brain that still works, and if you play your cards right, you'll be living phat. So what you want to do, travel to Alpha Centauri? Or make a million dollars? Or invent machine based intelligence? Or fall in love and have kids and have a normal life? Or dream about the day that machines take over and humans are obsolete? Or try to invent a way to contact aliens? I'm just trying to point out that you can do the mundane and banal things that everybody can relate to, or you can do things that seem astronomically impossible. It's your life, it's up to you and your limited cranium size and capacity. You can chase fairy tales or dollar bills. I don't recommend both. The truth, life is really ducking short and your gonna make mistakes. Pretty soon you'll be thirty and you've already made ninety percent of your life choices, and then you're just steering the ship. Right now you're just trying to leave port and pick a good direction to sail. Don't forget what you are: limited. You gotta pick.

I'd try to get an internship if you can. You learn a lot working with other people and having a team depend upon your work. Plus it looks great on college applications.

The challenge is that (at least in the U.S), you can't consent to contracts until you're 18. This is legally problematic for most organizations; corporations rely on contracts for things like confidentially agreements, intellectual property, payment of wages, etc, and having someone who hasn't signed these contracts working on this can muck things up. You might be able to find small organizations that just don't care, or large organizations that can silo you off and have you work on some throwaway projects, though. When I was your age it was the thick of the dot-com boom and there were a bunch of small local businesses or community newspapers that needed websites done. It's a different time now, but that same customer base might be similarly willing to have a teenager do some work for them.

> The challenge is that (at least in the U.S), you can't consent to contracts until you're 18.

This is not quite true. You can enter into a contract at any age. However, if you are under 18, the contract is voidable by you (voiding a contract -> neither party is bound by it any longer). It is not voidable by the other party.

So it's not that you can't enter into a contract, it's that this is risky for the business, because you are not bound to honor it.

Source: I took a business law course in the spring. Obligatory: I am not a lawyer and this is not legal advice.

You should spend your time coding. That’s what I did. People told me not to, but I did it anyway. I got shit grades at school but I got a lot better at coding. In the end, grades didn’t mean shit but the fact I had a lot more practice at coding than everyone else (while they did homework I did coding) had a lot to do with what job I was able to get.

Don’t worry about getting a coding job yet. You should build your own personal projects as much as possible while you are still unhireable for reasons you don’t control (age). Doing your own projects will help you learn how to structure large things. See how big of a program you can get to before the code starts to feel like shit. The more you practice, the better you’ll get at structuring code in a way that allows you to grow it a lot. This is a skill you can practice, and you should do that now to maximize your competitive advantage once you can work.

Pick a #GlobalGoal or three that you find interesting and want to help solve.

Apply Computational Thinking to solving a given problem. Break it down into completeable tasks.

You can work on multiple canvasses at once: sometimes it's helpful to let things simmer on the back burner while you're taking care of business. Just don't spread yourself too thin: everyone deserves your time.

Remember ERG theory (and Maslow's Hierarchy). Health and food and shelter are obviously important.

Keep lists of good ideas. Notecards, git, a nice fresh blank sheet of paper for the #someday folder. What to call it isn't important yet. "Thing1" and "Thing2".

You can spend time developing a portfolio, building up your skills, and continuing education. You can also solve a problem now.

You don't need a co-founder at first. You do need to plan to be part of a team: other people are good at other things; and that's the part they most enjoy doing.

find the highest paid workers on upwork, find out their stack or specialty, learn that, bid on work like that for relatively cheap, do an good job plus throw in extra effort. be resourceful. get five 5 stars, up your rate. Use that as a resume in 18 months for a 120k+ job with benefits. live as cheap as possible with no debt and invest as an entrepreneur, and only use debt as an investment strategy, take and know your risks. live every moment and strive to be the best at whatever it is you do.

The beauty of being young is that you can actually do everything the commenters said barring external limitations such as money.

I lean towards comments suggesting to think about college and continue honing programming skills.

When you are young, you haven’t seen what’s out there yet. College is the stepping stone towards that. If you don’t know what’s out there, how can you know how to build something that’s useful?

Also, practicing programming doesn’t have to be boring. In my teen:

* I wrote fortune telling CLI app to impress girls.

* Hacked infinite money on my SimCity and Dune 2 save games using hexadecimal editor.

* Pranking a friend by asking him to download an agent that control his cd rom tray (for haloween purpose)

* Wrote a bunch of excel functions for soccer gambling.

So I guess, long story short, life should be fun, but that doesn’t stop you from being a kick ass in programming.

Don’t worry too much about CV or portfolio. If you are good, you will have plenty of time doing that already in college.

If I could go back and have the agility of mind that I had when I was 17, I'd get my head wrapped around system internals and how to find vulnerabilities.

It's something I understand as an adult coder, but it's not my normal way of thinking and I think that kind of a switch changes you.

1.) You can do open source or own project for portfolio, it does not matter. However, finding oss that don't ignore pull requests and has beginner suitable bugs is hard. You risk spending a lot of time on just looking for the place.

2.) If you do own project, do something small. It is enough to learn technology and ability to come up with vision is different skill then coding. Technical demos or community challenges are fine for portfolio.

2.) The best way to find first job is through people you know. Yes, it is unfair, yes it requires social skills, but it is what it is. Go to meetups in your area even if they are about technology you don't care about. Talk with people and mostly listen to what they say. Something may get out of it.

Getting a degree is highly recommended IF you have no clue what you want to do. If you want to program, then program... intern, take on freelance projects for non profits to build a portfolio. Do NOT spend 100k on an education that may not have the most "modern" concepts of software engineering put into their professors. Best advice is to have fun! No matter what, enjoy your life... you only get one. And make sure you are always challenging yourself when you code. Try to use your own imagination to create an app, allowing problems to arise so you can learn how to fix them. If it's too easy, you'll know. And good luck!

I'm also a 17 year old. I always say just have fun. So really, just do whatever you want and whatever makes you happy. Unless money is a big concern for you, you shouldn't go work in paying job. It's much less stressful when you are just messing around, instead of meeting someone else's deadline.

Also some of the comments here suggest socializing. Personally I'm not a very social person, when I get home from school I really just want to be left alone. I just want to say that if socializing is your thing, then go for it, but if it's not, don't feel that you are being pressured into it.

1) have fun doing what you want

2a) build up a portfolio of programming stuff to show you can program

2b) that portfolio should also demonstrate polite professional communication skills. People discriminate against age (both too young and too old). They shouldn't, but this portfolio might help.

3) Get hold of any of these books, and implement the examples in a modern language.

Computers, Pattern, Chaos, and Beauty by Clifford Pickover (anything in this would be a good ShowHN, especially if you put it on a website with interactive sliders) (it's available as a download somewhere)

Any of the A K Dewdney books eg The Armchair Universe or The Magic Machine.

Depends on what you want, you mentioned "money", "portfolio" "Upwork", "pay" and "hire". So you seem more money motivated than fun motivated.

Build something and charge for it.

Learn data structures and algorithms really well.

Code a lot. Understand non-blocking I/O, memory management, parallelism.

Learn everything about networking you possibly can. At every level.

Hone that skill set over a few years and you’ll be invaluable.

Reading these comments, I wonder if there has been a gas leak in Silicon Valley or something!

My advice would be to practice, practice practice. Think about an app you would like to build that's quite ambitious (maybe involving an Android app, iPhone app, Alexa Skill, Web App, realtime communication between them etc) and try and build the entire thing yourself. Get it onto the various app stores and try and get people to actually use it.

You'll learn loads and hit lots of stumbling blocks along the way, and you might even make some money out of it!

Find something meaningful and pursue it relentlessly.

Here is my story, I'm 25 and have successfully raised VC funding for an Open Source database. I also took an odd route to life, I found the woman of my dreams, bought a house together, married her, and started having kids. This may sound boring, but because we are young, we can live life fully and do crazy things - backpacking through Europe (specifically, Cinque Terre), visiting Africa, discovering house parties in Canada, doing a 30 day road trip up and down the West Coast, illegally but safely climbing radio towers, or doing rock climbing.

Never worry about society, live life fully, always give and love to people (Open Source is very important in this way). Trail blaze your own route in life, and people will come to you as the authority and want to pay you. Shoot high, so that way if you fail, at least you land on Everest. If you do what everybody else does, you won't have leverage. If you do what other people do, you won't discover something new.

So as a result: Never take advice from other people, especially me. Choose your own, and own it, this will be your most important skill in life. And especially never listen to haters.

And I can tell you are already doing it well ;) you are on top of HackerNews building your personal brand. Keep doing that, unfortunately, cleverness like that goes a lot further for career improvement than actually being incrementally better at coding. :/ Keep networking!

The beauty of our business is that anything is still possible.

You can reg a domain name and have your own project or idea/app/affiliate/Adsense site up and running for next to nothing, except your own time.

Similarly, you can build a small Windows or Mac app, a little $10 utility or tool.

I don’t think an OS related portfolio is needed at all, actually.

I personally would start in that way, as you are in full control then in what you do. It could be something sustainable you build, make money with and looks good in your portfolio while doing so!

As another 17 year old I'm gonna go against the grain here and try to give my own advice. Yes, you should live your life while you can and have fun. But I think a lot of people are forgetting that you can have fun while writing code. I don't see why you should feel bad using Github or HackerNews or whatever. Don't write code 24/7 (unless it really is the #1 thing worth living for), but don't feel bad spending a couple hours a day/a few days a week working on code. My personal advice in terms of programming is try some new things. Go to hackathons, meet people, make connections. Learn new languages, frameworks, environments. Keep going until you're bored and then take a break and "live". Then figure out how to balance the two. Also, don't focus too much on getting a great job. The best thing to take away from a job is not the money, it's the experience (especially if nobody's gonna pay you a lot). You have vastly more experience than 90% of your peers. If you find a job that you can learn from, even if you're not getting paid, you'll have a killer resume when you start college and will land a way better job than you could if you just keep on searching for opportunities now without taking the plunge.

I can’t tell you what you should do as a 17 year old coder. I can tell you some of what I did.

I strongly believe early adulthood is about getting you laid. Not Tinder style, but have to go hang out with others and meet people style. I’m 51 now, and three of my best friends are people whom I met before I was 20 while on the prowl for beautiful women. And those guys are pure gold. Life sure is different now, being married and having a daughter but those guys, only one being a family man, are still there and our friendships are as strong as ever.

So that’s part of what I did. The other part of what I did, I got a job being paid to code, well, actually paid to learn to code. I thought I was hot shit but the guild of ex-rocket scientists and other smart people I ended up with taught me a lot. So, how did I find that job? I met my best friend’s girlfriend’s dad who gave me that job. Yes, the pursuit of getting laid found me and my friend at her house, hungover one Saturday morning when I met him.

So maybe getting laid isn’t your thing. But get your ass out there and start meeting people and spending some time with them. Don’t be a walking banner ad of “I’m a coder”. Get to know people and let that disclosure happen naturally. Most people really enjoy helping their friends, and someone will make a connection for you.

What do you like doing? You're at an age where you can afford to make some mistakes with the immensely useful skill you have. There's a lot of fun things you can do with code that might not be valuable in a strict business sense in the future. I'd say work on something like that, which brings you Joy. It might even actually be useful someday (but it's ok if it isn't)

I think this is underappreciated advice.

While you're young and don't have crucial responsibilities like earning money, you can spend your time however you want and not be pressured into doing anything in particular.

That means you can try a lot of things and make a lot of mistakes without worrying. You get a lot uf unbroken time to focus on one project if you want - find a problem that interests you and figure out the hell out of it. In all likelihood, it won't pay off immediately, but you will learn a lot and that will help long-term. Or, dip your feet into a lot of different things until you find something you're passionate about.

This is actually general advice. People don't think much of the young, so you can do many things you're "not supposed to do" later, i.e. get in trouble with few consequences.

Perhaps this isn't an answer about how to gain traction as a coder. While I'm not an authority, contributing to Free Software helped me immensely. Find a project with contributors from large companies and spend a few months asking questions and helping out. You will make useful connections and will stand out for recruiters.

Make stuff that you like and blog about it. That could be toy websites/demos, a game, tutorials for things or hardware projects. Anything. Post them here, post them on Reddit or Hackaday and bring people in to find them. Eventually you can get organic traffic from search engines if what you write is really useful. You can even make passive income this way throuh ads (beer money level, but it's nice to have - you can save till you're 21 anyway!). The most useful lesson I've learned, in my opinion, is to ignore what other people say you should do. Focus on what thrills you, the projects that will keep you up at night trying to complete. If you do that, I guarantee it'll work out for you.

Contributing to open source is an admirable goal, but it's definitely a nice-to-have rather than a must. You have a Github portfolio, so build that out.

Instead of picking some random project to help out, decide you like doing and fix what annoys you. I use OpenCV every day and my first open source PR (ever) was a documentation update, because something was poorly explained. The next one was a fix for some function that wasn't consistent with the rest of the codebase. These are very minor things, but I was personally invested in fixing them.

However here's my advice right now: if you want money, find work locally. Ask around people you know, odds are you know someone who needs a website. Go around ask local companies (like, within a mile of where you live) if they have any jobs that need doing. Pull on your networking strings, don't prostitute yourself to freelancing websites.

Don't limit yourself to advertised schemes. I have a physicist friend who emailed a random startup in Berlin that she liked (she lived in the UK at the time) and just asked if she could do some work for them, they said yes.

Find a cause you care about, then help out however you can.

Also you have a lifetime of coding ahead of you (if that's the career you are after), enjoy your life while you don't yet have responsibilities like mortgage and family. You may not realize it, but at your age the amount of freedom you have to do whatever you want and make mistakes is a big advantage.

I was in a similar position, and even skipped college in lieu of coding. It was the right choice for me at the time, but in retrospect I'm not significantly farther ahead of my peers - our coding ability has leveled out, and they have CS degrees while I have a few more years of experience.

The one difference (compared to 17) is that I have a lot less free time now - I wake up at 7am, I'm at work by 9:30am, leave around 5:30pm, and I'm home at 6:30pm. I end up with maybe three free hours after dinner. When I was younger I spent that time tinkering with side projects or working, while now I prioritize doing things that are fundamentally different than my day-to-day work :)

My biased opinion is -- if you don't absolutely need the money -- spend the time on fun side projects with cool technology or practice an instrument or something else fun. You'll have years and years to code 40 hours a week for money!

My advice? Don't ask, just do. At this point it's not necessarily an area that matters because if any of us could predict the future we wouldn't be commenting on Reddit. :)

Having said that you have one major attribute going for you, and don't take this as a pejorative, and that's naivety. You don't know what isn't possible cos you haven't been beaten down by experience (a double edged sword).

Take that naivety, think of something crazy that floats your goat. Can you write an AI for gaming? Can you make a filesystem faster? Whatever it is, set a goal, double it (ie an AI for gaming that can beat the top 10% in the world, a filesystem 5x faster than exists today)

You'll learn something far more valuable than a coding skill... You'll learn you are capable of much much more than you ever believed.

Just don't procrastinate, think big, fail big, and beat fear.

I would tell you to enjoy your life fist.

Seeing you code I can tell you can code but you probably cannot code anything big. Learn code patterns and software engineer. You need to learn how to design the architecture of your programs and things like integration and testing. This is why jobs ask for a CS degree. Coding is easy, solve problems is hard.

Do what feels right for you, what you feel is interesting to you, what you see your body and mind enjoy doing and want to do more of.

Feed your brain by reading, doing and teaching, be it coding or (preferably also) something else. Strengthen your will a bit (not too much!) by taking some obligations and responsibilities, be it financial, social or personal. Help your body work better and feel good through exercise, rest and diet. Nurture your heart with family, friends, opponents, romance, the successes and the inevitable setbacks. Understand honesty by standing up for what you believe and, because of that, losing things and people you had earned. Respect yourself and your time alone. Value others and the time you take from and give to them.

Don't let survivors talk your into taking risks you don't truly and wholeheartedly want to take yourself. Don't let anyone tell you what a life well lived means.

Context: I was 17 about 5 years ago, and was also coding at the time (but definitely not at a "relatively high level"!).

At 17 I was also quite focused on making money doing stuff like freelancing, and I did do some, but unless you/your family have a desperate need for more money right now (I hope you don't, and I'm thankful that I didn't) then I think it's a bit pointless - freelancing/consulting is a great gig if done through the "right" channels, but doing it via Upwork (back in my day the big one was GetACoder.com) isn't particularly fulfilling imo - it's a race to the bottom in terms of money and quality, and you're competing with people outside the UK/US for whom the pay on these sites is actually alright. Making money at 17 is quite nice though and I'd probably recommend doing it for a short amount of time, just to realise that being rich for your age isn't actually that exciting.

If I were you I wouldn't worry too much about doing an internship right now, unless there's a company that you really really like. Just focus on improving your skills, and do cool stuff that you find interesting, whether that's working on open source, random website/app ideas, learning theoretical CS/maths, whatever.

Being good at coding is a great skill to have, so if you enjoy it then it's great to regularly do it and get better, but don't forget about the rest of your life - don't get too bogged down in having to do this stuff 24/7, despite all the news stories you probably hear about 17 year olds making $$$ from their [app/website/startup]. Make sure you're happy and healthy day-to-day :)

On the coding side of things, I regret not learning theory and how to do things "properly" sooner - I spent the first few years hacking together web apps semi-blindly without bothering to brush up on technical knowledge, which I think slowed me down in the long-term, so find a good balance between "learning by doing" and "learning by reading" imo.

Coding alone is a bit worthless unless you understand some spefic domain really well. So, either find some domain that you find intrinsically interesting and learn _everything_ about it or get a university degree.

If you lock down on some field make it an interesting one or else you might find yourself hating your job one day. University degree will give you way more options but does not guarantee any outcomes.

A good way to make money by programming is to first understand some other domain really well and then implement solutions that help there.

"Coding" means you are skilled in instructing a computer. Now, what should those instructions be? Why? Most domains worth anything are complex - intrinsically or accidentally. Hence understanding a domain is critical to become a valuable contributor.

Build a portfolio, whether it be stuff you did on Upwork for poor pay or websites and apps for local businesses or non-profits. Or do Coursera/EdX/Udacity courses. Hell, do both. Once you turn 18 you can be sued for breach of contract so you're worth hiring. Build things, write about building things, help other people build things. Get to know people who are into the same stuff you are and hang out with them.

Getting a degree is highly recommended. If you don't want to go to a full time on campus uni the University of London's International Programme is great and cheap.


I would work towards an internship as you'll get paid for it, most likely get a mentor who can help you when you get stuck, and have direct and clear projects to work on.

To that end, there are 2 steps to getting most internships and jobs at your level.

1. Pass the initial resume to get the interview. I don't have much advice on how to do this besides being a cs undergrad with a high gpa unfortunately.

2. Pass the interview. At your level, most companies ask you to solve data structures and algorithmic problems on a whiteboard. To prepare for this, obviously read some data structure and algorithm books and then their is interview prep you can do such as cracking the code interview book and leetcode.

Fall in love with a person. Learn how to sell. Travel and sxpand your mind. When you get to college, enjoy yourself. You’ll be working the rest of your life. When the time comes to bring people together and start a company, you’ll know.

My advice is not to worry about pay in the short term. Once you have some experience pay will be much higher. Think of working somewhere as education essentially, if they pay you minimum wage too, that's a bonus.

I'd find a company with team of devs you can learn from and work there for a few months. You'll be much more employable by the end of it.

As for finding a job, I'd suggest going to tech meetups, startups in particular will be keen on any cheap labour. Alternatively ask your family or parents friends if there is either a position at their work for you, or if they run their own business, if you can do their website.

Do whatever you want. Figure out ahead of time if you want to be into coding for $$$ or because you actually love to code. HN or not, there is absolutely nothing wrong with not loving to code.

If you end up realizing that coding is in somehow related to $$$, and that is your goal - then stop now, and proceed directly to law or finance.

edit: And oh god - do the MOST IMPORTANT THING you can as a young person: exercise! Becoming(and remaining) fit at a young age is so much easier than putting it off - and it will absolutely give you future benefits beyond your comprehension at this point in time.

When I was your age I started an internship at a tiny local programming company. They payed me a dollar or two over minimum wage to start and I did testing and writing documentation and fixing bugs for them. It was a good starting job. A good introduction to the "Real world". After that I majored in English, and then majored in CS.

I think if you walk into a small local company, and tell them what you can do and that you're interested in a summer internship. You have decent odds. A lot of people like to give back to the community. And HS interns are cheap.

I am so late to the party I feel so ashamed but here is my 2 cents.

Please, please, travel, and by that I don't mean doing a full a world tour. Just explore what exists outside of your surroundings. Exercise yourself to questioning. Making money is fine, and most of the time needed, but discovering what your like / loathe is as important. Talk to people, share stories, get into argument, confront yourself with other way of thinking.

Being able to code or having a nice portfolio might make you hire-able but true maturity will make you shine amongst others.

At 17 I wasn't a good listener. I could listen to role models or people I deemed "above me" but not not else. If you become a good listener, who can understand people's problems, their fears, motivations, strengths, feelings, and emotions, you'll be years above and permanently above many of your peers. But it takes serious effort.

Do not undervalue skill sets outside of coding. We have hundreds of universities pumping out coders right now. Be someone else who can also code.

This is the one. If you can code then focus on communication, empathy and organizing ideas. More generally, try to understand product and the process around it. Take an idea, even one that's contrived and try to run through a SWOT (as lame as that sounds, the exercise makes you think). Don't get caught up trying to perfect your syntax - learn how to write (sometimes shitty) code to solve real problems.

Further, you'll rarely solve big problem on your own. Doing the above will prep you for working in a high functioning team. Strive to put yourself in a position to work with the best. From there life will take you to the right place.

1. Don’t tell anyone you are 17. Ageism is real on both extremes.

2. Build something. Anything. Many things. Don’t stop. You will find your “specialty” niche eventually and blast off from there. Here are some ideas (in some different spaces):

- an alarm clock that stops when it sees your face (computer vision)

- an easier way to search Instagram (social engineering)

- SMS mailing lists for small business owners (SMS, communications, lead gen)

- literally any idea that comes to your mind...build it just to say you did.

3. Talk about it. Be passionate. Help others. This could definitely be in the form of OSS contributions, which is great way to gain visibility in the community.

4. Specifically on generating income: since you don’t have a product built (yet), focus on consulting which can help build your reputation. Start with your current personal network, even if it’s just friends of your parents that may own a small business or maybe someone you know from your community. Before you contact them, do the research. Do they already have a site? What’s it built with? Where does their business come from? Is there a clear opportunity to tangibly improve this for them? If so - reach out. Start open minded and asking questions. Find out what they need - it may not be what you’ve identified in your research. If it is, great, you were spot on. If not, that’s fine, sell them whatever service you are confident you can help with, and take note for the next customer in that industry.

If you’re set on finding a normal job - just start applying. No need to say anything about a degree or school. Show off what you built (step 2!), express how passionate you are (step 3!!), and don’t stop until you have an offer. It will happen. I didn’t go to school and one of the first ways I figured out how to reliable get in the door was I just _started assuming responsibilities of an engineer at that company._ For example, does that company need a new website? Yeah? Then just build it. Send it to them with your resume. “Hey, notice you needed a new site. Here you go.” Depending on how well you nail their branding or what their focus is, this can leave a great impression of your passion and work ethic. I’ve skipped many interviews this way and just landed the offer straight.


Good luck mate!

Go to the best college you can. Live on campus. Only once in your life you'll be living and surrounded by so many people in that age group. Internships will come in time.

Expand your areas of knowledge. The best ideas come from cross pollination of disparate disciplines. Your brain's not done baking yet. You still have another 8 years before the foundation sets. Learn as much as you can about everything.

Also it really depends on your inborn personality and predictions. My advice above is really for creative types. You might be a more conservative type and a 9-5 job for 50 years would be perfect.

Take a big 5 personality test and go from there.

You need to prepare yourself to have a happy life. To be happy, you need two things: 1) A career that pays well so you can live comfortably. 2) A life mission, so you can spend your life building towards something, doing something you feel contributes to the world in a valuable way. Luckily programming is perfect for these goals. Choose your mission, make a career plan consistent with your mission, and proceed to become a badass.

You definitely don't need a career to be happy, let alone one that pays well. This is usually the society we're in that tells us that this is the only truth. Same with posts about {m, b}illionaires being portrayed as "successful at life", when in fact being a CEO probably ranks high on the list called things-that-aren't-guaranteed-to-make-you-happy-but-people-think-they-do. Society draws a circle and says "these people are winners" and anyone outside of it are losers and should strive to be back inside the circle.

I don't have much work experience, but I am employed at a global top5 tech company and the number of people around me who are miserable even with all the benefits the company provides that outsiders consider sources of happiness (above median salary, indoors swimming pool/gym, free food, onsite medical personnel [gp, dentist, therapist], flex hours) tells me that it's not entirely up to the environment.

The happiest people are the ones that seem to do whatever they feel like doing. I've also noticed that almost all of them, fit or not, go to the gym and do some sort of physical exercise.

I'm in my early 30s, and two very important things I've realised are: - Life is happening right now. Not in a year or 10. Plan ahead if you want to, but don't sacrifice so much that you're not enjoying yourself. - Nothing is black and white. Life is not a piece of code; things are not 'either 1 or 0'. Everything exists on a spectrum; everything is a shade of grey. Even the things you think are absolute truths can be inferred to be different in other circumstances.

Pink Floyd's lyrics have always resonated with me, and I guess this is one of my favourite bits:

  For long you'll live and high you'll fly
  And smiles you'll give and tears you'll cry
  And all you touch and all you see
  Is all your life will ever be
which is followed by a take on modern life and how it requires us to work at all times:

  Run, rabbit, run
  Dig that hole, forget the sun,
  And when at last the work is done
  Don't sit down, it's time to dig another one
Do whatever you feel like doing, but know that with every decision you're choosing a path which is different than the one you could have taken before the decision. Sure, you can follow multiple paths and achieve more goals, but there will always be something else you could've done...

...and that's OK.

i'll provide the alternative point of view here.

i know broke people who just surf or hang out all day and they sure seem happy.

i also know rich people on a mission in life, and they are very unhappy, or will constantly find something to be unhappy about, so the net effect is just never being happy.

# apply to jobs and internships despite not meeting requirements. it's just a numbers game in the end. eventually you get in somewhere. # improve social game - go to parties, go dating, travel, get drunk. # build products, ship and post on producthunt. there are many teens getting exposure there. # find likeminded people in your own age to share thoughts. join a young maker collective.

As someone who is around OPs age who also has Asperger's, I feel like so many of the things people tell OP to do, I feel like they're things I personally don't want to do or know how to do, or even feel I don't have the freedom to do. People say it's a time of freedom, and that you should enjoy the freedom, but I don't feel like I even have the freedom.

As soon as you join a college, do as many hackathons as you can. Use it to meet recruiters but most importantly other students that enjoy programming as much as you do. Use websites to find all of the events within 500 miles and sign up for all of them ahead of time to increase your chances of getting travel funds. Definitely my biggest regret while I had the chance!

I used to ask the same questions when younger and I used to feel guilty many times simply because I would go out with friends some weekend instead of Learning or working on my next big idea. So my advice is there is no best way, aim for the good enough, persistence is key, and eliminate guilt. It's not about who hits harder, it's about who keeps hitting.

Contribute to open source. Enroll in some kind of higher education. You'll need the formal CS/math/etc in order to grow as a developer (if that's what you want to be).

Also: don't forget to just switch off your computer and be 17. I'm 40 and I can code as much as I want but I can't be 18...

Forget working as a developer at 17. Use your time for something better.

You might enjoy doing some work for a charity such as AgileVentures (http://www.agileventures.org) to learn about real world programming. If you are interested in a job (or internship) at Google or Microsoft, you can never study enough discrete maths, and datastructures + algorithms.

Depends.what do you enjoy? What is your passion?who or what motivates, concerns, scares you? Spend time with that - see how it functions - can it be improved - does code play a part in that improvement - study - contribute to that via business understanding and process improvement using code. Get feedback, confirm growth, and repeat.

I started out like you. Here's how I learned to make money. I started a small business tech firm and just went out and asked businesses what their problems were and came up with ideas on how to solve them. You've taught yourself code, now teach yourself how to make a business. "Ready, Fire, Aim" and "Emyth" are great books to start. What I've learned in following this path is that there are three things to quickly generate skill-based income: 1. a list of businesses with discretionary budget to spend (leads). Companies will drop $1,000; $5,000; $10,000; or about $35,000 on an experiment (you) depending on their size. Enterprise environments (200 knowledge workers or more) have more structured problems, smaller ones tend to have problems that also involve sales/marketing- consider learning about both from Hubspot Academy. Create a speadsheet of 1,000 leads. Then you know you can't run out of business opportunities. 2. create a path to your potential customer making a purchase. once you have a lot of leads you have to learn what people want to be pitched. as an engineer, you want to solve real problems. that's awesome, it's also how you create real value, get referral clients, and generally just get to do cooler things for more money. But it's too much friction for someone to take a risk on a new relationship and change their entire way of thinking. Change one way they think about their situation. Read "the challenger sale." You are inventive, that's why you love to code. That's a skill that makes you better than any other type of sales person. 3. build systems for yourself. if you do the first two you will get relationships. relationships take management and people feel about you however well you manage that process. scrap together systems that make you an automatic boss at things like follow up, meetings, and showing your clients what you are doing and how you have helped them. zapier, trello, hubspot crm, boomerang for gmail. it's ok to use your coding skills to smooth out the integrstion of these systems, but resist the urge to reinvent them. use them as the scaffolding that let's you build for your clients.

Finally, have an answer for your age (tell them what motivates you) but don't bring it up. You run your own business, people pay your business. If you have a trusted adult, google how to DIY forming an LLC in your state and make it official.

I have seen many unexpected setbscks in my life. the ability to create a business from nothing enabled me to overcome them all.

Not advise but something to bear in mind. The younger you are the more risk you can take with more time to take corrective action.

The main ways to get paid well or get rich and work on your terms is to run a business, trade assets or invest well.

20000 hrs of cranking out JIRA tickets loses its luster. Companies rarely invest in their employees career.

Make of this what you will

Well, if you want to build a company, the advice I'd really want to understand at that age - is it won't get much easier. At that age, I'd often assume difficulties I encountered were due to uneducation or lack of experience. Turns out many things are hard regardless and it's okay.

Close your laptop. Go outside. Listen to live music. Make friends in your community. Travel abroad. Fall in love.

You're already on a great trajectory - so at worst you'll earn a 6 figure salary and at best you will be the next zillionaire startup founder. Don't waste your youth on HackerNews and Github.

Very very true. Concisely said the reality of life. Thank you for adding some saneness to the bizarre paragraphs of advises given by everyone else.

Write a browser game, put it online and play it with friends. At least that's what I did ( https://github.com/agrafix/managerslife ), it was very fun and rewarding, and I learned a lot!

I've worked with a couple of "child geniuses". The kind of kids that were freelancing at 12, writing search engines at 14, working in agencies at 16 alongside college, and senior developers at 20.

Half go down the alternative route. They've been largely working full-time from 16, while doing a bit of college, and most of them look at their peers at work and decide that university isn't for them. They've already got a job, and the whole point of going to uni was to get the job they're already doing. A few of them move on, and they do fairly well. The problem I've found is that they're not getting paid as much as some of their peers, even if their job title is greater than their peers at a younger age. They also seem to pigeon-hole themselves into a given stack, and while they are happy to move along with that stack, they set their goals too low. Sure, it's great to be the genius kid that is working on large-scale projects at 18, but in a few years you'll just be another young developer, that is probably bored of building the same old shit for ten years when everyone else is still enthusiastic about CRUD CMS applications.

Half of the others go down the uni route, and most of them seem to be much happier, depending on how much focus they've put into their studies. I've seen some child geniuses go to shitty universities because they couldn't be arsed to study for their A Levels, but study something that legitimately interests them. One went on to study Mechanical Engineering and went back into software development. I think he interned at Microsoft during uni, and now he works at some FinTech startup in London. One of them did pretty well and ended up studying CS at Edinburgh, saying that going to uni as an already decent developer helped him relax into the environment while others were learning how to write code for their projects. I'm not sure what he's up to at the moment, but he went from a fairly stressed out kid to a happy young man, so it obviously worked out well for him!

Since you're 17, I'd think about what your dream scenario would be. Do you want to study CS? Is there something else that would interest you? Ultimately, if you want to be a coder, do you need CS? I have a CS degree, and it's helped me a ton, but I've worked with plenty of great developers that pursued other degrees. That other degree might open up other avenues for you, whether it's business or law or biology. The only real advice I'd give you is to ace your IT/CS classes at school, and focus that time elsewhere.

Try to get work experience. Don't stay longer then half a year at the first five employments, you can always go back! Then get a degree! Don't work while in school, spend your free time getting to know people and get a good network.

Code is cheap. Get an education.

I’m 24. I work in google and make 600k/year as L5.

Stop hearing this cool open source projects stuff.

1. Be good at interviews and get 10 offers from all tech companies. 2. Work hard for 50hours per week and make sure you are getting smarter and smarter everyday.

Forget coding and work as hard as you can to graduate from an ivy league school.

I can code, and I can build infrastructure companies. But what I would really like is deep understanding of something that's not strictly tech. Science, agriculture, history, fluid dynamics, etc, etc.

Eh, you're 17. Get a low responsibility part time job and enjoy this part of your life. Once you're in college a lot more opportunities for part time programming work will open up.

There's a lot of bad advice in here. I partied hard through my late teens and early twenties, and honestly, it was a vacuous waste of time.

Find where you can add value, and do it.

Make an intense effort to learn a foreign language, say for one year or so. Makes it easier later in life to start again, or to learn a third one if you must.

Find something people have built that has a lot of users but you can do better.

Then do it better.

It's both a good way to learn and accidentally stumble upon a business model.

I freelanced online and did a startup at 17. The pay was terrible and the startup a failure, but beyond all that, the knowledge was worth it.

if you are on here at 17, you are doing alright! there is no recipe, remember some of the greatest writers did not lead traditional lives, greatest discoverers didn't listen to mommy and daddy and the people who changed the world didn't ask for a recipe, they created one! +1 for travel and question everything, especially the stuff you take for granted.

Talk to these people: www.https://tardigrade.group

Go out with your friends and have fun. You'll have plenty of time to spend coding in front of a screen :)

One thing you need to get good at doing is not giving a fuck about what others do and do what you want to do

Volunteer for a local charity that needs your help?

Contribute to the (standard, maybe) library you like the most?

Step 1. Build something you're interested in, particularly if it solves your own problem.

Spend it like a normal 17 years old. You have decades for coding, but you can only be 17 once.

Just go sailing.

Ability to code is least needed commodity. Ability to fit is a better commodity. Be able to compromise if software development is your goal. Be a bussinesman if entrepreneurship is your goal. Be a politician if corporate ladder is your goal. Nobody needs coders. Besides your skills are outdated by the time you learned them. So, go sailing.

create an app that rates a users face on a scale of 1-10 and matches them up with another user of the same rating. sell the photo database backend to government contractors, law enforcement agencies, advertising firms.

Try to make something popular or try to make something profitable.

Both can go on your resume.

What do you WANT to do? That's what you should do.

run a startup from your room, doesn't matter how stupid it is. If there's a niche market there's value.

Go get some boys/girls.

So when you say you'd like to make some money, is that because you need money or want money?

That right there is a major fork in the advice you can be given. If you need money - like you're going to be out on the street or at least working at Burger King after highschool if you don't find something better - your best bet is developing something that you can directly monetize as quickly as possible that doesn't take any startup capital to get going. Mobile apps were historically the go-to thing, make something simple that you can sell for $1 to a few hundred or at thousand people, repeat. You're going to have a hard time leveraging anything like open-source development into a paying career in less than the "many years" time-span. People are going to be just about as nervous about hiring a 17- or 18-year-old with no degree and 6 months open source experience as they would one without.

If you just want money, either because money is nice or because it seems like a logical next step or because you like the challenge and gratification that comes with paying work (if someone is paying you, you must actually be good, after all) or because you want to fill out your resume, you have a lot more options.

If you are a young person with means and are expected to go to college and spend the next 4-6 years learning, but you already feel like you know enough programming to get a good job if people'd give you a chance, you have a glorious opportunity before you.

From a purely practical point of view, many of us olds lament that all we know is programming, so all we want to program are programming tools. Those of us who were also math majors occasionally want to program automatic theorem-proving software or remake Matlab, which is equally non-profitable.

You, on the other hand have the opportunity to double-major in something completely different, like medicine or horticulture or hospitality or law, and learn about the sorts of software a completely different set of professions need and want, the way only an insider can. While the rest of us are writing the 17,000th text editor that will never replace emacs or vi, you can be writing the garden-management software that millions have been crying out for.

There's a lot of other skills you can learn a little bit about if you're not wasting your time taking ever variation of ever CS class offered. Many highschools, even, offer classes on skills like CAD, welding, and engine repair. If you want to take one of those when you're 30 you'll need to pay 4-10k$ to your nearest community college and find time in your work/life balance to attend the classes.

A huge number of things are going to be easier to learn over the next few years: languages, music, shorthand. You should still get the CS double-major or at least minor, since it will be the certificate you need to get the paying work, but the real opportunity before you is the chance to learn everything else. That everything else isn't just for "rounding out" or "enrichment" or "enjoying youth"; it will make you more valuable as a programmer: you aren't just learning cool things, you're learning domain knowledge for the applications you may someday write.

Well, I think you're doing very well with coding so far.

Generally, in a CS major you will get accounted with many great things that are the baseline of computation, I really enjoyed my time in university with intense math discussions, really good friends and lots of new experiences.

But math passion started to peak at my last semesters when knowledge started to get denser and denser. And because I decided that I wanted to work in private sector instead of academics, I knew that that knowledge in very different areas of computation will irrevocably start to fade away. I don't regret having done my major though!

Enter real life work... Well, the real thing about real life work is that you have to manage a lot of non technical issues, namely coworkers, lead tech(s) planification, discussions about what to do next, what to do with inherited mess, resolutions in those regards, etc. Being practical before being correct. And then, balance practicality with correctness through simplifying.

I started to learning how to code in 2006 but I had a part time job in web development in 2010 and roughly I could say that I have used many different technologies since then. In every team you'll be working, you always need to handle those issues (at least in my limited experience).

Now a little bit of non-requested advice: 1. Don't worry too much about tech stacks, they change over time, at varying frequencies, but a rule I have seen is that almost no library or framework endures a lot of years without major adjustments or complete overhauls. 2. In CS major I learned a few tricks about the foundations of now-a-days flashy features of new tech stacks so don't let them blind you. Experiment with due diligence (I mean, new tech inherits a lot of risk in adoption, so test thoroughly and mindfully). 3. Balance practicality with correctness (again).

Lastly, let's talk about passion. I left this point intentionally as the last thing to talk about because it's something very important to me that I started to reflect intensively lately (I'm 27 btw). CS and computation in general is a whole world by itself, you can do thing for the very sake of doing that, solving math problems, coding new features, read HN for the sole intent and joy of knowing more. But that's not the only way to view this regards. CS and computations in a wider view is just a tool for something else. A tool for creating art, creating experiences with games, creating music, preparing trips around the world, exploring worlds far apart, learning different cultures and languages, helping people in need and so on and so for. So at the end, my last non-requested advice is to experiment life in different places, with different people. I'm very passionate about languages and linguistics in general so I can say firmly that easily I could spend a decade on working something related to language / linguitics. Take deadmau5, he did CS and was passionate about doing music. Take Paul Graham, he knew was passionate about CS and art, but later in his life he turned into an enterpreneur and created Y Combinator. Take solo-devs of indie games, they enjoy computation but are passionate with games. At this age, explore as many areas as you can and hit your passion right away, even if that mean to spend some years in the finding. I recommend to you reading the conception of DuckDuckGo by Gabriel Weinberg [1].

Have a nice journey.

[1] DuckDuckGo: The Solopreneur That Is Beating Google at Its Game - https://fourweekmba.com/duckduckgo-vs-google/

I think everyone's situation and "optimal life" is different, so I'll tell you what I did around your age (I ended up as a software engineer at a game studio). In high school I got a job doing some data entry stuff at a small engineering firm run by a friend's dad. Turned out I was bad at data entry, but for some reason he handed me a book about VBA and asked if I was interested in writing Excel spreadsheet macros for payroll (well, he had a design that I just needed to implement). So I did that (I'd dabbled in programming before, but nothing to the level you're at). I eventually put together what he wanted, but then he bought some proper payroll software and my services were no longer required.

Then I went to college for journalism because I found writing easier than math. Realized pretty quickly I should be in a computer science program instead, but didn't want to switch schools and the comp sci program at our school sucked hard (their intro to CS program used VB, which was great for me but bad for life). So I stuck with journalism and dabbled in Python on the side.

Fast forward four years. I was behind by a couple classes due to slacking off and failing a couple classes. On academic probation. But I've been playing a certain video game and keeping an eye on the studio's jobs page. They need customer support people. I apply. I get the job. I leave to work, my capstone and one elective left to complete my degree. I finish my capstone while working, but ignore the elective.

While working in customer support, I get fed up with some of our manual processes, so I write Python scripts to automate them. Our one tools programmer encourages me to implement the scripts in a web interface for everyone to use, so I do. People like it, so I make more. I make the case to management that it's their choice whether they want me doing the work of one CS rep or multiplying the effectiveness of all our CS staff (We have a couple years' worth of automation opportunities at this point). They see my point and put me on automation full-time.

So all that said, I'd highlight these two points (which are really two ways of saying the same thing):

1. Find opportunities where you are. Someone you know almost certainly has some problem that you could solve with software. If they have many of these problems, you might negotiate some money out of it. But more important than that, there's a lot of value in the practice of identifying and solving real-world problems rather than just doing contract programming work.

2. Think like a software engineer. By which I mean look at the world around you, identify problems, and think about how you can solve them with software. Think about the trade-offs between your various options in how to solve them as well. This, in my opinion, is the key distinction between software engineers and programmers.

Pick a good college and study for your SATs.

idk man, but it's probably safe to drop the "who can code" part of the question.

lol launch a democracy bot

anythingbot, chaosbot

If you do, post it to HN, /r/javascript and /r/programming

If you want money, go to /r/personalfinance and ask for help

I would avoid making money with code. Google and Facebook are evil, period. If you try to make money with code, you deal with the devil eventually.

Just have fun.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact