views:

3976

answers:

30

I've been programming professionally for about 8 years now. I started back in the 2001 working in c# and .net development. The past few months, I've found myself in what I would describe as a slump or rut. I'm having a hard time working up the level of passion I used to have for programming. Instead of wanting to stay up late figuring out a problem, I'd rather just go to bed. I have a hard time staying motivated at work even when presented with the opportunity to work in new technologies (WPF, Silverlight, etc). I really do love programming, and would be seriously depressed if I've somehow lost my spark.

Has anyone else been in this situation? Any pointers for pulling myself out?

+15  A: 

take a vacation - 8 years is a long time without a break

and don't go back to work until you start to miss programming

if you don't start to miss programming w/in a few months, change careers

Steven A. Lowe
That or the inability to pay for electricity, food, clothing, rent, etc.. :-)
Optimal Solutions
He doesn't say he hasn't had a vacation.
Valerion
@Valerion: did you leave your sense of humor at home?
Steven A. Lowe
+13  A: 

A good non-technical solution would be to take a vacation.

You might also try going back to school to get a higher degree, or learn a new programming language.

Bill the Lizard
+5  A: 

Yeah, I have been there now and then. I usually find that the only way to "find my way back" is to find a new project that is purely for fun and just start hacking away at it. If the project is right, the light will soon be turned on again. If not, leave it and look for another one. When you find the right one, the excitement will be there.

kasperjj
+5  A: 

Get more balance in your life. Don't take your work home with you. I am not saying to give up on programming at home; but rather program for fun. Learn a new language or just write some games.

Jim C
A: 

I've encountered this exact same issue and sometimes the best thing to do is to simply get away for a little while. Try going on a vacation and leave the laptop at home. Alternatively, getting involved with a User Group can sometimes help give your passion a jump start.

Anne Porosoff
+1  A: 

Hey maybe you're ready for management?! ;)

I'd ask a few other questions:

What might be going on in your personal life that is tiring you out? (don't answer here obviously!)

Maybe it's time to change companies? If technology isn't turning you on anymore, maybe a change in focus or sector will?

Mat Nadrofsky
I like the management crack :)
Cervo
+27  A: 

Life balance is important, as others mentioned. Specifically, I'd also suggest:

  1. Work out. I do push-ups in my office regularly. I also ride a spinning bike several times a week (we built a gym in the garage); spinning is a terrific workout and it's hard.

  2. Go easy on the caffeine and the alcohol. Abusing either of them is exhausting in itself.

A lot of people have said 'take a vacation'; I've always found a vacation, even a 2-3 week one, while helpful, doesn't solve a fundamental rut. A crappy job or situation is just as crappy after 3 days back from vacation. Changing life balance or exercise on a regular basis will sustain your mind more than simple time off.

Of course, time off is important--but it's not everything.

Mitch Haile
Re: spinning. If you find it boring in your garage, get yourself a fixed wheel bike and ride that. The variation in cadence you will have to maintain is a different workout in itself.
Abizern
I don't find it boring. But compared to the upright LifeCycles (or whatever they are), they Spinning bikes are way harder--a much better workout. The cheesy Spinning videos are a bit silly but I've come to enjoy them (a little too much). :-)
Mitch Haile
I meant a fixed wheel bike that you ride on the road. An actual track bike (with a brake). I agree that spin bikes are a much better workout than the LifeCycle bikes in a gym, though.
Abizern
I agree, switch to decaf (although watch out for coming down from your caffeine high, might take about a month), and switch to drinking fruit juice, not the crappy either! Something like Naked Juice, that you can tell it's 100% juice, not like Juicy Juice.
leeand00
Working out helps too, because it gets the endorphins flowing again which make you enjoy things more (including programming).
leeand00
You can also drink Seltzer if you miss the "soda experience." I drink a LOT of seltzer.
Mitch Haile
+35  A: 

Honestly, I ran in to that same thing. In a lot of ways, I'm still fighting it... But, what I've done is taken up an additional hobby.... Something to get my mind off of programming. It took me almost a year before I became interested in programming-for-fun again.

But it did work, I've now written a couple of programs for education and for fun. I never work on work related stuff after hours. It is a hard and fast rule I have.

Don't push yourself so hard; focus on yourself and consider doing something else for a while -- out side of work.

Vacations are also good but I saw someone suggested that already.

What I did was starting learning guitar (www.UnderstandingGuitar.org) and then I started the blog as a why to sort of mix my new hobby and programming. I eventually went to write another program for fun.

May not work from everyone but it helped me... I believe because it actually got me away from programming and computers for a while.

Best of Luck, Frank

Frank V
+2  A: 

