

Ask HN: How did you learn programming? - michael_fine


======
shane-armstrong
I am a 19 year old programmer, I began in 2009, learning PHP via debugging a
broken PHP script for a friend. It took me a long time, days, as the script
was 2,300 lines long and I was a complete beginner.

w3cschools was a great help during this time, but I would say that my biggest
help was trial and error. You have to get a lot of things wrong before your
finally understand how to do them right.

Once I learned PHP I wanted an easier way to display data, and started
learning markup, XHTML, CSS, etc. I used w3cschools again for this.

I read a few books at that time (unfortunately, they were online, and I can
not for the life of me remember what they were, apologies) to help improve my
skills and began to study typography. This mainly involved searching google
for web typography, experimenting in photoshop and then creating the styles as
close as I could in CSS.

About 7 months ago I realised that I needed more depth, I was not content with
mere web applications. I started learning .cpp, using the visual express 2010
tutorials provided with the download and then I started searching for (once
again via google) simple code examples. My time with PHP had taught me simple
class architecture so it was not as difficult to pick up as a beginner would
find it.

As I expanded my knowledge I found that I could not find enough online
material, so I started a local "computer club", where I could meet like minded
people. Via Coursera (the online stanford cryptography class was fabulous) and
the club I have since gained what I would consider an acceptable level of
programming with .CPP (and Python, but that is a whole other story.)

Along the way, I also added javascript, mysql and xml, but I left these out
due to their connection to web design.

Anyway, this is just the path I chose, I dare say it was unconventional, but
it worked for me.

If you are looking for advice, all I will say is this: Google is your friend,
MiTx will definitely help you to improve once you gain an acceptable skill and
coursera's CS101 class would give you the basic knowledge required to
continue.

Also, on an unrelated note, congratulations, I have read HN for a very long
time now, and I signed up specifically to reply to your question :)

~~~
michael_fine
So, what are you currently doing now?

~~~
shane-armstrong
Currently, waiting for the coursera cryptography course and I just began
working for a web design company in Preston, England. Entry level wage, but
good experience :)

Although, I'm also building a blog for my girlfriend, as she is "sick of
tumblr" (lame, I know, but she begged me >.< ) and will likely pop it on here
in a few days once it's finished.

------
ezl
I offered to work in exchange for a local dev consultancy (pybrew.com) in
exchange for instruction. I had a basic understanding of procedural code
(could figure out for loops and generally make things happen with very
spaghetti-ish code) but didn't know what an object was.

At the time, I didn't really know how to solve code problems, how to
effectively use docs, or how to use a debugger -- which they taught me. A lot
of times they let me build the wrong thing then show me how I could do it
better (doing research, learning how cookies work, and reinventing the wheel
with web authentication, for example).

'Twas an odd, makeshift apprenticeship program, but it was perfect for me. At
the time I didn't realize how lucky I was (I don't think they did either), but
I am very grateful to have stumbled upon the opportunity.

------
waterlesscloud
Learned Basic from my computer's manual, learned assembly from magazines.

I took some "computer programming" class in high school, but computers were
still new-fangled to the faculty and it was entirely self-directed. I used the
time to make a game in assembly on the school's Model III. There were PC Jrs
for a broader computer literacy class, but I never used those.

In college, I started as a physics major and hence learned Fortran. Dropped
out for a couple of years, went back as a CS major. Then was exposed to many
things; C, C++, Prolog, Ada. But Pascal was the workhorse of the curriculum.

First job out of college was C (legacy projects) and C++ (new projects). And
Visual Basic for some quick and dirty things.

Worked as a programmer for a while. Stopped. Did something else for many
years. The last year or so I've been retraining myself. Played with Erlang and
Clojure, but nothing serious. Made a couple of toy Android apps with Java.
Wrote some simple Atari 2600 things using an emulator. Working through an idea
for a site with Python/Django at the moment.

I'd like to work as a programmer again, I think. Or more accurately, I really
enjoy being able to build things.

I feel most at home in C++ still, but I find myself using Python to try out
ideas more and more as time goes on. Assembly still makes me happy, but I
don't really use it for anything.

------
kingofspain
Started typing BASIC from my ZX81 manual because the machine could do little
otherwise, moved on to a bit more on the C64 but it really kicked off when I
got an Amiga. A _lot_ of games in AMOS and then after weeks of delicate
preparation, convinced my parents to buy me a book that was a spin-off of an
Amiga mag, it came with the full version of Dice C (£25 was a lot of money for
a book for a 14 year old!).

Later I got a C compiler off a PC mag and dabbled with that, moved on to
Delphi and then by the time the internet made an appearance in my household I
began with the HTML and shortly afterwards Perl and then PHP. It was only at
this point that I started learning "properly". I guess partly because it was
time and partly because it was the first time I ever had some level of access
to best practices, theory and whatnot.

------
proexploit
I started consulting instead of going to college and (almost) always said yes
when asked if I knew how to do something, whether or not I knew that
particular task yet. Once I said I could do something, I was locked in and
forced myself to learn it.

------
lumberjack
In middle school I took a computer science class because it had "science" in
the name. Computers were still very expensive and I had practically never used
a computer till that moment. One of the modules of the class was a walk
through software engineering using the old waterfall model. We had to design,
build and test a basic application in Pascal. Nice memories. From there
onwards it was all self study.

------
tsurantino
As per my brother's recommendation, I ignored all the modern hoo-ha's about
high-level programming languages and dove right into C and C++.

Spent weeks grinding it out until I was finally comfortable writing code. I
can tell you honestly that this experience has never left me and I've never
been at a completely loss navigating through different languages since.

------
khyryk
I dabbled around in BASIC for a while, but my real effort to learn programming
started with Python when I was about 18. Compared to much of what I've seen on
here, I'm quite a late starter, but then again, I have many interests.

------
mtrn
I remember to have carried a bunch of basic programming language cards (happy
families card game style) as a kid - especially I remember two cards, GOTO and
GOSUB - which sounded so similar, yet had quite different depictions :)

~~~
shane-armstrong
I had them for my high school statistics exams, I remember having one which
just said: "Hypothesis testing via the binomial tables of probabi" and then
presumably they ran out of characters because it cut off there.

I never did find out what the last word was ^.^

------
baptisteHM
I took a few programming courses, then W3schools of course, and watching as
many tutorials I can find online. Then, I started offering help to friends and
worked on some small projects. Practice, practice, practice...

------
bobfirestone
Started to seriously learn programming about 2 years ago by joining a user
group, reading lots of books and writing lots of code to practice. The only
way to learn is by doing.

------
daleharvey
Trying to build an imdb for music in javascript + coldfusion

I probably owe my interest in computers thanks to imdb and wikipedia

~~~
benburleson
This is a good idea, but why coldfusion?

~~~
daleharvey
A friend of the family knew it and taught me some, I wouldnt chose it again :)

I even remember the name now, I called it indb (indie database), it didnt get
very far

------
rmATinnovafy
My folks bought me a C64 instead of a video game console.

------
andrejewski
Immersion and starting from scratch on everything.

