Advice on programming advice

Jul 05, 2006 16:50

So, I've been programming for a very long time, 19 years or so. As you might expect, people ask me for advice on learning to program.

Problem is, I learned to program in 1987. My first language was Basic, my second language was FORTRAN, and my third language (in 1993) was C. I didn't really bother learning any sort of object-oriented languages until college, which for me started in 1996. I taught myself Perl and Java on a lark in 1999. I learned Smalltalk, LISP, ML, and a variety of other languages for classes in college. Somewhere along the line I decided to teach myself Ruby and Python, and I'm looking at O'Caml and Haskell now because they look really interesting, and significantly different than what I've seen before.

At this point, I figure I have a good grasp of how to design and architect a wide variety of programming tasks, and I can certainly explain my design decisions to people who are curious. What I can't explain, though, is how I reached those decisions. Why did I start thinking in that direction? Honestly, it's usually because I've seen something like that before, written by someone else, and it looked like a good fit.

Really, there's nothing special about programming. The programming language is really just a small part of programming. I don't use the first two languages I learned: They're obsolete, now. The crux of programming is really the logic aspect of it. If you want to be a good programmer, practice logic puzzles. That's really what programming is: Figure out the solution to the logic puzzle, and then describe it to the computer in a language the computer "understands".

When asked a programming question, in an interview for example, I figure out the solution before I select a language. Sometimes the solution is easiest for me in Perl, sometimes it's easiest for me in C, and sometimes it's easiest to me in LISP. I assume things will start to be easy for me in Ruby sometime soon.

Still, people ask me, "What language should I learn first?" Really, I have no idea. I could say to learn C, but that's probably not such good advice for a first language anymore. I've actually been saying "Ruby" these days, because it's simple to learn, I can point to some nice tutorials for it, and it's really close to the "solving the logic problem" aspect of programming. I wonder, though, if I would be nearly as good a programmer if I had learned Ruby before C -- learning C has forced me to learn how a computer actually works, and has taught me how to write very efficient code.

Anyway, what I'm trying to say is that I'm a decently experienced programmer who has no idea where he'd start learning to program today. Does anyone have any advice for me to pass on?

questions, programming

Previous post Next post
Up