Think about what truly motivates you. Is it the technology, or the end result? When I worked in web hosting and consulting, I got to learn and work with a dizzying variety of languages and platforms. But it was at the height of the dot-com boom, and regardless of the tech, the end result was almost always the same - the online equivalent of a mail order catalog.

Then I went to work at a local PBS station, building educational web sites for children. I was making half the money, working with tech I already knew inside and out - and I've never been happier.

Unfortunately for me, they decided that they needed a "Perl guy" for their... wait for it... you guessed it... for their ecommerce site. Epic failure of management to understand what motivates their employees. They refused to budge, so I ended up leaving over it. I've been demotivated and fighting depression ever since.

Sherm Pendley
I'm so sorry to hear your management failed you. It's their fault, not yours! And their loss. Best wishes and best of luck.
Bill Karwin
+10  A: 

It's probably worthwhile doing some introspection about what used to motivate you about programming. What do you want to get back from your work in programming?

  • Is it learning new technology?
  • Is it solving complex problems?
  • Is it feeling like you're doing worthwhile work that has value to other people?
  • Is it teaching other people technology?

Next, figure out what changed, to make your motivations unsatisfied. Are the problems you work on less interesting? Are you not given good feedback? Do you not care about the tasks you are given? Are you discouraged when your projects are canceled or trashed sometimes instead of being finished and deployed?

Next, ask yourself what would need to change for you to get back that feeling of motivation and satisfaction. Do you want to move into management? Tech writing? Usability and design? Do you want to work for yourself or in a team?

I recommend a book called "Wishcraft" by Barbara Sher to help you do this visualization. It's a bit touchy-feely, but it's true that simply having a clear idea in your mind what your goals and priorities are, can help you to bring them into reality.

Bill Karwin
+6  A: 

You have probably hit a point of complacency. It happens when you have been through a lot in an area, job or subject. You may be in a case of "New day, same problems". Even if you are learning a new language, it may not mean much to you.

I believe it is probably the time to go to the "next level". It can be management but not necessarily so. You can stick with programming and technical work but you need to look and handle things at a higher or at-least different level. It may be taking problems and projects which are an order of complexity and scope higher than what you have done so far, or in a different domain or you are getting yourself more involved at the architectural or design level. You may be doing application level development and it may be time to move to something more low level like systems or designing frameworks.

Take a vacation for sure, but you may have reached the dead-end at the current floor and it is time to take the elevator to the next.

Ather
+1  A: 

You may be digging yourself in. Go to some IT meetups. Meet fellow programmers with same problems. You may start by saying "AJAX is a chaos. I've been developing an AJAX framework for two months." A total stranger sipping a Diet Coke may dumpfound you by asking bluntly, "What's wrong with jQuery?" And, you have no idea what it means. That's when you learn without more digging.

yogman
Been there, done that! I worked for about two months on a utility, written in assembler, that would take a collection of arguments from a high-level language, then build a C stack frame and call a C function. Of course, the first person I showed it to said "why not just use libffi?" D'oh!
Sherm Pendley
+2  A: 
  1. Read Steve Yegge's blogs about programming, computing, languages etc: see http://steve.yegge.googlepages.com/blog-rants and http://steve-yegge.blogspot.com/
  2. Learn a new language, new platform (for instance, try Python)
  3. As other suggested, take a break, work out, do something totally out of it, totally different!

Cheers and good luck,

--Tim

Tim van der Leeuw
+13  A: 

For me, when I am in a slump, some physical activity helps, like running, biking, etc.

One thing though: Being tired and unfocused is how I discovered that I have diabetes, so get your blood sugar checked.

Eli
A: 

I +1'd all the "take a vacation" posts but I'd like to add that on your break re-evaluate WHY you like to program and what made you excited about it years ago.

I had a rut like that too because I burned out. Then only focused on money as a motivater - taking a break made me realize that I loved doing good work and I loved the challenge.

BPAndrew
+9  A: 

Don't think of a programming slump as a problem. Think of it as a symptom. It's an indication that there's something out of alignment in your life.

You have needs that aren't being met, and programming isn't filling them. You need to identify what those unmet needs are and address them. They may be as small as "I need to eat better and exercise more." They may be as large as "I'm doing nothing meaningful with my life." Probably they're somewhere in between. The odds are pretty good that they have next to nothing to do with programming per se.

Robert Rossney
A: 

Might be time for a job change (not a career change). You might want to pursue a different type of programming. Database, Embedded, Finance, etc.

Robert
A: 

8 years is almost a decade.

We have the saying "young and dumb" for our worker bees. They are willing to pull the all-nighter (usually unmarried and without children). I'm assuming you fit in this category when you started.

Have you considered moving into a PM / manager role?

JibberSki
+3  A: 

I have run into the same situation. I have done the following:

1) Taken a vacation- although this only helped relieve some of the stress.

2) Dip into other programming paradigms- if you are a back-end developer, try some web.

