> <i>After you have spent enough time in the first tier of the intellectual strip mine, we will make you an SDE 2, where you can do slightly higher level refactoring for $150k a year, which will make the giant company $5 million. This is what is called an arbitrage.</i><p>I've been a programmer my entire career, and so my interests align with this ideology, but quite frankly it is offensive to call junior software dev work an "intellectual strip mine", and to assume a priori that your salary will return 10-20x multiples in value to the company.<p>The reality is that it is highly non-trivial to derive economic value from programming. You have to be able to sell <i>something</i> in significant volumes. That is the value the company is bringing to the software engineer. How much value any particular employee brings to the organization is impossible to calculate. Certainly the engineers will bring efficiencies that are impossible to get any other way, and perhaps they enable the entire business. But you can say the same about the sales people, the biz people, the product people; even the much-maligned marketing people may be essential to keep the revenue flowing.<p>There's a huge bias in any industry to overvalue your own work over that of other disciplines, simply because by definition you know more about it than what those other departments do. There's something I find really off-putting about a lot of abstract whining about how underpaid developers are. Sure, some are underpaid, also some are overpaid NNPPs, but as a whole we are doing way better than the vast majority of careers in the world right now.<p>All this is not by way of saying you should be satisfied with what you're given, but rather that you should pull your head out of the sand and recognize how the world works: you don't get paid what you <i>deserve</i>, you get paid what you <i>negotiate</i>. And negotiation is a skill you have to learn. If you don't want to learn anything about business and you just want to write code, then you should expect to be taken advantage of. If you want to capture more value you create, the first step is defining that value, and you can't do that unless you understand the business. From there you can have honest conversations with your employer on more equal footing, and decide to either stay or leave. This business knowledge will also enable you to start your own company with a much greater chance of success than the majority of startups with purely technical founders who start with a build-it-and-they-will-come mentality.