I've heard that the options pool is usually about 20% of the company, the first hire gets about 2.5%, and then it decreases exponentially from there. So the second hire might get 1.5%, the third 1%, the tenth about 0.2%, the 20th 0.01% (perhaps a bit higher; it seemed low to me too, which is why I didn't take the job), and on down. If you gave 2% to each of the first 10 employees, the options pool would be exhausted right there.
Of course, the company is hopefully growing all this time. But if you're employee #20 or even #10 and the company is profitable, they may be heading for a liquidity event soon, in which case there's not much time for growth.
My current situation - no equity at all - is atypical, because it's a bootstrapped startup and the founder really wants to maintain control. IMHO it's probably a mistake - I know I'd work a whole lot harder if I had equity. But I get a decent salary, and it's really the founder's call...
[pg: Anyway, why is it that you can't correct your mistakes/change your mind when voting? I think reddit's way of marking your current vote with colored arrows, which you can click again if you change your mind, is better (you may prefer to use shades of grey, or the YComb orange color for the 'chosen' arrow.)]
The 20% set aside is usually reserved for "key hires" which is assumed to mean a flotilla of VP level people. If you follow the standard Silicon Valley VC-backed startup script, this means the VP of Product, the VP of Product management, the VP of Operations, and so forth. After the A round, engineers are usually looking at an equity maximum of 0.25-0.5%.
"be aware that founders get rich, late-stage employees get paid, and early-stage employees get screwed" is a great maxim. Unless your company is truly on track for a $1B acquisition or IPO, you are not going to be able to buy a house with an early-stage engineer's equity.
Of course, employees #1 and #2 wrote the cool algorithm in Python, hired some other people to do the boring stuff, then let those people argue about Java on message forums while they argue about who gets the "California King" sized bed in the jumbo-jet. ;-)
Why? I'd rather be the Python guy in that scenario :-)
Early employees should get the highest bit, and it should drop off sharply after. Depending on the size of the company, you should look for 1-3% if you're under 10, vested over 1-2 years. That's assuming the company is small and plans to exit within a year or two.
A lot of people will probably say 1-3% is a huge amount of equity, even for an employee #10, but I've seen what happens when you don't give good equity to the earliest employees. I'm the type of person who would rather give more equity in order to keep people pretty focused. It probably depends on your opportunity costs, your experience, and how replaceable you are.
I've been in startups where the equity was really low, and the employees will figure out they're being exploited. The rest is history.
Overall, I would do it over again but probably will not remain with them for much longer, if that makes any sense. Some observations:
The language choice will grate on you after a while. I dunno what the background of posters saying "Be professional. Suck it up." is, but I actually liked Java coding when I started, and have since learned to hate it. If you're going in with a strong aversion to Java & C++ already, it'll probably only get worse.
Flip side is that you do get better at these languages after you work with them a while, as long as you keep an open mind. There are tricks and tools in C++ to help you manage memory - you shouldn't be tracing pointers from new to delete. And Java's verbosity isn't as bad once you get used it and consider "for(int i = 0; i < array.length; ++i)...." to be a single map function that just has a really long name. ;-)
One question to ask that'll help you determine if the language will end up becoming a total drag: are they using it because the problem fits the language's strengths, or are they using it because they don't know any better and aren't comfortable with multi-language solutions? Every mainstream language is good for something. In my case, I was perfectly happy as long as I was writing IDE plugins and server software in Java, and then became very unhappy once I had to write a webapp. (IMNSHO, Java is irredeemably broken for webapps; the only sane way to do them is to strip out all the JavaEE bullshit and program on bare servlets, but then you get something that's nowhere near as nice as Python/PHP/Perl.)
There are plenty of things beyond programming that you learn from working in a successful (profitable) startup. OTOH, it's not rocket science. Basically, you can boil it all down to: 1.) Make something people want, 2.) Charge more for it than it costs you, and 3.) Fix problems now rather than later. Every failed startup I've been involved with has neglected at least one of these: every successful startup has done all three.
I dunno what you expect financially out of this, but be aware that founders get rich, late-stage employees get paid, and early-stage employees get screwed. At least in proportion to the amount of effort they put in. One startup I worked in went bust, taking my 0.1% of stock options with it. One that I interviewed at offered me about 0.01% of the company; I did the math, and calculated that at their expected $40M exit, I would get a whole $4000. I have no equity at my current employer. My cubemate was an early employee at CCBN, which was sold to Thomson for about $40M. He got $3K or so. I have another friend who was employee #35 at Stratus and later a VP; she was rich for a while when they ended up with a billion-$ market cap, but ended up poor again after the stock crashed. If you plan on being an early employee at a startup, you should do it for learning or for the experience rather than any perceived financial rewards.