3) Change company. This is probably the scariest if you haven't done it much in the past or have a family or house payments. At least submit your resume to some of the online services like Monster. This will help you at least get a perspective of other types of jobs that are available.

4) Find a new job. Sometimes the best solution is the easiest: if it doesn't make you happy, stop doing it.

5) Start your own business: Do something outside of the norm either by starting a software company on the side or by doing something more straight forward- like retail.

Klathzazt
+17  A: 

First, someone suggested you get a physical. Do so for sure. It's amazing how much a change in our body's chemistry can effect our overall attitude toward things. Your slump might actually be a physical issue.

Second, exercise is always a good idea. It's hard to maintain your spark for anything if your body is breaking down around you. While human beings do age, most of the effect we associate with "aging" are actually caused by "wasting." Focus equally on cardio workouts and muscle building.

Third, get enough sleep. Don't think that all-nighters are what defined you as a "passionate" programmer. What you could be feeling is the result of years of neglect.

Remember when I said it's amazing how your body can effect your attitude? If your passion for programming was causing you to hurt yourself through sleeplessness (which amounts to self-abuse) then it's in your body's best interest to make sure your energy flags by the end of the day so you get in bed. It's a basic survival mechanism build into us at the lowest level: maintain equilibrium.

Finally, every person I know with this sort of passion for programming (myself included) are actually fascinated by problem solving. Chances are you've done the equivalent of going to the gym 5 days a week and only doing curls. It's time to work some new muscles.

You need to start engaging in problem solving in entirely new areas. Work the same general part of your brain but do it in new ways. Personally, I love studying psychology, abstract mathematics, and sociology.

By giving your love for problem solving a more rounded workout, you'll start to grow new "muscle" from the stimulation and suddenly you'll look at programming in a new way.

Jason L
+3  A: 

Could it be that you simply need more rest? When you are sleep deprived, your mind starts playing tricks on you. It can even deceive you into thinking something is fundamentally wrong with your passion/motivation, when all you need is adequate shut-eye. I've experienced this personally, and I've slept it off to return to my normal passionate self again.

A: 

I think you need to determine if it's programming or work that is burning you out. If you didn't have to work would you still be programming? If yes then maybe you just need to find something that interests you that is not 'work'. If no then maybe you just need to get away from programming for a while.

I've felt both ways. If programming is something you love to do then eventually you will get your spark back.

The thing that keeps me loving programming is working on my own projects. Coming up with ideas for web sites and seeing them through from start to finish is what is keeping things interesting for me right now. Having to only answer to myself and users of the site makes it fun :)

metanaito
A: 

In addition to the suggestions everyone else has made, I highly recommend the book What Should I Do With My Life? by Po Bronson. It may encourage you to see how people outside our industry dealt with that question for themselves.

When got my CS degree in 1996 and started working, I didn't believe that I'd be able to spend my entire career doing just that. I'd heard often enough from my dad about various studies showing how often people change careers that I just assumed that in another 5-10 years I'd be doing something quite different. When I got to the 8-year mark as a programmer, I went into project management. It wasn't just that I felt kind of burned out on programming. I wasn't getting interesting work anymore at my company (thanks to a re-org that saddled me with a less-than-ideal boss), and I'd been preparing to do something different for awhile (I was nearly done with my MBA, and saw an opportunity to use it).

I spent nearly 4 years in project management or direct management of software developers, and found that the change of perspective renewed my interest in being a hands-on developer again. I don't know if you need that many years away from full-time programming to renew your passion for it, but I think a change in perspective will help you.

Others have suggested finding a new job, or creating a company. If you do that, be as clear as you can in your own mind about what you're looking for from the opportunity. When I changed jobs, I deliberately sought a smaller company, where I could see more clearly how things worked. Even though my title is senior software engineer at my current company, I've had opportunities to manage, to help with business development, and be involved in marketing, in addition to writing a lot of code. There are less than 30 of us, so nearly everyone wears at least two hats. A smaller company that really needs you to do more than one thing might be the right move for you to make, if your current employer just isn't measuring up.

Scott A. Lawrence
A: 

Get a good sleep. If you have any personal problem which keeps you depressed -- solve the problem or make up your mind to ignore it (simpler than you think).

And never stay late night to fix the problem -- it's much easier to find a solution next morning -- 9-to-6 all the way.

+2  A: 

I wanted to thank everyone for the helpful responses I've received so far. By reading through these answers I've realized that I do have an immense amount of 'other' stuff going on in my personal life (new baby, selling house, building new house) that is probably causing me to be overtired/overstressed and having an effect on my work.

