Ref: http://java.dzone.com/articles/when-leave-your-programming
Technologists often rely on the more common and obvious signs to leave their employer (company product failures, layoffs, or reductions in pay/benefits) as primary motivators for making an exit. One could argue that experience at a failing company can be infinitely more valuable than time spent at a highly successful shop. Waiting for those alarms to sound, which could be false alarms, is a mistake for your career.
When should you think about leaving your job?
- You are clearly the ‘best’ programmer at the company and/or have no teacher or mentor available – Many people may get this wrong due to overconfidence, so you need to assess your skills honestly. Even if you acknowledge you are not the best, do you have access to others that you can learn from that are both able and willing to share their knowledge with you? Your company may have hired loads of great talent, but if these individuals are too busy to help or not interested in dialogue you are no better off than working alone.
- The technologies employed are static and make your skills unmarketable – The extended use of dated, proprietary, or very specific technologies can kill your marketability. If the firm is still using very early releases of popular languages or frameworks this could be a good indicator. Multiple years in a stagnant tech environment is much worse than the same tenure in a shop that consistently improves their tools.
- You have accomplished nothing – This is often not your fault. Perhaps your company is consistently delaying releases and never seems to deliver on time, where the problem could lie in the development process or management decisions and not on tech talent. If you look back on your stay with the company and can not point to any significant accomplishments (given a reasonable amount of time), consider the reasons why.
- You are underpaid with no upside – There are at least a handful of justifications to accepting compensation below market rate. The ability to work with great people is probably the #1 reason, with learning a valuable skill a close (and related) second. If you took less money with the expectation of a future positive that just hasn’t panned out, it’s time to look at your options.
- You are consistently passed over for interesting projects or promotion, and your ideas are not considered - If you are rarely given the plum assignments and not even a candidate for higher responsibility roles, the company simply doesn’t value your service. The firm feels you are doing enough to keep your job, but they do not see you as a true long-term asset. Keep track of how often you volunteer for a new venture and the company response.
- You are no better off today than you were when you joined the company - The phrase ‘better off’ can take on a few meanings. Traditionally one might use better off to refer to improved financial standing (raises), but you should add more qualified as well. If your skills, marketability, and compensation have not improved after a reasonable amount of time, you need to question why you are still there.
- You see little change in what you do – A consistent and small set of responsibilities for long durations tends to be a career killer. Working on one small part of a very large project/product is usually the culprit.
- You have no inspiration – Many domains in software development might not be all that interesting to you personally. In those situations, the technical challenge at hand or the opportunity to do something truly innovative may trump the lack of industry interest. Building a website for an insurance company might not be a dream, but scaling for millions of users could make it fulfilling. If you are finding no value in the work you do and lack any inspiration, there is probably something out there that will get you excited.