

Ask HN: Advice for those in high school? - garry__

Hi HN,<p>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.<p>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..
======
folz
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...](http://mislav.uniqpath.com/poignant-
guide/book/chapter-1.html) (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.

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

C what I did there?

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

<http://paulgraham.com/hs.html>

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

------
wh-uws
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...](http://www.quora.com/What-does-it-take-to-become-a-programmer-
as-good-as-a-typical-programmer-working-at-Google)

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.

------
sahillavingia
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!

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

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

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

------
maxdemarzi
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...](http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-
lectures/)

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