Simply reading these responses has re-energized me a little bit and I plan to put a few suggestions into effect:

  1. A new personal project. I'm going to start a new personal project away from work that will allow me to have 'fun' programming and hopefully recconnect me with why I love to program in the first place.

  2. I do take my work home with me alot of the time. For whatever reason I feel that if I'm not working or advancing my career I'm becoming stagnant . This certainly can't be healthy and is more than likely a huge contributor to my rut.

  3. Excercise. This was reccomended and I definitely agree. I need to hit the gym to relieve stress and care for myself.

  4. Bood-sugar test. This is something I've been considering for a while, mainly because im a little paranoid. I'm only slightly overweight, but I dont eat well and I dont exercise so I'll have this checked out.

Unfortunately a vacation is out of the picture until the new year due to work/moving that will consume all of my time and with a newborn child it looks like extra sleep is going to have to wait as well.

DaveK
My sincere good luck with all that you have going on. :-) I'm sure you will pull out of the rut, it can just take time.
Frank V
When I had kids work changed from being my main focus in life to being the thing I had to get out of the way before I could go home and see them again. Don't underestimate the impact kids can have!
Valerion
+2  A: 

Move to management!?!! Great just what we need - another disillusioned ex-programmer manager. First get your mojo back, then contemplate a career change (if that's really what you want).

Some of low-impact suggestions:

1) I find a few weeks working on a non-coding job (requirements analysis, design, even writing user documentation or process definition work) is enough to make me really enjoy a bit of coding again.

2) If you haven't already, read Code Complete and that may inspire you to look at coding in a different light.

3) Of course, exercise and a life outside work are important too!

A: 

First, I take a break. I go to a movie or do some physical activity outside.

Also, to revive my passion, I read books on OOAD, agile thinking, software engineering, ... But I stay away from the computer. I did that back when I was studying physics. When I was depressed hitting my head against really tough problems, I would go read some vulgarization book on quantum physics, or on string theory and chaos theory. That reminded me how fascinating physics was (and still is).

What keeps me motivated day to day is listening to podcasts, I now have many many podcasts I listen to: .NET Rocks, Hansleminutes, stack overflow, sparkling client, Software engineering radio, Deep fried bytes, herding code, boagworld, killer innovations, Astronomy cast, polymorphic podcast, FLOSS weekly, Visual studio talk show, ... you get the picture... This certainly keeps me up to date with current state of the business and on what's coming.

Finally I have a personal project with Silverlight, EF, ... That makes me want to come sit down at my computer late at night. The day job is not that interesting, so I still have energy to spend on my own stuff.

devMomentum
A: 

From your post it sounds like you have a lot on your plate right now. Plenty of things to stress you. If you find that moderate exercise isn't helping much then maybe take your foot off the gas for a while. Listen to your body, if you start getting symptoms such as difficulty waking up in the mornings, mood swings, light headedness when standing up, very low energy levels or depression, you might be heading for burnout. The symptoms can be as a result of having been under too much stress for too long. This can cause your adrenal gland to stop producing adrenaline consistently and can also weaken you immune system.

I've been through burnout twice, the second time saw my kidney function impaired and through a compromised immune system I contracted viral pneumonia. As one of your respondents said, "Young and dumb", that's exactly what I was. Whilst I may be an extreme case, software engineering does require a large element of tenacity, it's this very quality that can cause you to self destruct if you don't know how to interpret the signals from your body and act on them accordingly.

Since burnout I've taken extended periods away from Software Engineering and have re-acquired my love for it. Absence makes the heart grow fonder.

Good luck.

Richard

A: 

I think there were a lot of good suggestions about how to get through the slump. But I just wanted to mention how I survived one.

Getting Things Done, by David Allen I'm sure that many people on SO have had some contact with GTD and it helped me stay productive even though I wasn't feeling productive.

This is NOT a permanent solution, although you may find it to be a permanent part of your life, as I have. It got so bad for me, I was in danger of loosing my job, just one more stress to add to the snowball.

I wish you good luck, and hope you follow up and let us know what worked for you.

Dan Williams
A: 

The previous answers lay out the basics: good health habits are key.

But there are other tweaks possible. It's not as drastic a change as picking up exercising or saying no to cola (which everyone should, btw), but these tweaks can have a positive impact:

  • Change your physical work environment:
    • tidy up your desk;
    • move it if you can;
    • get rid of your old dying plant and/or get a new one;
    • get a better chair;
    • etc.
  • Change your logical work environment:
    • if you program with a colourless IDE, get something better. Throw some colour in there!
    • if you still have the generic XP field as your background, change it now!
  • Get rid of distractions:
    • throw away your favourites to non-work related websites (SO is work related, mind you)
    • keep reminding yourself if you stray "how is this work-related? how does this make me advance?"
  • Take up a class or book that is not specific to your work, but can make you go beyond. Exploring new areas of computer science is what makes us all learn and evolve, not staying in the same spot.
MPelletier