Anybody who has ever bothered to read my resume has probably thought to themselves: "This guy sure likes to switch jobs." Well I can't fault them for making that observation as it is at least half true.
While I do switch jobs fairly often, the painful truth is that I don't like doing it. Interviewing as a developer is an intensely painful process rife with reciting answers obtained via rote memorization and concocting inventive answers to cute but ultimately pointless logic problems. Despite those misgivings, I still change it up every few years. Full disclosure: I'm thinking about what my next position will be as I write this. Ping me if you want to chat about that.
So why do I do it? Well I pride myself on four things above all else as a professional developer and it's important that you know what they are up front:
In order to feel like I'm doing good work as a developer, I need to feel like all of those elements are present. Now when you first start working somewhere, it's easy to feel that way because you essentially exist within a bubble. But as you stick around you tend to learn more about the organization and your awareness of what is going on evolves as a necessity.
Each time I've resigned a position, it has been because my newfound awareness essentially limits my ability to feel like I can either be productive, that I can do quality work, that I'm being properly compensated, or that I am effective. Out of those four items, effectiveness is probably the one most deserving of an explanation so I'm going spend some time explaining what I mean by that. This is especially nice as this also happens to be the primary reason why I'm looking to move on from my current position.
In my purview effectiveness is essentially a measurement of the ability my work has to produce positive outcomes for my employer and/or client. What this means is that its not enough for me to be able to produce high quality code at an above average rate while getting paid well. It means that I must also feel like the code is being used to effect positive change of some sort. If it isn't, then my work has no purpose. If my work has no purpose, then I essentially have no purpose.
Purpose is important. Without purpose people exist in a vacuum that in which they are not only detached but essentially meaningless. If I was to sum up my feelings about my career over the last two decades with a single term it would be: Mildly Effective. Even though I've put it last on the list, it is arguably the most important item on the list.
Now there are lots of factors that can contribute to birthing a situation in which effectiveness is lacking and/or totally absent. I will not go into the specifics that led me to feel this way at my current employer. But I've left more jobs over feeling ineffective than over anything else on that list over the years. I've even ended relationships with clients because of it when I was working for myself. At the end of the day, when a worker feels ineffective, nobody stands to benefit. Somebody has to have the courage to step forward and give both parties a chance for a fresh start. I'm willing to be that guy if the situation necessitates it.
Once more unto the breach, dear friends, once more.