As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

9

I think this question is too broad to be answered accurately.
–
MaxpmFeb 20 '11 at 8:11

4

I just do what the magic 8 ball says ... it's never wrong! It told me to post this comment!
–
Tim Post♦Feb 20 '11 at 16:07

5

While this question is broad, there are some interesting answers coming out. It would be worthwhile to get a short list of reasons assembled and perhaps spin each out as a new question in the form of "how do I stop X from happening?".
–
smithcoFeb 20 '11 at 17:28

@Kevin - yep... the founders and mods just can't understand that we ask questions like this because we want advice from programmers from all over the world...stack exchange sites have the best userbase of all... but mods like Chris F and Anna Lear make it there daily routine to shut down topics that do not meet the FAQ 100%... So one mod decides to close this topic because they think its not constructive, yet there are 18 answers and 109+ upvotes... your wrong Anna!
–
DalJan 29 '12 at 21:16

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.

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.

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.

"Wow, you've left lots of times! " not necessarilly. Quite often you'll find some or many of those factors happening together, and it's the combination that causes you to leave, not any one of them on its own.
–
jwentingJun 8 '11 at 8:01

4

@Mark, I simply do not understand your stance. You might prefer chat, but I do not find chat useful. Comments that pertain to an answer are better left right where the answer is.
–
JobJun 24 '11 at 20:07

My first job was mainly programming Visual Foxpro and I didn't see much of a career path in visual Foxpro.

Promises not kept were training courses I followed with the promise that I would be getting assignments for which you needed the training courses. I didn't get any of those assignments.

At one employer we would be getting grades 1-5 officially telling us how well we did and on the grade the salary increase would be based. Reasons for bad evaluations included "your starting salary was to high", "other employee's used up the 4's I am allowed to give" and "you got an extra pay increase so I can't give you a 4 now".

I got an offer that increased my salary by 25%, with everything else looking great I couldn't resist.

Aint that the truth. There's the occassional exceptions of course - people who get lucky with stock options. But for the most part, if you want to become independently wealthy, you need a level of ownership over what you produce.
–
GrandmasterBFeb 21 '11 at 19:19

Autonomy, mastery and purpose. You can not motivate your people, you can only demotivate them. Give them room to learn and get better at what they do. Allow them to learn from mistakes. Give them room for creativity, don't spoon feed tasks to them. Don't keep them away from actual customers/users. Appreciate their craft.

5 Work assignments

I leave, because they show no interest in the quality of the work. It takes time, effort and energy to product quality work. And that time costs money, but the lack of that effort, decreases the reliability, performance and ease of handling larger amounts of data.

Basically if companies just keep sludging crappy code out there, and then wonder why they get reports of daily errors coming through, or server's crashing.

I haven't seen the hours posted yet in any of the answers. While many programming jons allow for normal 40 to 45 hour weeks, some companies instill a culture where 60+ hour weeks are expected. I know a number of people who have left the games industry for that reason.

Career deadend. A struggling company with a bad product that just needed maintenance.

Boredom. Wanted to do something else, become self-employed etc.

Terrible work conditions. A perfect 0 on Joel's test. Part of my job would have been to improve that (kind of a manager position), but I had to find out that the whole organisation was resistent to improvements.

I dislike the title "programmer" because it is ubiquitous. I have seen the title used for positions ranging from Excel macro writer to hardcore veteran system software engineer.

If you want people to stay, you need to shed the "programmer" title and structure your organization such that software development professionals are treated like true professionals. Organizations that have career tracks for those who wish to remain technical instead being forced into management produce better software and have lower turnover rates.

Ideally, an organization should have a technical career track in which the highest technical grade is at least equivalent to that of second-level line management in compensation and authority. A highly effective technical organization will have "advisory" level engineers that report directly to a director or an executive. Advisory engineers are not line managers, nor are they project managers. Advisory engineers are the civilian equivalent of Chief Warrant Officers in the U.S. Navy (http://en.wikipedia.org/wiki/Warrant_Officer_%28United_States%29), that is, they are highly-experienced (> 20 years) technical specialists with upper-management authority who know how keep expensive projects from going south.

Working for the NHS (National Health Service) in the UK which meant my salary was in a band (A, B, C etc). That meant I was able to reach a max salary for my band, but could not get any more than that. The only way for me to get a meaningful salary increase was via a promotion (which wasn't going to happen unless the current Senior Software Developer left, or died), or by a cost of living increase in my wages.

There was one developer in the team who had been on the same salary for 5 years. He soon left. I lasted there two years before getting fed up of the crap wages.

What I've not seen yet: the company moves in a direction that's completely at odds with your career goal and/or skillset.
e.g. I used to work for a company as senior Java dev when that company ditched their Java product line and decided to concentrate fully on Progress 4GL (which was their other main product line). As I'd no interest whatsoever in getting sucked into a career dead end as a Progress developer, there was no other option but to quit. Company CEO a few weeks later at an all-staff meeting announcing that "we're not a product organisation, we're a service organisation" when the main income stream for the company was selling the software we produced (rather than the training and hosting for that software we also provided) was the final straw (for me as well as others).

Particularly in small campanies not like(google , yahoo), when an employee is competent of doing one step ahead as compare to what he is doing in his current firm, then employee want to move to the next higher position and salary.