I think one of things that is a key de-motivator for devs is having to work with other engineers that don't really care about the quality of code they write, as they don't perceive software as an art-form or craftsmanship, but more as something that pays their bills. A lot of dev orgs don't spend enough resource/time evaluating dev work on a technical levels, leading to lots of bad code and frustrating the hell out of the good devs. The places who do instill passion and draw great devs, much like Apple at its height.