> The computers in Jurassic Park is what got me into programming when I was young. I saw their 3D weather overlay when the storm was approaching and thought "THAT IS IT!". I was 8 years old at the time.
I'm guessing you would be around 28-30 years old, so I'm a couple of years or more older ... but I started learning C when I was 31, currently I'm interested in stuff like parsers and data structures (I really should look at sockets soon). Perhaps I'm just too old to hack.
> I wish I still had the code, it's sitting on my old computer at the Farm in New Zealand :<
I bet a fair few people on HN would be interested in it as well, it sounds quite hardcore.
Warning: anecdotes and unsubstantiated speculation ahead
Did you do any programming at all before 31?
I don't think you're ever too old to do anything, personally. I was 26 (which isn't terribly old, admittedly, but definitely past the little kid age) when I talked to a friend who was a professional programmer and decided "huh, I like computers and solving problems. I'm going to do that." I hadn't programmed before then, though I was computer savvy, I guess. I also have a degree in sociology, heh.
Took me about four years, but now I have a corporate job doing full stack .net work in C#/MVC, I've done side projects in ruby, and I do some C, Haskell, and python on the side. I'm also working my way through The Algorithm Design manual and have Concrete Mathematics to work through later on.
I always got really discouraged because I constantly see and hear about people who started programming when they were five, or eight, or something like that, and I'd think "no way could I get into it that deeply, starting so late" but that's just totally untrue. I'm finally at a point where I think "given the desire and time, I can learn whatever comp sci topic I want," so I get discouraged less.
I think part of it has to do with notions of talent, and natural abilities. When I was a kid, I took for granted that something would be hard until I learned it. I don't remember learning most of the basic skills I have, so I forget that things can be difficult starting out. Every topic I've started learning and stuck with in programming has pretty fully integrated itself into the core of how I think about the topic. One for-example would be immutable data structures as they're implemented in Clojure, or functional programming in general.
Anyway, that's a rambling tl:dr for: stick with it. You're never too old. You just have to try that much harder to catch up initially, but if you can teach yourself to keep learning now, you've got an extra skill a lot of people don't have, which is learning how to learn as an adult. I think it's the most valuable skill I have right now.
(ps I'm making a lot of assumptions in this post; sorry if any of them are way off base)
This is exactly my situation as well. I was always into computers when I was young but didn't really have access to any until high school. I always envied people that started learning how to code when they were kids, I still do. Like you, I always thought my chance to code had come and gone because I'd only ever heard of people that started when they were young. Like you, I always felt discouraged.
A couple years ago I figured I would try anyways, so I started looking up good books to read through and do the exercises. Started with Python and I've read books on and written assembly and C. Now I'm an independent contractor doing webmaster/web developer.
Any books you'd recommend other than The Algorithm Design/Concrete Mathematics? Those look interesting and I'll probably go through them.
Code Complete 2 [1] was one of the first coding books I've read. As with anything else, it's good to look around (HN is a good place) for people who have problems with the book. I think I learn as much reading the commentary people make about books like that as I do from the book itself.
I think I've listened to every podcast on software engineering radio a few times [2]. The older ones are especially nice because they usually pick a specific topic and cover the high points. I liked that I could listen to it while I was driving, or otherwise not in front of a computer.
It's specific, but Javascript: The Good Parts is probably the most used book I have on my shelf. It has such a perfect amount of usable information in it. It's pretty great. Again, it's definitely worth looking up critiques and counterpoints.
I've also got Introduction to Algorithms, which I use as a reference, sometimes. I switched over to The Algorithm Design Manual [5] after I saw it referenced in an older Steve Yegge post [6]. I read through the intro and it seemed like a book that would be more appropriate from an autodidactic standpoint. I really have no idea if that's going to pan out, since I'm not that far into it, but we'll see, for sure. Doesn't kill me to have an extra algorithms book laying about, though, and I've always got intro to algorithms for cross reference. I've found that I really need to have as many sources available as possible when I'm learning alone. Usually I don't get something until the fifth person describes it from the tenth different angle.
That's most of what I can think of off hand. I really enjoyed The Joy of Clojure [7], though haven't checked out the newer version. Programming Collective Intelligence [8] is a fun book, and is what made me want to go back down the maths route to get more into machine learning.
And of course habitually reading hacker news for an hour or three every night :)
So that's my totally inexpert list of random stuff that I enjoy
Hey, no problem. I'm going through my comments, and just now saw you replied almost a month ago.
I just wanted to say, get in there and start doing it. I honestly think that, to a point, I'm at an advantage. I've had so much work experience outside of coding, that my context for interacting with people seems to work in my favor. I'm also just super glad to have a programming job. Mix a (hopefully) more level head, with an exuberance for the job, and I think I put across a pretty good image.
If I can throw some suggestions out there, listen to every episode of software engineering radio. The other books I mentioned are great, but SE radio is nice in that you can just casually listen to it while you're commuting or whatever else. I listened to it when I had barely done any coding and I think it lent a lot of perspective to what I was doing. I still run into random situations where someone says something like "do you know anything about AS400?" and I'll say, "well, not really, but I have a general context as far as the ibm i series os goes, and some of the general ideas behind it. I could probably pick up material and get going." It's not much, but being familiar enough with a ton of random stuff has given me credibility in a lot of situations I wouldn't have had before.
I also relisten to them a lot, and get new tidbits because I didn't understand bits and pieces before.
I hope this doesn't sound preachy. I think our culture pushes this idea of the talented hacker, or the person that started x or y when they were five. That's great, but man, screw that. I don't plan on stopping learning until my brain doesn't work, and I'm going to use that to my advantage.
I'm 31. When I was 9, I wanted to copy Ultima, my dad had a copy of Visual Basic so I learned how to use that and made an RPG engine. When I was 11 or 12 I started getting frustrated with the performance of VB/QBasic (this is before we had Internet access, so reference material was sparse) but I had a copy of the programmer's guide to the IBM PC and PS/2 and managed to figure out how to use assembler to draw in mode 13h in BASIC. As I got on to be about 14-15, I started to try to use higher resolution modes and had real challenges with drivers, and moved on to using Pascal and C. I bought a Borland C++ package, it was hundreds of dollars.
My point to all of that is that, in the end, those experiences meant very little to me now. They were indicative of the kind of person I am, and they are pretty cool to look back on and brag about, but in the end, they don't really make me better at any specific programming task. If I were to have not had the same resources to try to do those things, I would probably not be significantly better or worse. I would have spent my time trying to take apart electronics or learning a language or something instead, developed my problem solving skills and semantic skills in other areas. Maybe a little bit less experience, but in the end I think I would not be significantly impacted.
The reason that people might fear that starting late holds them back is because they might not be the kind of person who, even with access to the tools and resources, would be interested in taking things apart and finding out how they worked to start with.
If you can say at this point that you're interested in stuff like parsers and data structures, then that's awesome. If you're interested in it and you want to learn more, you will learn more, and you will succeed. If on the other hand you are uninterested but think that programming is a smart career path, you'll probably do poorly.
I'm guessing you would be around 28-30 years old, so I'm a couple of years or more older ... but I started learning C when I was 31, currently I'm interested in stuff like parsers and data structures (I really should look at sockets soon). Perhaps I'm just too old to hack.
> I wish I still had the code, it's sitting on my old computer at the Farm in New Zealand :<
I bet a fair few people on HN would be interested in it as well, it sounds quite hardcore.