Hi Khyat,
Have you conducted exit interviews? They will give you a good insight about why people leave jobs.
In my experience, people use the following process unconsciously when they decide to change jobs:
1) At the offer stage, they equate a value for the role/work they are going to do versus the compensation they are going to receive. If it is equal, or in a positive favor of compensation, then they join. This, of course, is after considering issues like family constraints, travel, location, etc.
2) After they join, they become exposed to the company's culture (the way things are done). If the culture totally disagrees with what they personally believe and value, then they will leave that organization.
3) Given that no culture is a 100% fit for any employee, the employee will adjust to the extent that he thinks is fair. He will accept certain behaviors as part of the job and continue to work. Throughout this time, he will unconsciously evaluate the monetary value versus the job and versus the environment he is working within.
4) If the job market situation is bad, or if he feels that he cannot get a job anywhere else, he continues to work.
5) When he starts becoming unhappy in his profile or company, he doesn't leave immediately. He stays around hoping that things will improve. If they do, he stays. If they don't, he becomes more disgruntled. At this stage, such an employee is like a poison for a new joiner, and as such, should avoid being given the responsibility of being a buddy or mentor.
6) As things get progressively worse (in the employee's perception), he now consciously evaluates monetary value against the job, organization, culture, and future prospects. If it is perceived as strongly negative, then the employee starts looking for a change.
And the day he gives his resignation, his boss and HR try to keep him back. But by then it's too late.
Hope this is helpful to you.
Regards,
Ryan