Programming is not like being a cash register attendant at the supermarket (no offense to these workers intended).<p>For programmers, getting into the workflow of a company, their existing codebase, becoming efficient, it may take months.<p>Shipping a product may (and typically does) take over a year. The lifetime of a product may be over a decade.<p>And if a developer quits mid-way through a project, they may derail the entire project, while someone else has to spend the time, step into their shoes and continue their work.<p>I honestly can't imagine the morality of someone who would just abandon their project, their baby, so to speak, and go work somewhere else at the first call from another company offering more money. Did they take the first job out of desperation? We're talking top-of-the-top companies here. I doubt so.<p>Poaching employees like this is also very unfair to every company spending a lot of resources to find the right employees, to build the right teams from other channels, only to have the competition cold call them and take them away after the former company has done the hard work.<p>There's also the problem of trade secrets. An employee who has spent some time at, say, Apple, learns a lot about their product plans, processes, methods, and so on. Getting those employees means that one way or another you get access to these carefully kept trade secrets implicitly, if not explicitly.<p>Keeping wages down is bad, but employees who keep shifting jobs, leaving a trail of destruction behind them is also bad.<p>How do we resolve both sides of the issue so everyone is happy?