

Programming - shainvs

Hey I'm a 12 year old who is trying to learn programming. I heard about this hacker news at ycombinator and I wanted to blog here. I heard that developers read this and I wanted some feed back. I am learning ios developement as well as website making in HTML. I wanted to ask you guys, "How can I learn programming the best and easiest way?"<p>Thanks for reading this article
======
code_pockets
I started tinkering with computers at age 8, so I can relate to you very well.

At your age, I would start by installing a Linux distro of your choice (if you
haven't done that first). Ubuntu is pretty easy to setup if you are a complete
beginner.

Why use Linux?

You should start tinkering with Linux, because it is the most common
development environment used.

Using Linux will allow you to learn basic troubleshooting and debugging. Those
two skills are necessary if you desire to build any kind of application.

Linux will also allow you to try out different languages with a simple command
(such as sudo apt-get install clojure1.2 (which I did two hours before writing
this post)).

Then you can pick a language to learn the basics. By basics I mean how to
write variables, functions, etc. A nice language to learn this is python,
because it has a very simple syntax (syntax is how a language is written (like
the difference between written English and written French)).

After learning how to write the basics, you should decide on a simple project
to work on. One project that I reccomend beginners is to do a simple
Rock/Paper/Scissors game. Focus on making it work, then focus on making it
play against itself. This exercise will allow you to see your code work, and
will keep you busy for a couple of days.

After that, you should head out and build a web app. Anything is fine, but a
good project to start with a simple blog. You can use Python, but PHP is
simpler to run, and is super simple to setup on your computer, thanks to a
program called XAMPP (look it up, and install it). With PHP you can do all
sorts of things. From calculators, to message forums, to whatever you desire.
You can also pick an existing app and try to copy it. One fun project would be
to copy hacker news, and adapt it to whatever topic you'd like. Or even build
your own basic facebook, or a simple search engine. Try and build existing
stuff.

One great thing about web apps, is that you can also learn to code various
languages that interact with each other. You can mix PHP (or any other server
side language) with javascript ( client side language (client means that it
runs on your web browser and not on the server)).

At this moment, you should be pretty good at the basics, and may be ready to
explore other more complex stuff. Maybe pick up a LISP-type of language. Or
maybe you could try an polish your javascript skills. Who knows?

Here are some other pointers:

You should not limit yourself to one platform, one language.

Learning how to program takes years, not because writing the code is hard, but
because designing real applications that work is quite difficult. This is the
engineering side of it (and where most people fail, and/or quit).

Don't be afraid to try new (to you) things. You broke Linux/Windows? Who
cares! Re-install and try again.

I started to tinker with computers at age 8. Took me years before I could even
write coherent code (though I still wonder if my code is coherent). Yet, I'm
here, enjoying it.

One final note: Don't quit. Quitting will make the biggest diference in your
life. Keep going, even if slowly. You will get it.

Good luck!

My best,

code pockets

~~~
shainvs
Thank you so much for giving me such a detailed reply; and as you said, you
started tinkering with computers at an early age. I am already learning python
using a free open couseware from MIT using iTunes U. I have also learned the
basics of javascript(using codecademy) and am applying it to HTML. I have a
frind whose dad told me to start with HTML making web apps. He told me that
app developement was to comlex for a beginner like me. I came to hacker news
to learn more about what I should start with and what I should use to make
simple but usefu applications

THANKS AGAIN!!!

~~~
code_pockets
>I have a frind whose dad told me to start with HTML making >web apps. He told
me that app developement was to comlex >for a beginner like me.

I understand why he would reccomend HTML, and I partially agree with that
statement.

HTML is fun for a beginner, because it allows the person to see changes done
in the code without much hassle. Want to change the background from purple to
blue? Just change the css property:

body{background-color: #123456} /* not an actual color number */

and hit F5.

I'm teaching my niece how to build simple web pages with HTML, so I understand
the value it provides to a beginner.

You see, one thing us older hackers forget, is that beginners tend to think in
terms of higher levels. Higher levels means that thinking about how the web
app will look, feel, and work, rather than thinking how the code will be
structured inside of it. This, because beginners do not have understood the
engineering side of programming yet.

Although I'm not quite comfortable with someone who tells a 12 year old that
something is too complex for them. I don't agree with such thing.

Here is why?

You were born after the internet became mainstream. You view information as
something that is readily available. Learning something is just a click away.
There are hundreds of tutorials to learn anything from cooking to painiting,
and you can easily find them by doing a web search.

On the other hand, I was born in 1979. The internet back then wasn't known in
my country. Fact is that we got telephone service during the late 1980s, and
cable TV during the late 90s. I first logged into the internet in 1998, but I
had learned how to write simple programs from the user manual of my first
computer, and from college level textbooks (that we had at home in a small
library my mother kept). Learning for me took months.

Why am I telling you this?

Your dads friend is an old dinosaur like me. He does not understand how a
modern young mind (like yours) has adapted to the mountains of information
readily available.

Of course you can do iOS apps, but the question is: should you?

Should you limit yourslef to one platform (while learning)?

My answer would be no. Learn as much as you can from everything. Sure,
building an app would be fun and get you some attention, but building
libraries, and or useful programs for your house/yourself/school/chruch/etc.
would benefit fit you much more in the long run.

Well, it seems that by answering your questions I feel that I'm trying to
answer the questions I had back then. Sorry for that.

One last thing:

Don't let someones opinion of your abilities turn into your reality. You are
you, and not even you know how deep those abilities are. Go ahead and explore
them with no fear in sight.

Have a nice day!

------
canadaduane
You need to do two things to get good at programming: go deep, and go broad.
The problem is, you can't do them both at the same time, so, you have to
alternate between the two.

Pick a project that is awesome, and that you think you might know how to do
(or even a little bit). Work at it and try your best. This is how you go deep.
Basically, you pick one narrow thing and do it as best as you can.

Next, find someone (or a book, or a web guide, or a website like
codecademy.com) that can teach you about the principles of programming. This
is more of the "computer science" side of things: how CPUs work, how data is
structured, what kinds of algorithms have been discovered and created before,
how to succeed at putting complex parts together. Learn all you can about the
general rules of programming and the lessons learned from many decades of
people trying to get computers to do what they want. This is how you go broad.
Basically, you give yourself over to someone who has some structured lessons
to teach you.

Then go back to deep. Then broad. Repeat, until you are happy with where
you're at (which, if you're an evergreen learner like many of us, will be
never! :)

~~~
shainvs
Thanks I did finish alot of things at codecademy and all I have learned so far
was either through w3schools, codecademy, or iTunes-U. Thank you for your
feedback I will try and work how you said

~~~
nuclearsandwich
Just a quick note. Avoid w3schools[0]. The Mozilla Developer Network docs[1]
look much nicer and are far more accurate.

[0]: <http://w3fools.com> [1]: <https://developer.mozilla.org/en/HTML>

------
theiostream
First of all, don't trick yourself: HTML is not a programming language, it's a
markup language parsed by your web browser which then turns that markup into
cool websites.

Then, wanting to code "the fastest way" is a wrong concept. Learn everything
you can, doesn't matter how long it takes, learn right.

There are basic tutorials on programming languages online which are good for
starting up, and then there are thousands of books and documentation which
might help you around. Specifically, for iPhone development you need to know
the Objective-C programming language, so here's a tip: Don't head into coding
a huge app hoping you'll just learn by making it, while you just end up
copying code from StackOverflow entries. Learn, and then use what you learned
inside an app.

IRC is a great way to talk to experienced developers, and browsing source code
is also great for learning new coding techniques. If you need any more help,
I'm always reachable.

(Also, as a wise man said, "Age is just a number". Just because you're very
young, it doesn't mean you can't do stuff better than a 30 year old might. All
it takes is effort.)

~~~
shainvs
Thank you very much. Ya, my concept of speed does not matter as long as I do
it right. I have looked at alot of iTunes U tutorials and have also finished
alot of codecademy couses. Thanks for your effort!!!

------
tait
Heh.

The better question is "How can I learn programming the best way?"

HTML is good. iOS is also good.

Learning programming quickly: For playing around, Processing is fun. For
"real" programming, I would suggest getting a copy of Learning Python and
working through it.

Learning programming well: Get a copy of Kernighan and Ritchie (The C
Programming Language). Learn it. Then do the same with The Structure and
Interpretation of Computer Programs (Abelman and Sussman). Once done with
those, you will be WAY ahead of most teen programmers.

~~~
shainvs
Thank you,

I have had some "experience" in python programming but I dont just want to
learn scripting; I also want to learn visual programs, but yeah I'll try out
the books that you recomended. So far I have been learning through itunes-u
and some free stanford classes.

~~~
nuclearsandwich
If you want to do visual programming, check out the Processing languange
(<http://processing.org>) as well as Hackety-Hack (<http://hackety-hack.com>),
which is a Ruby Environment for kids of any age to learn how to program.

Hackety-Hack.com also has a StackOverflow-like Question/Answer page for people
new to programming to get assistance.

Programming is fun and rewarding, but it's also one of the most challenging
mental exercises you can submit yourself to. Be prepared to feel discouraged
once and a while but don't let it sink in. Anyone with drive can learn to
program!

~~~
shainvs
Thank you very much!! I used the hackety-hack one and it is very very
usefull!! Thanks again

