I have a different point to make.
There will always be someone smarter than you. Someone who started younger, learned faster, accomplished more. They're smarter than you are now, and they'll probably always be smarter than you.
Just get used to that as quickly as possible and move on with your life.
Now, in fact it is easy to be the world-champion of something if you qualify it enough. (I probably still hold the world record for building an efficient triangular planar semiconductor ring laser, for example. Nobody cares. Least of all me.) If you insist on occupying the top of some hill on this earth, you can always find a way to build that hill. The easiest way is to build it in your own mind. Don't laugh: People find genuine, lifetime happiness by doing that.
And it is true that genius is ill-defined, and that if you define it by a specific criterion, and then win that criterion, many people still won't accept that you're the biggest genius, because, hey, it's only chess. Or Jeopardy. Or music. Or literature. Or astrophysics.
And it is probably true that, even if you could become the biggest genius in history, no contest, you've won, you're the proverbial Einstein… you'd find it to be a big letdown. You'd feel just as confused as ever. You'd just be confused about harder problems. And meanwhile you'd find yourself surrounded by people who do not understand the most basic and obvious things.
But, no, these weak forms of my argument will not make you strong enough. I want to make you very strong, so I want you to visualize the person who is better than you in every way, and also twelve years old. And then I want you to get used to the existence of this person. And get on with your life.
Because other people's genius is not a problem. (Indeed, it's often really handy: Geniuses and prodigies can be good people to know. They do strange and wonderful things. It is fun to be their fan. It can be really fun to be on their team. This is a big reason why I live near MIT.)
If someone else's genius is a problem, it is probably not your problem.
---
When I was eighteen I was a fairly good math student. I enjoyed high-school math competitions, like the AHSME. I did pretty well. One year, based on my statewide ranking on the AHSME, I got invited to join a team of the top math students from my state to compete against an all-state team from another state.
This was one of the most valuable experiences of my life and I heartily endorse it. Because here's what happened: I got my ass handed to me. My teammates were freakishly smart. It turns out that the distribution of math-contest talent is not at all normal, and that being in the top 1% of contest-takers doesn't mean that you're within hailing distance of the top 0.5%. Oh, no.
As I remember it, one of the people on the trip wasn't an official member of our team. He was too young to compete, but was tagging along for fun. I think he might have been twelve. He was a better contest-problem mathematician at twelve than I've ever been in my life, that's for sure.
So what happened? As I remember, I had fun at the competition. I spent the time doing what amounted to janitorial work for the power-solvers at the head of our team: Filling in obvious missing steps, sharpening pencils, whatever. I don't remember. What I remember is that I got to hang around people who really liked math. And then I went home and kept on liking math, but stopped worrying about whether or not I was going to be the second coming of Galois, because I obviously was not.
I have found this attitude helpful, because if I were all hung up on the fact that I'm older, slower, and stupider than many of the folks I hang around with, my ego wouldn't last five minutes around here:
http://news.ycombinator.com/item?id=35079
(HN veterans will have figured out, ten paragraphs ago, that this whole essay is basically an excuse to revisit that link from the old days. ;)
If you define your self-worth in comparison to other people, you're building your house on sand.
As a similar example, when I was younger I used to cycle a lot. I would go out 4-5 times a week and would cycle as far as I could and as hard as I could. I got to the point where it became frustrating to cycle with any of the people I knew because I was so much faster that I could not get a reasonable workout if I went at their speed.
So I figured it was time to take the next step, so I signed up for the youth category of a regional cycle race to see how I would fare there. I remember seeing my competition, who were kids about my age but they had turned up with dedicated vans (embossed with sponsorship logos), support crews, carbon fibre bikes and personal trainers, the works. Many of them were actually the sons of pro cyclists.
So I line up at the start and when the gun goes off everyone plows forward, I manage to keep up for a while by working hard and feel pretty good about it. Though after a while it becomes obvious that they were really only just warming up and one by one they start to drop me until I'm stuck right at the back of the race.
This put me off cycling for quite a while, because it seemed like the choice was simply between dominating everyone or losing.
I sometimes think programming and computer stuff can be similar, everyone knows a kid who is a "computer genius" but in reality that can mean anything from knowing how to re-install Windows and fix basic computer problems to someone who hacks on the Linux kernel for fun.
Better yet: smile and be hopeful because of the existence of such a person.
I would go even further. Even though you state that for any person member of humans, there exists someone smarter than person, sometimes you slip into writing as if there is a linear ordering.
The geniuses and prodigies, sure if you project unto one dimension you can find a few people who dominate. Maybe you can find a few such dimensions. But there are vastly more dimensions where they would rank poorly than not. So instead of looking at it down the narrow lens of any one subject, it is best to focus on creating a uniquely useful combination of skills that you dominate on.
And then, why focus on intelligence or comparisons or domination at all? Focusing on things like that can be detrimental. Treadmill wise and also, especially to creating. Ranging from "I know I am super smart enough to do that so why bother?" to "I am not super smart so that is out of my league." Better to focus on results and ideas. You want to do something? Try it or don't. Sometimes being confused can be useful. Creatively speaking.
And then take a step back. It is possible that as you say, the distribution is no longer normal at tail but the range on humans is still a tiny pinpoint. We got things that are vastly dumber than us and it is very certainly possible for an intelligence to dominate us in orders of magnitude.
Why focus on such small change?
I have thought long on this in trying to combat feelings of worthlessness compared to how very much less I have accomplished than my father did at my age. He was one of those genius type people. =(
Part of that is just to make it flow better: The art of explanation is to choose one clear line of pursuit and gloss over the complications. But I think there's a more important reason: The real world is multidimensional, but feelings of inadequacy are not. When I'm feeling good about myself I can recognize that there is no one true scale on which two people can be compared. But when I'm depressed and I think about smart people I just see a bunch of folks who are "more talented".
Depression messes with one's mind, to snap oneself out of it is not always possible (save your life, see a counselor) and when it's possible the mental trick that is required is different for everyone. The "by which arbitrary yardstick?" gambit is one such trick. My essay above is an expression of a different gambit.
(In other words, my rhetorical characterization of the various arguments as "weak" and "strong" versions of a single argument is also a false linear ordering. ;) Oh, the things we do for rhetoric.)
That aside, I didn't even go to college until I was 26 and it was for Biochemistry. That was too hard for my weak little brain, so I switched to CS (which wasn't much easier tbh, but it was a bit, for me at least).
I graduated when I was nearing 31, and at that point had only been programming seriously (internship) for a year.
I'm not that great still, but only been out of college since early 2009, but at least posts like this give me hope that I can be more than passable.
And--top secret--a lot of really great people secretly think that they are not as great as others. So you might have a spectacular team on which each person secretly thinks the rest are smarter or more naturally talented.
I'd like to return to study computer science some day, and in the meantime I'm just doing the best I can to learn on my own.
http://federalreserve.gov/careers/ra.htm
For me it was a great way to parlay my economics training into a programming career, even though that wasn't what I was interested in at the time. It's also a great career stepping stone if you're interested in graduate education (not necessarily econ), government work, policy work, law, or myriad other fields. If you want more info, let me know and we can talk offline.
Before I went to college, I thought my programming skill was high enough to get me a good job. I was just going for that piece of paper, the degree.
Two and a half years later I dropped out. I looked back on my 18-year-old self and realized what a terrible programmer I had been. But now I was ready. Some courses and a bunch of awesome internships had prepared me.
A year or so later, I got a job offer at an NYC startup. Looking back on my pride-filled self at that time, I now realize what a terrible programmer I had been.
I'm still at that startup, and it still kicks my ass from time to time. After 11 years of programming, it's still hard to believe there's a cap on knowledge. There's definitely not a cap on experience
See also: John Carmack's recent QuakeCon speech where he talks about basically the same thing in the context of looking back at the Doom3 era id code compared to the Rage era code.
I'm 24 now and work at a startup, I had a similar experience to yours, except I dropped out my first quarter of school.
I've changed a lot since 18, I can say that much.
I honestly believe that if you took someone totally naive to programming and put them through an intensive CS + programming apprenticeship, they'd be a better programmer than me in 1 or 2 years easily.
I think that the most valuable thing I have is that I'm enthusiastic about programming. These guys could do what I do, but they wouldn't want to make a career out of it.
I would venture to add that probably, age has some influence in that the age edges (very young/old) are less effective towards that goal than your prime work age, simply because when you're young, you likely lack guidance and foundation/education and when you're old, you learn more slowly.
Still, 5 years is not all that much. 5 years can easily be done in university and at your first job. Crucially, this is where a mentor can really make a difference, which is usually unavailable earlier.
Hence, I agree that starting at 18 is not a problem. I myself did not start earliear either. But you will have to put in your 10000 hours one way or another.
[1] http://www.psy.fsu.edu/faculty/ericsson/ericsson.exp.perf.ht...
I started "programming" at 10, didn't do anything useful until 16-17. I didn't program for real until I was 25, and it wasn't until I was past 30 that I felt like a proper programmer.
Reading about all the 18- or 19-year-olds forming million-dollar startups really does make me feel like an underachiever sometimes.
That wasn't my experience. I learned to code at about 12, but it took over my life. I don't think I talked to a single girl between the ages of 12 and 19, never mind went to parties (didn't help that I went to an all-boys school). I programmed so much I failed my final school exams and couldn't get into a college course; I had to repeat the final year, and I still could only scrape enough marks in subjects like English and French to study at a very humble college, my 20th choice of a ranked list of 20 (this relates to how the college admission system works in Ireland).
And then, I hardly learned anything in college. I knew more than most of my lecturers. I did, however, party as much as I reasonably could in the first two years. But I wouldn't have gotten a job working on the Delphi compiler without my degree; I needed it to qualify for a visa, as Borland wanted their hire to be on-site in CA. But as it turned out I was able to work remotely.
I guess what I'm getting at is that there are more important things than programming at a young age, and getting really deep into it very early is not necessarily a great thing. I certainly don't think it's a life experience to be particularly jealous of.
You are very unlikely to be the second coming of John Carmack, but you can still have a plenty good life. Welcome aboard, start your learning curve, and keep it going.
There is only one big tip that I have. A level people like to hang out with A level people while B level people like to hang out with C level people. The difference? B level people want to be the smartest person around and stop learning. A level people don't care about the label and want to be around other smart people.
A level types really only like to hang around A level types. Being a B or C player in a room full of high achievers can at times be downright (if not outright) unpleasant.
If I had my druthers, I'd choose to be the 2nd dumbest person in a given room. Being an order of magnitude or two behind the mean is more demotivating than educational.
If I stop using a language for a while, I have to relearn it. The term language is very appropriate - learning and retaining a programming language acts very much like learning and retaining a human language.
My take-homes about "when to learn programming" are:
* If you have kids, expose them to "Hello World" programming early. By which I mean, once they start reading. The cognitive benefits of multilingualism are greatest at early ages when neuroplasticity is high. There are numerous languages and projects which are suited to this. Lego robots should probably feature prominently once they're of an age to not eat the pieces.
* You're never too old to learn programming. The biggest jump in capability by far is between non-programmer and someone who has been at it seriously for a few weeks or months.
* At the same time, start learning programming as early as possible. Learning to be a great programmer takes a lifetime. But very little of that is learning syntax! Great programming takes marketing, art, math, psychology, and whatever else you can cram in. Pretty much any field of human endeavor has something to contribute. "What to program" is far harder to learn than "how to program" - and people who start learning programming later in life will have a lot more to draw on here than some 12 year-old.
I know plenty of programmers who are far better than me and have been doing it for a fifth of the time. It's a bit like art in that way. There's a lot you can learn over time and become "wise" about, but in terms of raw output, time isn't as relevant.
http://norvig.com/21-days.html
Most of us old timers (> 21) probably didn't start programming because of TechCrunch hype or even on Web development anyway. Too much emphasis occurs on Web development (oh snap, I said it).
Keep at it but as unpopular opinion as it is, programming is a long slog, not just the product of fliiping out a few RoR projects or going through a couple cool tutorials on Javascript with fancy interfaces (not saying this applies to, just a general comment).
As for whether you wait too long, probably not, but you're only 2 months into this deal, the jury is still out. :) Anyway, there's people in the Valley that would probably say you are toward the end of your career, 25 being basically providing two options, either become a well known, famous guru or straight to the glue factory .
I don't really buy that, but that view is probably more common than mine.
What's "worse" is that my father is a computer scientist (who was involved in the industry since the 70s) tried to teach me since I was 6 but I was not interested.
My brother was interested and became a very distinguished developer in his own right (working as a developer since he was 12).
The feeling of 'missing out' / 'starting too late' seems to be ageless. I have experienced it many times through many years and it always prevented me from pursuing my passions.
Some might find it funny that a 18 year old will feel that way but I remember feeling the same thing.
By chance however, I stumbled into programming again but this time it caught me. I was finally enticed enough by it's complexity, its interesting problems to solve and the creative outlet it give me to overcome the debilitation of my fears and 'regrets'.
What I found was that if you love doing something, if you enjoy the learning and the rewards that come with it - you stop worrying about where you are in the great scheme of things.
Perhaps it's my age finally telling me that time is not what's has past or how much you still have left but how you are using it now. Use it to enrich yourself and enjoy it as you see fit.
We are wired to compare ourselves with others. But these days we don't need to be the best hunters to survive and flourish, to get the girl and live happily. We just need to find what makes us happy and enjoy doing it. Doing that will just naturally make us the best we can be.
IMHO
For a long time I considered myself ahead of the curve, for browsing sites like HN, absorbing information from the internet. It was about a year ago I finally realized it doesn't matter if I haven't actually done anything. "Sponge learning" only gave breadth, but no deep knowledge was achieved. I couldn't DO anything.
Nowadays I still think I'm behind my peers. Maybe not behind the average, but it's never the average we strive for. I still feel inadequate and, most likely, will never get rid of that feeling. I concentrate on doing what I can with what I have, getting better and trying not to compare myself too much.
I started out trying to make robots but the mental and physical costs were too high. My father works with furniture but even with his resources and expertise building anything all that interesting took more skill than I cared to learn. Programming let me do cool things within a couple of hours of starting out. I still feel like I took the "easy" way out compared to a physical craft like woodworking or electrical engineering, and I'd like to learn more about those at some point. For now, programming will have to do.
EDIT: spacing.
What is complicated, is the analytical mindset that makes a good programmer. I believe that the better programmers just have this mindset and it is what makes them good at what they do. Coupled with a passion for the technology they are using, this will make them better at what they are doing regardless if they have 2 months behind them, or 20 years behind them - and also regardless of the age they start at.
But while having a lot of raw experience under your belt makes writing of actual code much faster, I think the real benefit is that it frees up your working memory and problem-solving capacity for the more important problems of software engineering: mitigating complexity, predicting long-range interactions, and keeping the design supple.
I started as an adult student, ~25, struggling to play Twinkle Twinkle Little Star. I mean... really struggling. I didn't have any musical education prior to deciding to learn. Playing "Hot Cross Buns" on the recorder in 4th grade was the extent of my experience.
And I went to my first recital, surrounded by midget 12 year olds who had been playing for 5 years, and me sounding terrible.
And then I understood.
The race is with yourself, not with others. I'm as good as I am due to the work I've put in, but not yet as good as I can be. And this applies equally on all my endeavors (as well as it applies to those 12 year olds), it was just most apparent when I first started studying music.
It's very humbling to be schooled by a 12 year old. It takes a lot of restraint to take that extra step and be able to learn from them. Just last week I had a guitar lesson from a 16 year old. Half my age, but with twice my experience playing guitar. And I set aside my ego and I learned what I could, and I've set aside my XBox and am putting in the time to practice what he's suggesting for me to learn.
If you haven't tried learning an instrument it's a rewarding challenge and there's a lot you can learn that you can apply to other areas of your life.
... Wait for it... . SO WHAT!
Seriously, the thing I love the most about our choice of career is that if you want to be good at it you will be learning for the rest of your life.
I wrote a system last year that processes 3.2 Billion queries a day at peaks of 45k/second and all under 4ms response time. Very little of what I learned in high school about z80 assembly language had much to do with this project. Most of it was exposure to all the things I've worked with for 30 years and some of it was stuff I learned six months ago.
The "learned six months ago" is the part to pay attention to. If you enjoy the challenges placed in front of you and you enjoy learning this is one of the best businesses you can be in. If you want to park yourself at a desk and do minimal work and/or new learning then try a different field. There are plenty of fields you can master quickly and not have to learn much for the next 20 years.
When you start is not as important as your passion and dedication. My father and I were talking the other day and he told me how he was so impressed with how smart I am (this coming from my dad who at 71 learned to write in Php lol). I told him I'm actually pretty average, the difference is persistance. I recently heard a claim that Albert Einstein said "It's not that I'm so smart, it's just that I stay with problems longer.." I'm not sure if he said it or not but it is exactly how I feel. It's not about what year you started to program, it's about staying with problems longer and working them out and learning along the way.
Enjoy the ride.. I know I have and it's just barely started.. ;-)
Fortunately, I picked a hobby that really accommodates self-learning and did as much coding as I could on top of school. Now I'm picking up web programming, looking into using Django and building my own site. What programming really brought to me was a new sense of mastery that originated with personal interest and drive. I think this feeling is what the latter part of the blog started to get at. It overrides any insecurity against geniuses or whatever because you'll be too proud of putting in your own work and too proud of your progress to worry.
I still feel a bit like I missed out in college because it seemed like everyone else around me had been programming since they were 12 (or younger) and things just moved at a faster pace than almost any other part of academia.
The above is the general case, I think, for learning to code. If you're good at chess, sports, whatever, and you're lucky, you'll get help that works as an 'external learning curve velocity enhancer'. The same thing would account for young programmers with proper guidance, but the matter of fact is: most of us didn't have that (I even didn't have internet, I had to get books from the library and cherished a floppy disk containing a plethora of technical game programming articles).
I also see this in a different field I'm active in, as a volunteer at the local life saving / swimming club. Those that start at 6 take like 8-10 years to learn most of the material. Those that come in at 16 or 18 can catch up in a year or two, whilst well motivated.
"I’m 18 years old. I started to really buckle down and learn programming 2 months ago. I feel I missed a huge opportunity because I didn’t start learning earlier in life. I was raised in a city that is far from all the start-up hype. None of my peers are even remotely interested in web-developing. And it’s not because I’ve been hanging with the wrong group either."
The presumption here is that the 12 year-olds who did learn web development were either new a startup hub city, or had friends who were also interested.
Speaking in my case, that wasn't true. I started learning an actual programming language at 13 with Visual Basic as a freshman in High School. In Connecticut. But before that it was HTML and CSS. The barrier for actually learning web development is incredibly low; just view:source.
My point is, there's nothing stopping any 12 year old from learning the languages of the web; not time, not location, not friends. Only interest.
Much like anything the longer you've been doing it, the better you get. When you're a programmer it's possible to have been doing it for a long time but fail to stay up-to-date on various techniques and languages that could save time. I've seen many a developer considered to be way above senior struggle to adapt, so I am a firm believer for some people the very fact you've been programming for 20 years longer than someone else is irrelevant in this changing landscape.
Give it a couple of years and you'll most likely know things more knowledgeable developers don't know or vice-versa. Just keep at it.
As for passion, sure, if you care about something, you can start at any age. But no matter when you start, you have to work your way up through internships and freelance work before you can create any semblance of a career. All of this takes time, and the sooner you get it out of the way, the more time you have to actually program for a living. Starting earlier gives you a significantly better shot at becoming successful.
Last week I landed my first real software development position, one of many I was accepted for, all really awesome startups.
I also have friends who have been programming game engines for six years and are working at Pop-Eyes. Confidence is the largest hurdle to overcome, in my opinion. One day it just suddenly clicked for me, that I actually COULD do this professionally instead of just working on hobby side projects.
As long as you have passion and confidence, you’ll be fine ^^.
Of course I realize there are still mountains of experience I need and so many devs out there- just don't get stuck in that mentality. Use it to power your thirst for more, and not waddle behind.
I'm finishing up the last week of my dream internship at Big Tech, and the swatches of people are incredible. I've met people who were literally programming in middle school (and can't handle dealing with HashMaps) and people who graduated with a PhD in linguistics with no formal CS education (who are much, much, much more talented programmers than I think I'll ever be.)
I think I've learned most that programming is a meritocracy. If you try hard -- and really throw yourself at the mercy of the command line -- you'll do great. You are the only thing keeping you from your own success; it's incredibly frightening, but also the best feeling in the world.
Anyway, this article is exactly how I feel. I could have started much earlier and I probably would have been much more advanced than I am now. The fact is, I wasn't passionate back then, and now I am.
I don't know what it was - I was always surrounded by the Internet and always fascinated by the Internet, but I never breached that gap. I guess my attention span was too short.
But honestly it's a lot easier to learn now. You don't have to go read tons of stuff to get started, with the likes of Codecademy you can start programming immediately and learn by doing with a little bit of structure. That's been all the difference for me.
Best of luck to the OP.
Now as an eighteen year-old, programming is what I do for a living, and I love it! Instead of working at restaurants for ten dollars an hour like my friends, I make thirty-six an hour with just under a year of experience.
I love my job.
programming is just a way of expressing a sort of creativity, nothing less, nothing more. if you don't start piano, painting, whatever, at 12, you think you're useless?
That's a pretty terrible mindset ;)
- Richard Feynman
i had people studying computer science in the university that had never seen a computer from the inside. do i like it? no. does it matter? no.
i'll crosspost from another hackernews thread:
“Nothing is withheld from us what we have conceived to do.”
the real question is do we have to blog about everytime we decide to go the toilet? well, i don't think. but people obviously disagree. hence the twitter popularity
Here's the perspective at more than twice your age: Success isn't going to be determined by when you started learning something, but by whether you learned it once you realized you needed it.
There is no school in the country that is going to teach a course in your business, because every business is different.
Success comes to those who work hard and improve and will teach themselves whatever they need to learn.
If your interest in entrepreneurship means a string of 120 failed lemonade stands, then you're already well ahead of nearly every biz school graduate in the country.
If it has meant sitting on your butt wishing you were rich since you were 12, then nothings going to happen until you change.
Learn programming- its valuable. More valuable is learning to teach yourself what you need to do what you want to do.
That's the key to success.