I'm a Java developer first and foremost, "by trade" so to speak. And back in 2007 I'd never written any Python professionally and had only done the more minor amount of development with PHP. So, there was this company that was primarily a Python/PHP shop, BUT they had this one project that was in Java. They were using a popular F/OSS ERP/CRM application that was Java based, and so they wanted at least one "Java guy" in-house to help support and integrate that.
So they hired me. I gave my two weeks notice at my old job and then started at the new job.
In that interim time, they cancelled the project they hired me to work on.
So on my first day of work at the new job they go "Hey, we know you're mainly a Java guy, but we cancelled that project. Do you mind working in PHP and Python?"
I mean, what was I going to say? I'd already quit my old job at this point. So I stayed, learned Python, wrote a bunch of Python code and some PHP. But it was never a good fit really, and then the 2008 financial crisis happened. They started laying people off. And I didn't get laid off. Then they did another round of layoffs. And I didn't get laid off. Things kept deteriorating though for various reasons, and finally they offered me a voluntary layoff and a nice severance package. So I took the money and ran about having been there about 14 or 15 months.
It was an interesting experience, and maybe I should have bailed earlier. But it was a fun group of people to work with, and I didn't mind learning and working in Python. And had it not been for the whole "global financial collapse" thing, maybe I'd still be there today. Or not. Who knows?
That's a very quick re-prioritization! How'd that make you feel?
Happened multiple times to me and I recommend pulling the plug early. My resume has 3 jobs that lasted less than a year and 4 that have 5+ years each. People sometimes ask why that is so in interviews and my answer above always gets a chuckle and a nod.
#1 Your boss doesn't inspire you _every day_: I don't mean this metaphorically. In the first year, almost every day you must be like "holy molly, I am so lucky to be working with this person. I'm gonna learn so much from him/her/them."
#2: You are the smartest person in your team: I always tell people: "if you are on top of mountain then you are probably on a bunny hill. Go find a real mountain." You need people who pull you up, while you grow them in other ways. So there must be something about the people around you where you are like "I wish I had that. I must learn how he/she/they do this."
#3: Company focusing on the wrong things: Too much tactics, too much strategy, too much product, too much engineering. Most of these symptoms manifest themselves as products/features that don't align with where you think the world is headed.
Now for what I would have done differently:
For #1 and #2: I must say that I have been so fortunate to work with some really really inspiring reports, peers and supervisors. In the one odd case where it didn't pan out that way, I wish I had spent a little bit more time with the person I was gonna work and the team I was gonna work with, before I accepted the offer.
For #3: This one is easy. You can literally spend half a day reading up on the company, their products, and the general domain to figure out whether this one is worth your time or not. What's wrong internally that makes them ship the wrong things isn't important for your decision any way.
None of the above signals are a disaster in big companies as you can always look for a different team which checks these marks. But if you are going to a startup or an early stage company then it's better to rip the chord quickly.
What changed was a combination of realizing how little I could actually do, magnified by a whole new tier of VPs hired from Microsoft and Google who brought their loathsome ways with them. One never expects the Spanish Inquisition...