Still haven't entirely written about Codemash last week, but being a speaker at the event meant I got to talk to a lot of people. Not surprisingly, many of those conversations were about career development, which is one of the reasons for such events to exist. It's why I enjoy speaking at events, because career development is the biggest problem we have among software developers. There aren't enough people who are good enough at what they do to fill the available jobs, and it's only going to get worse.
One of the things I frequently do hear is that a particular job isn't quite what they want it to be, or the company they work for isn't what they hoped, or their career isn't even what they want to be doing. This isn't unique to any particular field. We can all feel this way. Certain personality types have it worse, because the over-achievers create lists early in life, boxes to check, and deviating from that path is something akin to failure or compromise. Others will land somewhere quite randomly, and not even realize that their distaste for the gig isn't a personality flaw, it's because they really don't fit there.
Let me interject something here before I get into it. We all have learning to do, and it never stops. There is a lot of it to do early in our lives, so it's important to understand the difference between feeling entitled and not having the direction that you need to move forward. What that means is that having a degree doesn't entitle you to a corner office or a particular salary, and your job shouldn't be easy. What your job should do is be contextually relevant to what it is you want to do in the long run. My first "real" job after college didn't pay much at all, but it did eventually give me two things I knew would serve me: fiscal responsibility and one employee to supervise. The money sucked, the hours sucked, but it was absolutely something that would move me forward and build the skills that I wanted to have. Staying in that job was not a compromise.
However, it is entirely possible to land in something that does not move you forward or build you skills. You may work in an industry that wasn't as great as you thought. The work might be dull and meaningless to you. This self-awareness shouldn't be met with the notion that making a change is compromise unless there is a survival angle in play. I worked for a year and a half at a job once that didn't flex any of the muscles I was good at using, and ended up having to get laid-off to realize it. That was my "a-ha" moment to actively manage my career, and not look at a change as some kind of failure.
Strangely enough, this kind of realization can come in the opposite extreme, too. A good friend of mine was in what she thought was her "dream job" about a year out of college. Indeed, her response at that point was, "Now what?" She could have easily done this job for years, and been really great at it. But believing that trying something else would be selling herself short would have inhibited her potential.
The idea that changing your mind is compromise is a silly ideal. Not changing your mind about something when you have more information isn't compromise, it's stupid. Only politicians are supposed to arbitrarily stick to something even when they know something to be contrary. Just kidding, they shouldn't do it either. If you're not getting better at what you're doing, and the environment is the cause, it's not unreasonable to figure out how to improve the environment or find one that makes you better. Self-awareness is key to success.
My story is an example of making hard decisions. I ended up in my current job not because I was particularly unhappy at the last one, but because I wasn't able to stick to a specific product long-term. My career goal is to commit to a product over the course of years, from nothing to a bona fide business. I've had a bunch of short-term successes, but I wanted to prove to myself I can be a part of something bigger. What are your goals? How will you pursue them?