Hacker News new | ask | show | jobs
Ask HN: Advice for those in high school?
17 points by garry__ 5756 days ago
Hi HN,

My brother referred me to this site. I'm in highschool right now (Junior), and am interested in learning programming. I'm trying to figure out this space right now. I've learned some Java on my own, but want to upgrade my skill set so I can (eventually) be a part of a startup. I'm wondering what languages are valuable to learn, and what the best resources for that are.

Overall, I'm just looking for some guidance to propel me into the same space as some of you guys. I was inspired by that Ferross story recently, and in general want to dedicate myself to learning all the skills necessary to be in a similar position in a few years. Advice from some of the veterans on here would be appreciated..

9 comments

I, too, am in high school, but have been programming for several years. One of the best things that I've been able to do that I wholeheartedly recommend you try to do as well is to find someone in your school or community that knows computer science (the theory and principles involved, not just how to program). A solid knowledge of computer science is a terrific foundation to have, but it's hard to learn on your own. If you have a mentor (I found mine in my school's computer science teacher, and a professor at my local college), you will have someone to guide you and someone to go to when you're confused about something.

In addition, as tommynazareth said, find something to make. It doesn't have to be the next Facebook or the Linux 2.8 kernel, but you should find something that you can program. You mentioned Android/iPhone applications were something you were interested in doing. If that is the case, try deciding on a single-functionality app like, for example, a "Where's My Car" clone, where you create an app that remembers where the user last parked his car by using the Android's GPS data. Or maybe you want to make an app that can interact with Twitter. Whatever the case is, pick something and make it. If you have a mentor, you can go to him or her if you get stuck (or even for project ideas!). Contributing to open-source projects (once you're comfortable programming in whatever language the open-source project is in) is a great way to not only make contacts in the programming world and improve your skill set, but also add to your college and job resume.

If you're interested in learning CS theory on your own, the more power to you. How To Design Programs, mentioned previously, is a great textbook -- in fact, it's the same one I used when I was first starting out. MIT's OpenCourseWare has copies of most MIT class lectures, and you can try to follow along. Stanford has something similar. Read pretty much anything by O'Reilly. If you want your brain to explode, you can try working your way through Don Knuth's Art of Computer Programming. Since you mentioned "languages ... valuable to learn," check out why's (poignant) guide to ruby at http://mislav.uniqpath.com/poignant-guide/book/chapter-1.htm... (although programming languages come and go like grains of sand on the wheel of time).

The most important thing of all, though, is to never stop wanting to learn. TED talks can provide the inspiration for that.

Now I must go and finish my homework that I have due for tomorrow. Hope this helped.

> (although programming languages come and go like grains of sand on the wheel of time).

C what I did there?

"What you'll wish you'd known", by Paul Graham, intended for high-schoolers:

http://paulgraham.com/hs.html

A bit leftfield, but...

Although it remains to be seen what will happen to languages - learn a second language (human) fluently.

I always thought that being a native English speaker put me at such an advantage compared to people from other parts of the world in business, but a lot of my peers in Western Europe are fluent in English and of course fluent in their own language, if not fluent in another as well.

If you're in the USA, it might be less of an issue (I'm in the UK), but I think it will be an increasingly important differentiator, particuarly if you work for a company which is looking to diversify overseas or is a multi-national.

It will also bring many other benefits 1. Freedom to travel lots of places (ok, you can get by on English in most places, but being fluent in either French or Spanish opens up a whole new world of places you can travel to confidently)

2. If you travel a fair bit, it just makes you a more confident person. (I haven't travelled much myself, but obviously friends etc have and those who have travelled are more confident, more outgoing and probably more likely to succeed)

3. Having being involved in work for clients overseas, although they can speak fluent English - there is kudos and also deeper understanding if you can speak their language as well.

As well as programming languages, learn a second human language, I sure as wish I had kept up some of mine. It will keep you in good stead for both business and life.

First off exactly like folz and others have said. Make something. BUILD SOMETHING as people often call it. It can be as simple as you want.

Make sure to avoid feeling inferior with whatever it is however it comes out. ALOT of programming is learning by doing. Don't get caught up in well "all I did was x". You can still learn alot from actually having done x that can help you when you eventually want to make y.

Next its good that you are getting started early.

I wish I had the foresight to ask this question of a community like HN (much less known about/ had HN) back in high school especially so I could have gotten started working on subjects like the ones you can read here

http://www.quora.com/What-does-it-take-to-become-a-programme...

I've been learning programming since about middle school (about to graduate from college now) and I'm still learning everyday. People well into their careers from CEOs to new hires will tell you the same.

Dive into something, start small and scale up. You'll be amazed at what you can come up with given time.

What I did: downloaded the Stanford courses on iPhone development, spent two weeks working (really, playing) my ass off. Spent the next four weeks making my first app (http://colorstreamapp.com/). Was excited to make millions on release!!!

Made nothing. Worked harder, made some. Worked more, made more. Now it's a decent income stream and I've gone from a nobody to a less-nobody.

Age is less of a barrier every year. Get started ASAP. As pg often says, if you're so passionate about something, why aren't you working on it RIGHT NOW?

Good luck!

To be a bit more specific, I'm currently interested in creating some mobile apps for the various platforms (android, iphone, win7, etc). But I want to develop a skill set that will allow me to have a general understanding of the whole domain (sort of like a liberal arts education but in the scope of software development and programming). General resources, as well as advice for somebody just starting out in this field are all appreciated.
Write a simple Android app and you'll start gaining experience in software development. If you want to balance that by studying some computer science, there are a wealth of top notch textbooks freely available. How To Design Programs is probably a good place to start.
There are so many directions to go and so much advice out there. To cut away all of the fat, I'd say 'Make Something'. Decide on something you want to make and finish a piece of it today. Eventually you'll find a technology stack that works for you, a niche you can serve, etc., but start today with just creating something. Learning involves a lot of consuming, but above all you need to learn to be a maker.
If you can watch TV, you can watch these MIT classes on computer programming. Classics, you'll fall in love.

http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma...

1. Figure out the kind of stuff your interested in. 2 Determine the kind of tools others use to build said stuff. 3. Learn those tools. 4. Build something cool.