I want to join an ambitious startup as a programmer.
No you don't. This may be what you think you want, but it's not what you really want.
Why do you want to join an ambitious startup rather than creating your own?
Why does the startup you join need to be ambitious?
Why does it need to be a startup?
For that matter, why do you want to join as a programmer rather than, say, a graphic designer?
If the answer to the above questions is "because this is a route to making lots of money", then what you want is to make lots of money -- and you happen to have identified "joining an ambitious startup as a programmer" as a way to pursue that goal. Similarly, your goal might be "to change the lives of millions of users", "to become a world-famous hacker", or "to work with a bunch of really cool people".
But whatever you want... well, it's almost certainly not "joining an ambitious startup as a programmer".
--------
Now that I've finished ranting about desires vs. routes towards satisfying those desires: The above is actually relevant to your question. The skills looked for vary dramatically from startup to startup -- a startup which is likely to make you a millionaire isn't necessarily going to be looking for the same skills as a startup which is full of really cool people. Once you've identified what you find attractive about startups, then you can start thinking about which startups currently exhibit those traits, and what skills they look for.
Good point. I suppose to elaborate, I want to become a skilled hacker and I want to push myself in a project that I care about with people who are passionate about what they do. :)
Then you will gather those skills based on what's interesting to you, not based on what's marketable to a startup.
I have never gone out of my way to learn a computing skill specifically for a job (or even for a "dream"). All was always out of personal interest. By that method, I have accumulated a skill set (including Ruby/Rails programming) that has allowed me to start my startups when the opportunity was there.
You should be wary of even being a programmer if your primary driver to learn new things is what might be useful to your career. All good programmers I know and know of would be learning and applying their programming skills whether or not there was money involved.
I agree with you, but I don't think it invalidates the OP's question. There are dozens of topics in computing I could learn right now that I would be interested in, and I think pretty much every HN reader could say the same. If some of those would help their career and others wouldn't, I don't think it would be fair to blame them for learning the one that would help their career.
I'm sure if Paul Graham had asked an equivalent of this community what he should learn to increase his market value, "Lisp" wouldn't have been the answer. At the time, probably C++ or Perl. Yet he used his knowledge of Lisp to gain a competitive advantage for his company, and it ended up making him rich. C++ and Perl may have helped him too, but that's actually less likely, since they wouldn't have given his company its competitive advantage of nimbleness and rapid changes.
You can't know in advance what will be worth learning. Except, you can: if you want to learn it, if you have a desire to understand how it works, and if that desire is storng enough to spur you to learning it, it's worth learning.
I'd add an extra indicator actually: if everyone tells you it's worth learning, chances are it's not. If everyone tells you it's a waste of time, chances are it's worth learning. Why? Because people in aggregate will point you towards popular options (duh) - and those will probably give you less of an edge. This makes the OP's question even less valid.
No you don't. This may be what you think you want, but it's not what you really want.
Why do you want to join an ambitious startup rather than creating your own?
Why does the startup you join need to be ambitious?
Why does it need to be a startup?
For that matter, why do you want to join as a programmer rather than, say, a graphic designer?
If the answer to the above questions is "because this is a route to making lots of money", then what you want is to make lots of money -- and you happen to have identified "joining an ambitious startup as a programmer" as a way to pursue that goal. Similarly, your goal might be "to change the lives of millions of users", "to become a world-famous hacker", or "to work with a bunch of really cool people".
But whatever you want... well, it's almost certainly not "joining an ambitious startup as a programmer".
--------
Now that I've finished ranting about desires vs. routes towards satisfying those desires: The above is actually relevant to your question. The skills looked for vary dramatically from startup to startup -- a startup which is likely to make you a millionaire isn't necessarily going to be looking for the same skills as a startup which is full of really cool people. Once you've identified what you find attractive about startups, then you can start thinking about which startups currently exhibit those traits, and what skills they look for.