- Type of employment. Is it a contract or "perm" position? Contract positions are expected to hop. It's part of the game.
- Timing. Are you in the middle of something? Can someone else easily pick it? Bailing in the middle of a big migration will leave a nasty taste in managers' mouths.
- Rank. Are you a CTO or a developer? The higher up you are, the longer you're expected to stay.
Changing jobs is something that you should do, in my opinion. Here's why:
- Versatility. You'll be exposed to new challenges/solutions, practices, and possibly languages.
- Network. If you do it properly, you'll establish a lot of new contacts in the industry
- Exposure. The same job at different companies may have different responsibilities and roles. You'll get a chance to build new skills or determine weaknesses.
- Pay. If you're hopping for the right reasons and doing it right, it is hands down the best way to get a pay boost. Once you're "in" a bigger company, they'll put you on a standardized raise ladder. Sure, you can get promoted but those will often have calculations involved that reduce your elevation. With hopping, you can set expectations (I need X% more to jump).
Problems with job hopping:
- Bridges. You'll burn them.
- Fatigue. It's a lot more time and emotionally consuming than you'll realize to look for work. Interviews are exhausting (and intentionally so).
- Loyalty. You won't have any.
- Rank. It's hard to climb a ladder when you're jumping off of them.