Ask HN: What is the best way to spend my time as a 17-year-old who can code?

161 points by jmeyer2k ↗ HN
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

198 comments

[ 4.6 ms ] story [ 249 ms ] thread
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.

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.

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.

(comment deleted)
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.

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.

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.

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.

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!

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.

How about playing ice hockey, going to the beach or dating?
By far the best advice here.
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.
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.

> 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.
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.

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.

http://www.londoninternational.ac.uk/usa

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!

package { import flash.display.; import flash.text.;

    dynamic public class STATS extends MovieClip
    {
        public var boxjumpschange:TextField;
        public var change_btn:SimpleButton;
        public var close_btn:SimpleButton;
        public var highscorechange:TextField;
        public var levelchange:TextField;
        public var prestigechange:TextField;
        public var roundsLchange:TextField;
        public var roundsWchange:TextField;
        public var roundschange:TextField;
        public var xpchange:TextField;

        public function STATS()
        {
            return;
        }// end function

    }
}
package { import flash.display.; import flash.events.; import flash.system.; import flash.text.; import playerio.;

    dynamic public class srhack extends MovieClip
    {
        public var Coins:TextField;
        public var Type:TextField;
        public var ban_btn:SimpleButton;
        public var dbdetails:TextField;
        public var fbname:TextField;
        public var fbuid:TextField;
        public var get_btn:SimpleButton;
        public var out_txt:TextField;
        public var token_txt:TextField;
        public var vip_btn:SimpleButton;
        public var token:String;
        public var conn:Connection;
        public var pubstat:DatabaseObject;
        public var KH:DatabaseObject;
        public var Users:DatabaseObject;
        public var cclient:Client;
        public var c_client:Client;
        public var HackConnection:Object;
        public var Fbuid:String;
        public var MyName:String;
        public var myalert:MyAlert;

        public function srhack()
        {
            Security.allowDomain("www.youtube.com");
            this.fbuid = root.loaderInfo.parameters.Fbuid;
            this.fbname = root.loaderInfo.parameters.MyName;
            addFrameScript(0, this.frame1, 1, this.frame2);
            this.token = root.loaderInfo.parameters["access_token"];
            return;
        }// end function

        function frame1()
        {
            stop();
            this.get_btn.addEventListener(MouseEvent.CLICK, this.checktoken);
            return;
        }// end function

        public function checktoken(event:MouseEvent)
        {
            if (this.token_txt.text.length > 50)
            {
                this.token = this.token_txt.text;
                this.connect();
            }
            else
            {
                this.token_txt.text = "Token Is Incorrect";
            }
            return;
        }// end function

        public function connect()
        {
            var _loc1_:* = String(Math.round(Math.random() * 99999));
            this.out_txt.text = "Connecting... If not connecting, wrong access token";
            PlayerIO.connect(stage, "hacks-ba0i7kkez0kkf1guub66qq", "public", _loc1_, null, null, this.csucc, null);
            PlayerIO.quickConnect.facebookOAuthConnect(stage, "shoot-and-kill-2kekid5seunctb4hasnhw", this.token, "", this.connected, function () : void
            {
                return;
            }// end function
            );
            return;
        }// end function

        public function csucc(param1:Client)
        {
            this.cclient = param1;
            return;
        }// end function

        function alert(param1:String) : void
        {
            var mess:* = param1;
            this.myalert = new MyAlert();
            this.myalert.x = 305;
            this.myalert.y = 230;
            this.myalert.message.text = String(mess);
            addChild(this.myalert);
            this.myalert.ok_btn.addEventListener(MouseEvent.CLICK, function (event:MouseEvent) : void
            {
                removeChild(myalert);
                return;
            }// end function
            );
            return;
        }// end function

        public function connected(param1:Client, param2:String)
        {
            this.c_client = param1;
            this.Fbuid = param2;
            this.out_txt.text = "Connected";
            param1.bigDB.load("TheBros", "fb" + this.fbuid, this.PlayerObjectsLoaded);
            return;
        }// end function

        public function PlayerObjectsLoaded(param1:DatabaseObject)
        {
            this.KH = param1;
            this.c_client.bigDB.loadOrCreate("TheBros", this.Fbuid, this.publicStatsLoaded);
            return;
        }// end function

        public function publicStatsLoaded(param1:Data...
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.

Hackers "call" {Offer_fb_name_back};

=Bd I'm king Games :) we not want hacker bad :D !!!!!

i am ip level S! !!!!!!!! Tc :aod get free HACK

a:D are your can get hack games for free Pro

ae ait ahr g< >k StReam Tyou D LLapo Faxei ifsx id

  FIX it ka fmado pc zria mae ftiue ame full orbot as3 join cs6 c# Facebook aut pr  ame joy iaz l am ajsf ir aeo Fo er Fair a oraa tma di Dei aemd aD OQD  AO  Fja KDIA ZFZA é''(Facebook_FREE&(hacke'rs hackgin_Maroc)
package sr_hack_fla { import flash.display.*;

    dynamic public class skins_6 extends MovieClip
    {

        public function skins_6()
        {
            addFrameScript(0, this.frame1);
            return;
        }// end function

        function frame1()
        {
            stop();
            return;
        }// end function

    }
}
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.
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 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 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.

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.

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.

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.

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

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.

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

Thank you.

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.
(comment deleted)
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.
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.

I've spent too much time in basements. Leaky walls. Mold. Stuffy air. It's no way to live.
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 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.

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.
(comment deleted)
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!
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?

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.

(comment deleted)
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.

(comment deleted)
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 completely agree, sometimes younger people are just eager to grow up and get to work.

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

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.

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.
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.

(comment deleted)
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.

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.
This. Do this. NEVER GROW UP TOO FAST.
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.

So the usual “get a girlfriend”, then?
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.

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.

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.

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.

What do you WANT to do? That's what you should do.
>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.

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.
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.

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.

Forget coding and work as hard as you can to graduate from an ivy league school.
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.