The best times in my career were shortly after I started out and right now. The worst were several parts in the middle.

In the beginning I had started out at a telecom that was quite stable (around 1997). I was 19, it was my first "real job" with a paycheck good enough for me to live comfortably on my own. Within a year I went from lower-level support work to back-end support. The market my company was in was disrupted, causing bankruptcy in 2001. This was still a great time. When something like this happens, the company survives on the best members of its staff and I was that guy -- I quickly filled in gaps and started in software development (where my passion was anyway).

Over time, this led to my worst periods. The demands for the job grew, but my salary and frequency of interesting projects did not (except for a brief period in 2008). Every 6 months the company shrank taking with it a majority of the great people I worked with (most leaving on their own due to the environment). Coming in to work every day amidst the terrible moral was taxing.

I left that job last year though I wouldn't say that my work ethic has changed. I never let the bad things get me down -- ultimately, I have this job to support my family and that's motivation enough to do the best work I am capable of. But that has a cost. Every day I'd drag myself out of bed, start work, and when finished I'd be "spent". My performance at work didn't change, but I can now admit that my performance in everything outside of work suffered greatly to the extent of it being one of the reasons I am now divorced.

I'm now back on track. At my new job I work with and for excellent people -- people who truly love the work and the company they work for. I fly out of bed at 5:00-5:30 AM excited to work (so excited, in fact, that I use it as motivation to get a morning run in ... "I can start working as soon as I eat breakfast and run around the block" ... it's weird to use "starting work" as a reward for doing something I don't want to do). It helps that this place is both a good fit for my skillset and a great place to expand it. I'm a passionate learner and need a job that keeps things interesting and new.

My personal lesson in all of this is "If you can help it, don't keep a job that doesn't value you". If you work in software development today and you're any good (heck, even if your not from what I've seen) there are few good reasons to stay at a lousy employer for very long. I had no excuses. I stayed 3 more years than I should have, maybe more. Loss aversion and fear that I wouldn't find a job as good as I had were paralyzing for me. This was powerful enough to keep me from even getting my resume together and looking. Once I began looking, I discovered that despite the lousy local economy, there were endless choices available to me so I took the one that fit best with my circumstances. The end result is that I no longer finish the day "spent". I've managed -- using the 8 or so hours I can devote to it on the weekend -- to complete 5 personal projects, 3 released open-source. When I talk about what I do, those are the things I tend to mention first -- they are mine, and a direct result of mt overall happiness.