As a programmer/developer/software engineer/what have you, when do you decide it's time to move on from your current position?
I'm trying to come up with a generally accepted set of criteria that will help me grow a nice career with an upward arc that I find satisfaction in. I want to develop a way to critically evaluate current position vs. potential opportunities.
For those of the SO audience that have been in the programming-related field for awhile, what are the primary criteria a developer should take into consideration? What do you think are some of the best career decisions you've made, and why?
If you wake up every morning and want to kill yourself rather than go to work, then you've waited too long. Seriously. I was in this position, and I was so happy after I bailed, and regretted that I hadn't done it much earlier. I think for many people, the inertia of having "security" is so high that they will stay in a bad place for much too long.
Other factors
Be cautious about taking an opportunity just because it's more money. In some cases it may be a good idea, but you may also find out that you're highly paid to do something that is soul crushing.
Make two lists:
a) Things you will miss when you leave
b) Things you will be glad to be rid of when you leave.
Run this program:
public class ShouldIStayOrShouldIGo {
public static void main(String[] args) {
if (a.length < b.length) {
System.out.println("Looks like it's time to leave.");
} else {
System.out.println("I'm digging it.");
}
}
}
Some things that have gone into my decision making process in the past:
The last place I left had one of the best teams I have ever been a part of. It was a full time position and I had a huge amount of freedom and a great salary. The down side? The technology was stale and the development team (I was on a different team) wasn't making anything happen. The director (in my opinion) was more interested in positioning herself for a promotion than fixing any of the problems - if she even knew how. Dead end job.
I left that for a contract position with a huge unknown and I couldn't be happier right now. I am working with new technology and getting to do some interesting stuff on a small team with some VERY talented people from whom I'm learning a lot. Sure, there's risk, but my stress level is so much lower now that it more than makes up for it.
For me, it's very, very simple... whenever I start asking myself the question, is a sign I'm not going to last much longer...
Almost every time the concern started when I hadn't learned anything new for some months
Relative to comparing your current employer/team to a future possible emlployer/team, I think a good place to start is considering the The Joel Test [1]. While this was written as a sort of test for software process sophistication, I think you'll find the list a good criteria to help evaluate the working environment of a particular job as well.
[1] http://www.joelonsoftware.com/articles/fog0000000043.htmlI think a big question you have to ask yourself, is do you have another job lined up if you quit this one. If the answer is no, unless you are indepentantly wealthy, you are stuck.
If the answer is yes, then you have to decide if it is a better deal that what you have. Does it pay more? Is the work more fulfilling? Do you like the people better? If the answer is yes to some of these and no to others, you have to decide what is important to you and make your own decision.
When you find yourself putting in more hours at work thatnin your marriage... (14 hours a day for months) .
When you know that you did the right thing (e.g. that you where beeing "misused")? When you find out that the guy that took your dir. dev. position got USD 15' more than you for his 37.5 hours workweek.
Some questions to ask yourself:
Remember that the money should be your second priority, your growth is what's important.
The short and simple answer is that it is time to walk when you feel you aren't learning or growing. Well, that answer works for me as I am in it to learn new stuff. Really it depends on what you are working for.
The bigger question is what are you going to walk TO. I have found in my carrer that the best new jobs are ones in a totally unrealated field. I have gone from semicondutors to GPS to medical to banking to toys. Each new job has been a great learning experience and has advanced my career.
You have to be careful about what your goals are. I have had friends take well paying jobs but end up hating the day to day. On the other hand I have taken latteral moves into jobs that rocked (for awhile anyway). In the end it is up to you and what you want out of life.
One Question:
Are you having fun or not?
If answer is "No" then you should consider something new.
It's been said before by people far smarter than me, but salary should not be the main yardstick with which to judge your job. If there's nothing else keeping you there but the money then you should have left a long time ago.
It should be about your own happiness, do you feel that the team that you are in is working towards something good, or are they simply treading water, readying themselves for the next client's sucker punch? Maybe that's the kind of environment you like, but is it going to put you in a coma by the time you're 30? Do you like the people you work with? Oh, yeah, there's the The Joel Test of course, but a company could very easily tick every box and still be the most retarded, boring-ass business to work in.
You'll always get those dinosaur programmers who "doesn't like people", and perhaps one of those companies would suit them perfectly, but I think there's an important emotional side to choosing, let's face it, where you're spending a good 60 to 70% of your waking moments.
While I agree you should be looking to improve yourself as other have stated, I personally put more weight on my belief in the company and how I fit within the organization. The following are a few points I constantly ask myself:
Are you happy? If not ask yourself why. Is it you? If so changing jobs wont help. The grass is not always greener.
Are you relevant? Are you contributing to better the company/product? Why not?
Are you respected? If not this may be a sign that you just aren't fitting in. This may not even be an ability issue. I've been places that I just didn't fit into the culture.
Do you believe in the company/product? I can ignore a lot if I am passionate about the company and what they are doing. If I don't believe in it, then what am I doing? Earning a paycheck?
Is the company's moral compass aligned with your own? This is a tough one, but I firmly believe that people get what they deserve. Best leave before the party is over and you are either laid off or left with the fallout.
On the point about having a job lined up, you should always keep your network going. You never know when things will turn south and you have to jump ship, or be forced to walk the plank. Make decisions based on where you are and where you want to be and not the promise of greener pastures.
All organizations have their problems. Sometimes they are like marriages, you just have to work through some hard times on occasion. In the end, if you are passionate about who you are with, it might be worth sticking it out. Do set a time table. Don't keep waiting for things to get better. Recognize when the company is stuck and isn't willing to correct itself.
If you:
Actualy it quite depends on your personal situation; With a family to feed the step is a lot higher. Most important is that you enjoy your job, and if you don't please look out for something new.
First ask: "Am I becoming more valuable to other companies or less valuable to other companies with each day that goes by in my current job?"
If the answer is "less valuable" leave. If the answer is "more valuable" and you're not happy in your current job set a reasonable time-frame to find another job (say 2 months) and start looking!
What Jason said!....
Just do it, you've wasted way too much time.
+1 to what Jason said (I'd upmod 10 times if I could).
I'm in a situation that seems to be slowly sliding in that direction now. It's secure (relatively, I think), but I'm enjoying my job far, far less than I did even 3 months ago, I feel like I'm unable to make any real difference (as far as code quality, etc), and things are definitely stagnant (feels like I'm doing the same thing day in and day out without making any real progress).
I'm seriously considering the possibility that it may be time to move on, before I'd rather shoot myself than spend another day working on the same project.
For me it is when you have done the job.
I'm a contractor and generally when I contract places I get offered extensions every time so it's always my choice when I move on. At present I've been on a contract for 1.5 years now, it's a version 1.0 and we have a test site running it and a trial site. I'll probably leave after we have fully implemented it on one of the major sites which is scheduled for the end of the year. After that the challenge (to create a large, hugely configurable and performant CF application on an embedded device) has finished in my book.
I'd also walk if the working conditions were absurd, but that hasn't happened to me yet.
I should point out that I don't have any baggage (mortgage, family). If I did then I might have different ideas about when to walk.
Lots of good answers here, but to add my two cents worth, assuming you have a choice, don't quit your current job to leave where you are currently working. Quit your job to go to a new and better job.
In other words, make sure (as best you can) that you are not jumping from the frying pan to the fire. I've seen too many people move through a succession of dead end jobs, but thinking that each new one is going to be a stepping stone to something wonderful.
And finally, don't fall for the mistake that work will give you all the personal growth, enjoyment and fulfillment in your life.
Do I have fun here? It's an intangible, but if you have it, it means a lot!
You realise that your current position take you where you want to be in life.