Because programmer usually is not businessman.<p>That is, first you bet, then you could win, or lose.<p>This is totally different lifestyle and different style of thinking.<p>And that's not all. In reality typical win means, you just got much more than typical bank deposit give. For example bank give 10%, but you got 20%.<p>And this also consider much different knowledge set and skillset, than typical programmer think.<p>For real business much more important than abstract loc, how good you know business (and/or lifestyle) of your client, and how good your code fill his needs.<p>Separate important problem, what people say they need, does not really equals to what they really need.<p>And one also very important part of this puzzle, sometimes you must become salesman and convince your client to buy your solution, which client don't understand, but you sure, it is what he need, and may be more important to you, to what you invested your time and money.<p>And for salesman it is very typical, to have ZERO permanent part of compensation, live only from percents of sales. And to be honest, sales are not 100% depend on salesman skills, but have few peaks on few famous parts of year, and also have huge known decline periods.<p>So, if programmer want to be paid in proportion to his VALUE, he will deal with all things I mentioned. And yes, in many cases, this means, to become much more salesman and much less programmer.<p>To be honest, in usual developed country it's worth it. In developing country, successful programmers paid comparable to big bosses and to media stars.