This blog post will add a lot of value to the discussion: http://teddziuba.com/2010/05/why-engineers-hop-jobs.html
It comes down to this: top talent has easy time finding jobs. Make sure that you, the employer are competitive in the job market.
I am a harsh judge. Please do not judge me nearly as harshly, for I need to eat to sustain my life and thus I always needed a job somewhere. I am sure that my post is subjective, but I tried to answer honestly from my perspective. You see, it is NOT all about what I can do for the company. It is all about WHAT I WANT (and can get). FYI, I am male, not married, without kids.
[In no particular order]
Reasons I have left:
- On my first day I was greeted: "Welcome to Hell" by a co-worker.
- Company is struggling financially
- Many broken promises
- Overqualified for my current position and cannot move within the same company.
- Bored as hell at my daily job.
- Working with / for idiots.
- Management betting big on sub-par outsourcing and having their ass handed to them.
- Management not understanding software.
- Working in an industry that I am not passionate about.
- Consistently shipping crappy products. So far I would never buy what I have been producing, even if I was working for a large firm with a lot of capital to spend.
- Corporate bullshit.
- Work location in the middle of nowhere.
- Depressing-looking work building; awful food in cafeteria.
- Cheap/flaring office furnish and equipment.
- Uninteresting coworkers / personality clashes.
- Too much gossip / co-workers having no balls to stand up for what they believe. Seeing no sparks in anybody's eyes.
- "Golden children" / "ass kissers".
- Dress code, too many meetings, having to be at work by 9, six sigma training, seeing corporate waste.
- Not being able to grow professionally / take a class after work.
- Not having enough equipment to do the work fast, work place being too noisy.
- Too many meetings. Fixed deadlines.
- Not enough vacation / sick days. Feeling that I am not getting paid my market value. Feeling like I make significantly less than some other assholes at the same company who do not deserve it (I tend not to envy when pay is justified).
- Not clicking with manager / project manager / co-worker(s).
- Being a minority in the democrats vs republicans debate, encouraged at work. Non-proper conversations regarding gender/race/sexual preferences during lunch.
- Seeing brain drain and the company not realizing that it is happening and why it is happening.
- They score too low on Joel's test.
- "Dead sea effect" : http://it.slashdot.org/story/08/04/12/2241216/The-Dead-Sea-Effect-In-the-IT-Workplace
- The boss's dumb son works here too, but he is unfirable.
- Other types of unfirable people; jerks.
- I worked at Wall Street and I had to talk to traders.
- We helped the stock market crash.
- Business analysts were above me on a food chain.
- Employee evaluation that made me feel like shit for a week or two, even if my compensation was ok. Anything every slightly negative that goes on record into HR's files cannot be good for me. I would much rather prefer a tough 1:1 conversation.
- Negotiating a raise is hard and unpleasant. Going to interviews is fun, increases wealth, and makes me feel smart once again. All those fun puzzles and deep technical questions that only tend to come up in interviews, but then my daily work is not nearly as stimulating.
Why I have not left yet (in no particular order):
- It is not that bad (but I will not be here too long).
- My pay is ok
- I might not like everyone, but my manager and some of my co-workers are awesome.
- I might not work for NASA, but I am still challenged, am learning, and there are some smart people around.
- I like most people's sense of humor.
- It takes me no more than 45 minutes to get to work using public transport.
- The company's revenue looks ok, so no need to fear layoffs or other draconian cost-cutting measures in the next 6 months.
- I have not been here long enough; if I leave now, then I will look like a job-hopper.
- I want to wait till February, when I will be told how well they think I performed as well as get my raise and bonus :)
- If I leave now, my resume will not look that good. They promise that after 1 year of being here, they will finally give me a half-decent project to work on.
- My benefits look decent, and I have some dental work coming up, so I better do it before I switch jobs (work is hard at the beginning, and health-related stuff better not be a distraction).
- The economy sucks, so I have to stay here for at least 6 months total. If I get laid off after that, then Obama will take care of me.
- Joel test score here is above 8 out of 12.
- After 1 year I am eligible for career development benefits, and I want to take a class.
- My co-worker is my neighbor, and he drives me to work 5 days per week - score!
- My partner is finishing up her Master's in 6 months. When she gets a job in 9 months or so, I will reevaluate my situation.
- I have MSDN license, so all 50 of my relatives get a free copy of Windows XP / MS Word and a flight simulator.
- I need time to prepare for the job that I really want, and working 45-50 hrs per week does not leave that much time.
- I have some free time during work day, so that I can invest into my education/projects/ideas
- I have a family situation / I am in the middle of a divorce / other personal stuff, and I want to take it easy and not try to do too many things at once.
- I will be starting grad school in 1 year, so it does not make sense to switch a job now.
- I bought a house and I cannot risk it, at least not until I rent our 3 out of 5 rooms.
- I have had a large unexpected expense; job hopping is unwise at the moment - I need to replenish savings.
- I still need to meet / linked in more people and secure a couple of recommendations.
- Someone at my work thinks that I am not that smart. I cannot leave until I make them eat their wrong first impression.
- They will send me to a Scrum Master training next month, and that always looks good on a resume.
Reasons why I am likely to stay for 5-10 years:
- I absolutely love it here.
- I help to cure the deadliest form of cancer or do something useful like that.
- I do not feel like yet another brick in a wall, but rather feel like I matter.
- I am compensated well, and have no envy of coworkers.
- I socialize with my coworkers after work because I want to, not because it is good for networking.
- People are very cool and get my sense of humor and vice versa.
- Proper equipment.
- No performance evaluations, or at least a fair and human-oriented process.
- I can work 11 am - 7 pm without management thinking that I am a lazy slob.
- It is quiet here.
- WE HAVE A FREAKING PING-PONG TABLE (foosball is lame)!!! A pool table would be nice, preferably non-American (pockets are too large).
- We have a gym, a swimming pool and a sauna.
- Good benefits
- An opportunity to learn, to take a class, to work only 30 hours per week and get paid accordingly.
- At least 1 month of vacation (yes, it is a lot by US standards, but if you come from Europe, it is nothing).
- My co-workers are smart but normal (as in they do not take the geekiness to far).
- Drinks and snack are included, and they are healthful because my co-workers do not eat sweets or drink soda.
- The place provides recycling, and my co-workers can tell paper from plastic from metal from trash.
- The place is green-conscious (but not green-washed).
- I would/do buy my own product.
- I get paid to learn a foreign language on my job.
- I can practice that or some other foreign language with my coworkers who speak it.
- I am respected and feel smart. I get things done fast and well because the environment is right.
- The company is doing well financially.
- I can tell random people at a bar what I do honestly, and they will think that I am cool.
- I get enough income from rent, but I still want to work here.
- Work is located in a lively place, with lots of smart, positive, energetic people around on the street.
- I can walk to work in 30 minutes. There is good food and entertainment everywhere along this path.
- I have many friends in the same city / area. I can meet cool people here.
- I like the climate, and beaches / mountains are not too far away.
- Unlike Jeff Atwood, my coworkers genuinely like outdoors and nature.
Reasons why I am unlikely to stick around for more than 10 years:
- I want to be my own boss.
- I want to travel a lot, on my own schedule.
- I could use 2.5 months of vacation per year (paid or unpaid), and no sane employer will offer that to me.
- I am not yet sure if I like long commitments.
- I have not decided 100% what country I want to live in. Things can change quite a bit in one decade.
- I like change, I like new atmosphere.
- Life is very dynamic. My goals 10 years from now can be quite different.
- I prefer small, successful companies / startups. After 10 years they will likely grow into something different.
- Companies that survived the first 3 years tend to be risk-averse, but a new crazy start-up around the block might be doing something very cool and new.
- Moving every 10 years can be good in general, and I do not think that being a manager is for me. Without desire for vertical growth, looks like horizontal moves are the only option.
Hopefully this helps. Yes, I am a dreamer.