I saw my first Unix prompt two years ago, nested inside of this editor called "Emacs." In my 23 years I had only programmed conditionals in Excel, and now I was responsible for using this system to maintain some of the most important econometric models in the world.
Fast forward to present day, where I'm writing linear classifiers in a Lisp dialect I had never seen before this weekend. I've previously built scrapers in Python, a website with Django, side projects with a bunch of technologies (R, JS, SQL, Redis, MongoDB, etc. etc.). I enjoyed working on all of these enough to start a graduate program in CS.
People start writing, running, painting, and working on other awesome trades at all ages. Coding shouldn't be any different. Click on pg's link to Codecademy, go check out MIT's introductory CS courses on OpenCourseware, and don't worry about how old you are!
I always chuckle when anyone says, "It's not too late to..."
It's never too late to do anything.
And it's never too late to get good at almost anything, especially programming.
My story:
Age 21 - graduated college
Age 23 - graduated graduate school
Age 24 - got my first job programming
Age 24 - touched my first computer (that's right)
Age 27 - touched my first personal computer
Age 30 - purchased and set up my first personal computer
Age 31 - wrote my first framework
Age 32 - did my first start-up
Age 36 - did my second start-up
Age 46 - build my first web page
Age 50? - wrote my millionth line of code
Age never - got as good as I wanted to be
Age always - loved it!
A few other thoughts about OP:
It’s easy to think that it’s too late, because look at those people who spent four years in college learning to code!
Don't look at anyone else. That's your problem. Just look at the problem at hand and your approach and solution. It's just you and your computer, mano-a-mano. Pretty primitive. That's when you stop worrying about the negatives and just go ahead and build something. And that's when you know nothing else really matters.
It is difficult!
Not really. Difficulty is relative. Start out by copying a "Hello World" program and getting it to run. Then add one new capability and get that to run. Then another. Then another. Always saving your last good version so that you can go back and start each step over, just in case you really fudge things up. Hey, you're programming! It wasn't that hard, was it?
I used to think I was cursed, because every time I tried to setup something new (new development environment, tool, library, etc), something would always go wrong.
There's a difference between systems administration (which all of this is) and programming. I hate the former (which I view as a necessary evil and takes 1% of my time) and love the latter (takes the other 99%).
Do you like it? ...do you feel a rush of excitement?
Yes! Nothing else I've ever done gives quite the same feeling as experiencing something I've built working for the first time ever. Happy dance!
Yup. It's only too late if you don't want to do it in the first place.
While I started programming at 13, I didn't become a pastor until age 40. I suppose I could have said that I was too old to add such a different activity to my life, but I wanted to do it and dove in with enthusiasm. Was it difficult? Yes thank you. It's a small congregation and I still have to work the day job as a programmer, but coming up on five years now and we are close to doubling the original size of the congregation (was just over twenty people). It's the best job I've ever had and my dream is to eventually go full time ... just gotta get Ramen sustainable!
I too chuckle when I hear "not too late...". Even more so when someone is in their 20's.
I began programming at age 36. Shortly after, having been so inspired by how exciting it was, I enrolled in a university. I am now just a few classes short of a Computer & Information Science degree. I will be 40 when I have an actual degree in my hand.
What I can contribute to others from my experience is that you will have greater determination, focus, and perseverance to learn something you really enjoy. This is especially true when you get older.
I don't believe I would have done as well or learned as much if I had pursued programming in my 20's. I wasn't as focused; I had far too many distractions.
My advice on getting started. Start at CS101. Learn the basics to a degree were it becomes second nature. Solve small problems, when you can do that easily solve larger ones. Don't cheat yourself; don't skim over bubble sort because it is boring, everything will teach you something. And most of all, enjoy yourself.
Not to argue with the sentiment -- you can and should always learn new things -- but I wonder... How true is it?
In linguistics, the conventional wisdom is that native-language acquisition is fundamentally different from non-. Anyone besides a small child will quite likely never develop native fluency in a new language, no matter how long they speak it.
I often feel that way about programming-- I started learning C at an incredibly young age, and while I sure wasn't very good at it, I do think it patterned my brain somehow.
I get the sense when I work with other developers, people who learned to code in their teens or twenties, that there's something different going on. They're fluent in the language, they probably know more about it than I do, but they're thinking differently. I'm certainly not a genius or a savant, I've never taken a programming class in my life that taught me something, and I don't brag about my code, but I often experience a near-effortless acquisition of new languages, styles, even paradigms that other, talented devs seem to struggle with. I'm sure there must be many other people out there who share this experience.
So this is just speculation, but is it possible there's some underlying aspect of code-thinking which, sadly, it is too late to learn?
I am not a linguist, but I have been working on learning Portuguese, and based on what I read the conventional wisdom among laymen is that native language acquisition is different for children, but the research actually shows the opposite. The only thing I've seen research suggest children are different at is accents. Furthermore, I think many of us know Americans who immigrated in their teens and have been here for a long time and really are indistinguishable from native speakers.
I also am highly skeptical of your claim you are more native in programming, but I started when I was in my early teens so I'm not sure I can comment.
I think your skill at learning languages rises when you are very young, and you face diminishing returns after that, so adults never get that much better at learning a language than when they were young. With other things you begin later in life, you start at the bottom of the learning curve and improve much more. So adults and kids are usually about as good at language learning, unlike most things, so people think kids are magically gifted at learning languages because they are about as good as adults. And of course, adults are actually much better because they already know all the real world concepts from their L1. I've also seen it asserted many times that children learn languages faster, and I've only seen research supporting the opposite, so I think your claim is just the programming version of that fallacy.
I'll believe you've seen people saying that kids learn languages faster, but I'm not :) There's a lot of research both ways, and second-language acquisition is very similar to first-, but there's definitely something different going on or we wouldn't have any idea how a baby can learn a language starting from knowing none.
There's also solid evidence that learning two or more languages as a child, while being slightly slower, sets you up better to learn more as an adult, as well as just making you a cooler person overall.
That aside, though, I share your skepticism. I was just relating my experience, and hoping maybe we could, you know, have a conversation about it :)
It takes longer, but if you stick with a new language full time eventually you start to think and dream in it. Also, don't adults can stay ahead of the language curve at the start, baby's often take 3 years to say the first few words but adults can become fairly fluent in 6 months. I suspect the real problem with leaning something latter in life is not that it takes slightly more time time, but you have less free time to learn.
I think you're mistaking "native fluency" for just fluency, which is probably my fault. Of course adults can become fluent in new languages relatively easily with full immersion, but the simplest things for native speakers can be the hardest to acquire. For example, before a baby can talk, they will babble in the intonation of their native language-- it's the first thing they learn. It's also the last thing a non-native speaker picks up, happening well after they've acquired full fluency, or indeed never in many cases.
Now it may be that's more about our techniques for second-language acquisition than brain structure differences, but it's sure interesting, innit?
I didn't start really learning to program in earnest until I was 31. I got my first internship the month before I turned 32, and was hired as a full-time programmer 6 weeks ago making nearly double what I had been making in PR (not to mention actually enjoying my work).
No I have no degree but am in school for CS. I had met the hiring manager a few times at the local Python meetup and given a couple of small talks on Python tools like Fabric. He gave me a shot via internship based on that and the relative strength of my github repo.
That, and there's a serious shortage of programmers around here.
I would add to the ad(d)s here ;-) , become a mentee to || code with other good programmers. Preferably ones with humility / kindness as much as skill. Changes your life. Its like guitar.. you've got to find mates to jam with.
And read lots of different code from low-level to SICP.. from early 80s to the present day. Get ( legit ) access to closed, commercial code as well.
Also, its really weird, but learning in these sorts is rather non-linear.. you will feel like there is no hope for 10 months, then the 11th month comes and suddenly you are freaked out about what you can do.
That first line ("Coding is sort of like a superpower; with it you can create things that millions of people see.") exactly nails it for me. That's what made me switch about fifteen years ago: I was a geographer (of all things :) with a Master's degree and I was working for a research company.
And then I met the internet and instantly knew that I wanted to be building stuff there. So at the tender age of thirty I did my first little scripts. Today I like to think am a pretty seasoned web developer with lots of projects under my belt. I could never ever beat the hardcore coders at the company I work for (I'll always be the allrounder) but I have not regretted learning code for one day. To be able to make something out of almost nothing and publish it all by yourself is simply wonderful.
I have always struggled with coding even though my University major was CS.
I feel like I'm missing so many basics, like a major 'a-ha' moment. I've done the codecademy & codeschool tuts, the MIT and Stanford online courseware and built a few bits and pieces.
When I build things I just sort of hack it together from whatever resources I have available. I've got no idea of how to build robust systems from scratch.
I still don't feel even remotely capable. I think spending time with established (and patient) coders would be really useful.
Even just videos of folks explaining what working environment they have set up for themselves, some good practices and how they leave projects ready to work on again would explain so much.
I want to balance the enjoyment to frustration ratio out a bit more! :)
It feels like the bits in portal where you find a crack in the shiny polished walls & go exploring in the grungy maintenance areas outside.
There isn't anyone guiding your hand anymore (for good or ill).
If your program doesn't work (or you can't even install the programming language to begin with) you are often left with arcane, generalised instructions or nothing at all. There's no button you can click that will fix buggy program logic & sort out your unique mess of dependancies.
You need to be able to thrive outside the comfy embrace of the user ecosystem, & it can be scary out there ;)
I think what bogs down many non-coding people is getting stuck on a problem for perhaps tens of hours before figuring out a solution does not appear to be worth it in today's age of instant gratification (especially if you're in a time limited situation, where you only have 2-4 hours of "free" time each day.
That does make sense but doesn't solve the problem. Why don't they learn to code is not that it will take them long to learn. But what boggles them down is the fact that it will take them long before they can reach where they anticipate to.
If only one could sell them the joy of coding.
Of course they are forgetting that it's fun right from step 1. (Read: The Joy of Building)
Learning to code is like learning to write. You can do without it but learning it opens a new world for you. Time to write "Ruby / C / XYZ for babies".
At 32 I took CS101 at a local university, never had the money to go before so my first time in Uni, first formal programming training and felt like I was 1,000 years older than my classmates.
I had to drop out do to work problems (laid off), money problems and just the level of stress from the social part of it. Each day I was soaked when I left class I was so nervous just being in that environment I felt like I had just run marathon.
Probably at least twice per week I was in the professor's office getting help. Years later I learned most people in class just copied samples off the Web, some assignments I handed in practically blank after being up until 4am trying to figure it out then have to go to work at 7am.
My mark was 60% for the first part of semester that I completed.
I haven't touched Java since then but I did like it maybe a different environment would have been better.
All very encouraging, good comments, but I disagree.
Its easy to 'code', harder to design, debug, structure, deconstruct, architect.
So sure, code away, make that webpage or service. But you know who's creating the ecosystem you're 'coding' in? Somebody that started as a kid, dedicated their life to computers and software, lives and breathes multiprocess automata or whatever.
So everybody is right, sure, and there's lots of money to be made in coding so don't be afraid to jump right in. But like athletics or physics or whatever, either be a savant or study all your life, but don't fool yourself.
Don't fool yourself about what? That it's never too late to learn to program? I don't really understand the significance of who created the "ecosystem" I program in. What's an ecosystem, to you? Why does it matter who created it?
I don't get your point but it sounds vaguely insulting.
I find it explicitely insulting to claim 'programming isn't all that hard; anybody can do it'.
Its Pollyanna to say "you can be a programmer! Anybody can!" without explaining the layers of the onion. You can be a (passable) applications programmer with a little effort. The rest takes sweat and study, sometimes years of it.
Two outstanding books that will help anyone get started regardless of whether they have any coding background are Learn Python the Hard Way by Zed Shaw, and Land of Lisp by Conrad Barski.
I've always admired people who started late in life and went on to succeed more than child prodigies. I guess this is a biased opinion as I never truly fell in love with programming until my last year in college. Now I'm trying to make up for time lost (slacked my way to a diploma) by having a study and coding regimen outside of work, taking online and offline classes. I'm also testing the theory that a skill can be learned and mastered with enough discipline and correct feedback by taking up piano (never touched an instrument before in my life) and art. Hmmmm... sounds like a good idea for a blog...
I've been a front-end developer for many years now and lately I've been considering learning a programming language. I learned html/css first and focused more on learning design softwares to improve my designs.
But the problem now is when I have an idea for an app, I can't develop it since I don't know any back-end language. I have developers I work with but they don't have the time to develop my little ideas. My JS is also weak. I'm 23, I don't think I'm too old to learn but it would have been easier a few years ago.
I think the problem for most people (including me) is constantly thinking of how long it would take to reach mastery.
I first started learning programming with java/android 2 years ago. It took full 1 yr (3 hrs per day, since i also had a full time job) for me to understand the IDE, Object model and of course the android framework.
After the initial brush up with a language your coding potential will be increased exponentially. I build a iOS app, XNA game within next 1 year, and Currently in the process of creating a web application on rails.
Great post. I started at 28. Wrote my first DB driven site at 29. Now 30. With 9 out of 10 ideas that come to my head, my first question is no longer "Who will build it for me?", but "How long will it take me to do it". The last idea is something I just know I won't be able to code.
I think most of the anxiety comes from expecting the results very fast. In this fast pace lifestyle, reaching a goal, like learning a programming language is not a craftsmanship challenge but a huge motivational and focusing challenge.
As good as it is to learn to code, much as is the case with any situation where you'd normally hire a professional (doctor, lawyer, accountant) don't kid yourself that you know everything once you can sling some code.
A good example would be how terrible the code the Google Founders wrote. Their initial engineering hires had to rewrite everything from scratch.
And the Google Founders did have a background that would lend well to coding.
Fast forward to present day, where I'm writing linear classifiers in a Lisp dialect I had never seen before this weekend. I've previously built scrapers in Python, a website with Django, side projects with a bunch of technologies (R, JS, SQL, Redis, MongoDB, etc. etc.). I enjoyed working on all of these enough to start a graduate program in CS.
People start writing, running, painting, and working on other awesome trades at all ages. Coding shouldn't be any different. Click on pg's link to Codecademy, go check out MIT's introductory CS courses on OpenCourseware, and don't worry about how old you are!