If you could learn programming or comp sci again; what would you do differently?

13 points by rohitarondekar ↗ HN
There are so many resources online for learning computer science related stuff, new programming languages and some things not easily accessible to all.

Lately I've been feeling the need to invest considerable time on learning new things and re‑learning things I'm supposed to know (or already know).

So I'm wondering; If you could learn programming or computer science again – what would you do differently?

11 comments

[ 3.0 ms ] story [ 27.3 ms ] thread
A solid foundation is of paramount importance: SICP & Discrete Mathematics, for example. The rest will come later.
I have both the SICP and the MIT OCW Mathematics for Computer Science in my list of things to learn. I really want to get into the later so that I can take full advantage of the Stanford/Berkley online classes ( like http://www.algo-class.org/ ).
I'm also taking the Algorithms class! I'm afraid it is going to be a bit math-heavy, but anyhow it looks promising :)
I did a degree in Computer Science, which I didn't _get_ at all, and I hated every minute of it. I worked in sales and teaching for a few years before accepting an offer to program full-time. I came into the field with fresh eyes, and a desire to excel. There I learned the programming not taught at my "Java school" such as: emacs/vim, bash, code control, web programming, perl, and php. I read Steve Yeggy. From there I went to a job highly focused on quality first, where I was exposed to good (or at least better) OO, TDD, Uncle Bob, and Fowler. Now, I am learning to burn off all the cruft of programming that is not directly related to quickly shipping high quality code. If I could go back: I would spend more time programming _anything_. At this point, the only thing that has slowed me is a lack of practice at the craft.
This sounds like my story exactly. I would have hacked on personal projects using Lisp or Smalltalk. My curricula was based on C++, and I could never quite grok it. Ironically, I didn't "get it" till my senior year when I took a graphics class that was taught entirely in C.

I think CS programs do a disservice teaching with an OO language too early. The first language should be functional.

I would probably switch all my years I used PHP for Python instead - and maybe eventually spice up my C skills.
It might sound obvious, but I would have written more code. In school you work on such small scale projects it doesn't give you a good sense of what happens in the real world. Work on a large scale open source project that you have a passion for. In addition, learn C. My CS degree was wholly based around java and I regret not forcing myself to learn pointers, memory management and functional programming.
Yep, exactly what I was saying: just write more code. Functional and C are excellent too.
You should put an end to this mode of trying to figure out some kind of globally optimum sequence of learning. There is none. If somebody tells you otherwise, they are either lying or they have forgotten the countless hours/days/months/years they spent trying to hone their craft and in-retrospect they feel they could have avoided all this if only they knew some optimum way to learn. You are in a partially observable environment. The only way to learn is to explore a bit, consider what you now know, re-explore. rinse, repeat. Pick something, anything, that interests you and jump at it.
I agree with the general sentiment.

But I'm not looking for a general solution. What I'm looking for is some cues and hints.

The most common answer in this thread has been "write more code". When I started collecting resources (mostly links to course material and lecture videos) I got into a read only mode. I forgot that writing code was probably the one thing I wish I had done more in college.

I don't know exactly what I was looking for but I think diving into the material is a great tip, thanks! :)

I'd actually learn more of the other disciplines, whether it's psychology, health care, biology, philosophy, etc. Technical skills have become a commodity - anyone can code if they have the persistence and enthusiasm. But not everyone knows how to code AND have expertise in a specific field. That's unique.