I work in a unionized profession. Promotion within a company is based on seniority and, as commoditized skilled labor, advancement to better paying employers is largely based on luck, connections and "soft" stuff such volunteer work or degrees that have nothing to do with the job.<p>It's discouraging to know that no matter how hard one works, or how much more skilled one might be than another worker has nothing to do with career success. Frowned upon are things like working extra, going above and beyond, and trying to do a "good job". For example: A colleague was recently baffled by my attempt to save resources by working efficiently, and "I don't get paid enough to..." is often overheard. It's a generally negative environment with a persistent adversarial relationship between labor and management. The message from labor leaders is often irrational and borderline propaganda.<p>From the outside looking in, software engineering seems like a pure meritocracy, where one's skill is constantly on display, and something that's rewarded. I often think that I'd rather be a crappy software engineer who's earned my place than excel without reward in my current job. Unfortunately, my earning potential is probably higher if I stay the course. Money isn't everything, though, and I'm nearing an ability level that would allow me to find an entry-level software job. Just wondering what others' thoughts are on the meritocracy idea.