This blog is all about going from being a good programmer to a highly paid developer. I spend a lot of time talking about the techniques I've used in my career, but I haven't said anything about the effects. This seems like a good time fill the gap since I'm changing jobs on Monday. The change represents the positive outcome of a lot of what I've done and gives me a chance to talk about some aspects of managing your career.
Managing Your Career Is Your Responsibility
I can't emphasize this enough. I've seen so many people fall short of their potential and feel victimized when their manager didn't move them along their desired path. Hear me now and believe me later: nobody will ever be more motivated than you to advance your career. Which means that if you're not particularly motivated to advance your career then you'll probably fall far short of your potential. If you've never given much thought to career management, then there's only one word you really need to know: Alignment. Figure out where you want to be and what you want to do, map a path, and then constantly align your goals with those of your manager.
Leave On Your Own Schedule, But Always On Good Terms
My career is a little more actively managed than others. I'm continuously measuring where I am and what I'm doing against other opportunities. I try to keep what I'm working on clean enough that I could finish in a couple of weeks, if need be. This has several benefits. For example, I tend to work in small, defined chunks that are easy to manage and measure. I avoid going down the deep rabbit holes that trap so many other developers — if a developer ever tells you that they want to "rip out the entire persistence layer and rewrite it" on their 3rd day (or even their 3rd month), then chances are you've got a rabbit hunter. This also allows my manager to easily rearrange my priorities as his change. Something big pops up and who is he going to redirect to it, the guy who is a month in to a 3 month coding odyssey or the guy who can wrap things up in a day or two? This is really important, because it's critical that your manager does not feel like you've left him hanging when you leave. It's great if they are disappointed that you won't be around any more, but if they are angry then you've probably done something wrong. Also note that you should be leaving for an understandable reason. This means that simply going somewhere else for more money is a bad idea. If you feel underpaid then you should be able to negotiate an increase where you are. If that fails and you presented your case well, then your manager will not be surprised when you leave for more money. A couple of good reasons to leave are: You're in the wrong place (i.e. alignment is impossible), or you've gotten an opportunity that simply doesn't exist in your current environment (i.e. a jump in leadership that would only happen somewhere else). If done well, your manager will be glad you were there for the time you were and you've just added a person to the list of people who may call you with one of those aforementioned great opportunities sometime in the future.
So How Did This Happen To Me?
My story is combination of all of the above. The number one reason why I'm changing jobs is that I'm in the wrong place. The job I'm in was about to require far more Python work than I could stomach. NOTE: This has nothing to do with Python, it's a fine language but it's not the one I want to work in. This meant that alignment was going to be impossible. At the same time, a former manager had started in a new job and since we'd kept in touch he told me that there could be a great opportunity there. Since I was in the process of winding down my current cycle of work and getting ready to start the next one, then everything cam together such that I could hash out a deal, give my notice, wrap up my work, and roll to the next big thing. Believe me when I say that great opportunities like this don't come along every day so it's critical to be ready or you won't be able to capitalize on them.
In closing, I'm really happy that I had this job and it's great to be leaving while I still feel that way. I firmly believe that managing my career advancement (and personal happiness) is nobody's job but mine and I'm fortunate to be able to share my experience. As always, feel free to post similar experiences, advice, or questions in the comments.
Curious Jay, what language(s) DO you prefer to work in?
Python is one of the few I haven't crossed any deep paths with, though I know many who love it.
I myself am a diehard groovy/grails fan 🙂
You most powerful point in this, is that nobody else, on the planet (except maybe a wife who wants more jewelry, or a husband who wants a new porsche… or vice versa, whatever your inclinations 😉 ) is more concerned with how your career is progressing than you are.