Hacker News new | ask | show | jobs
by mechanical_fish 5779 days ago
You need to decide what you want to build, or at least what you want to build first.

From CSS, an obvious way to go is Javascript or PHP, or better yet both.

If you think that you don't want to build a specific thing, but instead want a birds-eye armchair view of the essence of what programming is about, don't waste time; try SICP:

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

But odds are that you'll quickly find that you don't actually want to be a computer scientist. ;) You want to build something. So find an example of the thing you want to build, learn what it was built with, then learn to program that.

Bonus advice: Whenever you don't know what else to do, learn about Unix, find a new feature of your text editor or version control system, or study regular expressions.

1 comments

Someone told me to try SICP when I was first trying to learn how to program and it was an incredibly frustrating and deflating experience.

The process goes something like this: Okay, SICP sounds good. They're using LISP. How do I make a LISP program? The internet says SLIME is THE way to go and I'd be an idiot to try any other development environment. Ok, I guess I'll just install that... (3 weeks later)... okay that didn't work. Screw this, I'm learning PHP.

Dr. Scheme might have made things easier. Especially because SICP uses Scheme and not Lisp.

That said, the first term of my freshman year of college used SICP as the textbook. I banged my head against a wall for the first six weeks and had an epiphany in week 7. It's the best feeling in the world when functional programming finally makes sense.

Everything is hard in Scheme/LISP world. As a first programming project for an isolated person without collaborators or teachers, SICP is death. It will be months before the autodidact can accomplish something that he can feel proud of. Nothing will kill interest faster than beating your head against the wall in isolation for months in your spare time without any tangible progress.

I believe people that say it's awesome and I look forward to tackling it someday. But it is not a good way for a person to dip his first toe into programming.

I think it's worth trying for a couple of weeks. If it doesn't start to click, then come back after a few years of imperative programming, at which time it won't be as easy as you'd expect (or so it is reported) since you have to learn the very different functional paradigm, but you'll appreciate it all the more having accumulated plenty of scars from side effect caused bugs.

That said, if you have something you want to build starting with a project and an appropriate language and ecosystem (including instructional material) is very good. I myself started out in a high school punched card IBN 1130 FORTRAN "IV" course, but soon started a project that really got me going.

I didn't try SICP until half a decade later; by then I was an experienced imperative language programmer (mostly C by that point) and fairly experienced in Maclisp and Lisp Machine Lisp. At which point it really made sense, both in terms of being able to understand the material and why it was really important.

This is not at all what doing SICP was like for me. It was fun. There is an interesting idea on every page. The exercises are challenging and interesting.
"Everyone" was wrong when it comes to SICP. The standard environment for that is the MIT Scheme distribution (http://www.gnu.org/software/mit-scheme/) which includes a version of EMACS named Edwin which runs in the same process as your Scheme. It's trivial to install (at least on Windows, haven't tried Linux) the whole package and get up and running for the purposes of SICP, which have almost nothing to do with LISP/Scheme (at least in the first few chapters).

SLIME is supposed to be the way to go for a complicated LISP like Common Lisp or perhaps a richer Scheme or Clojure, but SICP is trying to teach you programming, CS and the like, and what you learn from about Scheme is incidental (well, until you get the the metacircular interpreter magic).

Yes, this is exactly what I was trying to say, though I would never want to say it so bluntly up front because, well, some people love SICP. Of course, some of us loved statistical mechanics and vector calculus as well. There is no accounting for taste.

Learn PHP. You know more than you are letting on, because you evidently understand exactly why PHP is a big success. Get some stuff done. I assure you that the websites you build with PHP are real websites, and the money you earn with them is real money.

Given that I work at a Drupal company, I would be remiss if I didn't suggest that learning to build sites with Drupal is a great way to learn to work with PHP, Javascript, a web stack, et cetera. The community has lots of people who are coming from just the same place that you are.