The problem is, I've lost my spark and enthusiasm for the job, BUT, I can't afford NOT to work, and with 3 young kids, I have some pretty significant overheads to meet each month.
I still read HN and other tech sources avidly, so I still have enthusiasm for the industry, in fact, I dream one day of running my own successful tech business. I'm just finding the physical and mental act of programming for a living draining, having done it for several years, I'm in need of a change, and, if I don't change something, I fear I'll burn out.
So, turning to HN for some inspiration. What should I do?
So, here are somethings you can consider: Try finding work you're passionate about first, that also pays. Maybe work for a non-profit? Try to find a role that lets you expand from where you currently are, perhaps management, business analysis, marketing, design or whatever pet preference you have. The point is not to over extend a single skill. Consider less hours, I've personally found 30 hours a week to be tolerable. Relax that skill more often. Try working on different projects regularly, I work on different projects every 2-6 weeks. The change in pace & direction keeps me excited & interested.
Also consider: building passive income generators, you've been programming for 15 years (why isn't the code working for you?).
All in all, keep changing your angle until you're happier.
Just my two cents.
- Hard labour is hard labour. We (programmers) get paid a lot of money to sit on our ass. It may be mentally grueling but it doesn't hurt your back.
- I decided that $60,000 a year, which is good salary for a carpenter isn't a six figure salary.
So I had the option to go back as a programmer and make others money, or take a gamble and try to make myself a lot of money. I choose the latter and here, we are today.
What I've learned from my personal experience is we (programmers) have it kind of good. We get paid a lot to sit on our ass. If you think you are burning out, then take some time doing something else and I'm sure you'll find going back to programming won't be bad.
As long as you don't take programming seriously, then I really don't think you'll burn out. I like to believe I'm an above average programmer, and my salary has always reflected this, but if somebody said you couldn't program anymore, I wouldn't lose any sleep over it. I'm good at programming, but I'm not passionate about.
I would personally advise you to stick with programming but learn to disconnect from it. There are not a lot professions out there that pays as well as programming for the physical effort required.
However I think focusing on physical exertion is misguided. A carpenter may be out doing physical work all day, but his/her job requires nothing like the mental exertion of a programming role. A long day of coding is just as exhausting as a day spent climbing ladders and lugging tools, if not more so. And as one gets older, both types of exertion take a greater toll and require more recovery time.
So perhaps start thinking more about what you can create via software but viewing the writing of software itself as a just a way to create, that might change your perspective. Also maybe take concrete steps towards that technology business idea, there is never a perfect time for working on business ideas :)
You could also consider job role change away from programming to maybe a managerial/leadership role, you already have the experience.
In the mean time you could just wait for my company's product to mature :) it aims to be a developer tool for those who just want to build software products without necessarily being bugged down in technical minutiae. (check my profile for link)
1.) Data science : Learn about data mining, machine learning,computer visions,natural language processing etc etc.
2.) If not above then start diving into computer security. Learn about penetration testing,cryptography,forensic etc.
3.) Become a designer learn: UX,CSS,graphic designing etc.
You can keep your current job going fine and get the daily dose of excitement from any of the above item! This is what I have been doing.
I think design is awesome and I would like to do it at some point. I think having a programming background would help me a lot when doing CSS/HTML/JS/UX stuff.
It helped me find excitement. It did the same for Edward Kmett: https://www.quora.com/Reviews-of-Haskell/review/Edward-Kmett
There are a variety of fields that benefit from code-savvy people that are able to communicate effectively and that have just a little bit of initiative, namely:
- project manager -- there are a lot of definitions for project managers, but the simplest I think is the guy who sits between upper management and the engineers to ensure that project deadlines are met by removing obstacles for the engineer. As a developer, your unique insight here is in the ability to anticipate roadblocks and be able to remove them, as well as not having to have things explained to you three times before you can act. As a project manager, you'll be privvy to upper management's goals and directives earlier, be in a position to shape the project, and tangibly demonstrate how your contributions streamline the development process. Often-times, as engineers, we only hear "We need feature X", without an explanation for why we need feature X, and a lot of times, project managers don't communicate that downstream. Being able to understand the woes of engineering and the plaints of management simultaneously gives you an advantage to communicate effectively and deliver more efficiently.
- product manager -- Similar to but different than project manager, a product manager sits between the project manager or engineers and the customer or potential customers. The product manager evaluates customer concerns and helps shape the product or products by ensuring that the features you're working on will actually help improve the product's market position. What features are people asking for? What features are people asking for that are negatively impacting the ability of sales to sell the product? What features are people not asking for that they should be? What could make the product better? Those are the questions that the product manager seeks the answers to, and provides those answers to the rest of the team, then puts in a request for the proverbial "Feature X".
Etc., etc. There are positions that benefit from having a developer's mindset that aren't development. By your post here, I can see that you communicate effectively, so you have at least the minimal qualifications necessary that a transition could probably be easily managed.
There's so much depth, beauty and challenge to be found in language design, API design, architecture of scalable distributed systems, design of human and computer-friendly tools, refining one's mastery of various programming paradigms (working daily with Clojure and Haskell will keep you busy and interested for many years). Learning about OS internals, graphics programming, networking etc is mind-blowing. Find inspiration in the great work of those who came before like all the people featured in the AOSA books. If you ever reach the point where you've done everything you can as an individual contributor, you still have a lifetime ahead of you mastering how to inspire, coach and pass on wisdom to the more junior members of the team, share your shokunin-like fervor for software with them.
If it's the former, you could always try contracting for a while. A few potential benefits:
- You're only in the same organisation for 6-12 months so it's less likely to get stale.
- You'll earn more $/day so you can take more time out to pursue other interests, holiday, play with your kids etc
- It's a solid precursor to starting that 'successful tech business' that you dream about. You're less likely to break out and pursue that while you're earning wages.
Of course if you have a family to support then a lot will depend on your financial situation. But as another poster said you should be in reasonable shape if you've been a dev for 15 years...
Transition to a less demanding role, if needed, and look for other areas where you can contribute the result of your experience.
For example, if you have passion for *BSD, some linux distribution, or some other community software project you could contribute. You could start by fixing bugs and submitting patches.
OR, skip out on software development completely. Find a way to get more free time and then study a foreign language or learn how to play a musical instrument. Maybe the issue isn't what you are doing but what you aren't?
You may be considering you will be a "manager" in the future but I do think that only a bunch of today programmers will be managers or CTO in the future (a lot of politics in Spain). Somehow there are some people that are meant to be CTO no matter they age or experience, so don't trust you will be one.
So I started to think what do I wanted to do with my life. I considered two options: - Helping make the world nicer by learning the secrets of design: my mother and brothers are artists and I consider I have some potential, I have done some freelancing regarding this topic. - Helping the IT world to be more secure in an useful way: I was kind of a hacker in my teen years and I loved it but I started to work as a developer and I lost this track.
Long story short, I studied a MSc in Information Security and now I am helping the enterprise where I was a programmer to build useful security. The good things about the security world is that: is an art, is quite challenging, it involves working with people, is a growing industry, you can program from time to time and... It is cool! =D
I continue programming but as a hobby and I find it much more rewarding.
(Any grammar corrections are appreciated since English it's not my mother tongue).
Stand in front of the mirror and ask yourself what you like to do. I, for example, started exercising more after trying it and stopping because of life matters. Choose something that you like and make you feel you're experiencing a new thing. Don't learn another programming language like everyone on HN is suggesting. You know that saying about when you're a hammer...
Just because you are good at something doesn't mean that it's enough to fulfill you. It will make you proud of yourself for a while but then it'll start wearing off. You need something that makes you feel in touch with your purely human nature that is different from your daily job. How about painting, cooking, exercising, stamp collection (a dying hobby), reading poetry (I won't do that but you might), theater, dancing lessons, gardening, sightseeing, photography, magic tricks. Don't pick something like your job.
Do whatever you can to reduce your overheads. A few years of sacrificing to cut your overheads can be hugely beneficial to your overall happiness. I know this is easier said than done but, if you have any debts, get rid of them as soon as you are able to.
>I dream one day of running my own successful tech business.
Have you considered starting something in your spare time? Do some freelancing, build some gizmo and release it online or whatever takes your fancy. You don't need to spend any money to step out of the employee box and to start developing a side income or outside projects. If anything it helps with saving money as you find yourself spending more time tinkering instead of being out spending money.
I don't know what you do exactly but I had great fun doing onegameamonth.com I did this free course https://www.coursera.org/course/interactivepython then started making crappy little games and had great fun doing it.
Go check out coursera.org, edx.org and udacity.com. Take some free courses in whatever amuses you. Either something technical to broaden your skills or something totally unrelated just because you want to.
I read this in the context of his children being his overheads, and I chuckled.
My suggestion off the first <br> would've been take a long-long break. But then, you mention, its not in the picture. You have a family.
So take a break anyways. Break from your routine. From your job. Not right now, but lay the first stones.
Find good freelance solutions. 15 yrs in, I'm sure you wouldn't need elance, freelance.com to get you work. You must be having some connections. If you feel you don't try to figure that out.
So that in the next couple months, you are ready to put down your papers (assuming you are at a regular job). That is the break you need. A break from the norm.
You say you still have enthusiasm for the industry, that is great after 15 yrs. I'm ~5 yrs in, and pretty sure I'll burn up quicker than you. Feel really great about it. And try to channel it.
Another route. Have you tried getting a little off-hands. A tech-lead, architect sorts roles. They are usually balanced with you typing code, and not. Pays better. With your source of inspirations, I'm sure you would love that role. It has its own challenges, but they will be a different kind to you...
And yeah, try to venture into newer areas in your free time. If you are a network engg, try web dev. If you're a web dev, try machine learning.
Long term advice: Look to join a startup, a fairly stable one, since you need some kind of stability. Challenges there are multi-fold and multi-dimensional. That should keep you hooked on for a good few years.
Example from my own life (don't steal it :P) - I'm passionate about nutrition and exercise. I'm currently making a website that vastly simplifies the process of getting in shape and eating healthily. I hope to launch within the next month or so. Thinking about how people's lives will be improved by being a healthy weight and being physically strong really motivates me to open up sublime and write code.
Second suggestion: How good are you with people? Look into project management, particularly a technical role. For example maybe you lead a team of devs and make decisions regarding backend scalability for a growing startup.
Good luck!
Show me a passionate, mature software developer and I'll show you someone with a good social work environment.
Oh, and never underestimate the power of a real vacation. I'm talking two weeks swimming and reading (non-tech stuff) on a beach somewhere, never fretting about your real-life and tech problems. Really, how many of us ever experience such relief?
a. Get a new hobby. I have realized that having an out-of-work hobby helps your work life immensely. I don't mean a hobby that you'd go to only when bored or on the weekends, nor something 'easy' -- so listening to music, or watching movies or reading a book don't qualify for what I am recommending. It has to have a steep learning curve if you want to get a high enough level of satisfaction from the process that it improves your overall sense of well being. Learning to draw/sketch, learning to play a musical instrument or juggle or scuba dive would qualify.
b. Teach. The easiest way to get into this is get involved in your local User groups and share what you already know. Do it for free. I assure you this too will indirectly have a phenomenal affect on your work life. Also checkout http://software-carpentry.org/contrib/training.html ...which leads me neatly to my next point...
c. Challenge yourself and get involved in a writing software for a completely different domain. I see way too many software engineers limiting themselves to writing code and creating products that are consumed by other software engineers. That gets boring after a while. Write code (or quite your job and join a firm that writes code) for scientific research (think physics, phrama, genetics ...etc) or for automotive companies or for hospitals ...basically move out of the domain where software is the central/critical component (eg: web or software solution providers ...you know what I mean ?)
d. Just take a break. I don't mean a long sabbatical. Just a break. You don't even need to do something special with your break, ie: you don't need to travel to exotic locations -- you can just take a break to seriously pursue (a) above.
Hope this helps, cheers,
[1] translation: I've held positions in pretty much every aspect of delivering software - userspace programming, systems-level programming, web dev, Level 2 & 3 support, system administration and ^devops^ (whatever that is)
I'm not really a developer/programmer; I'm sr. network engineer at an ISP and I manage all Linux servers; the only code I write is that which makes my own life easier. Prior to this, I was in a similar role at a .edu.
A few years ago, I was getting burnt out pretty bad and although there were a few other contributing circumstances, I decided pretty spur-of-the-moment to quit my job and move to either Seattle or the Bay Area. I desperately wanted a change of pace.
I turned in my resignation two days later, on a Friday, and gave 'em two weeks notice. At noon the next Wednesday, the head of H.R. (also a good friend of mine) told me I could go ahead home (they did this pretty much anytime someone decided to leave, although they always us for the remainder of the two weeks).
That was at the beginning of May 2011 -- just when it's really starting to warm up and turn into summer here. Instead of taking care of personal things and tying up the loose ends I needed to before I could move 2500 miles away, I spent pretty much every day on the bike (motorcycle) or the boat and every night at the clubs (I live in a college/party town). I never got around to taking care of my personal business so that I could move.
At the end of October, a guy who followed my blog e-mailed and asked if I was looking for a job -- a company he occasionally worked with in my area was looking for a new head network guy. I wasn't really looking but I agreed to talk with them and gave him the okay to pass along my contact info. Shortly afterwards, I got an e-mail from the owner saying that they really needed someone who had extensive knowledge of and lots of experience with Cisco and Juniper gear. Ironically, I was attending an event in San Jose then and so I got to reply with a cocky "Yeah, I'm actually at Cisco right now and I'll be at Juniper tomorrow" e-mail.
Anyway, I started working with them shortly afterwards. I didn't really want to have to work -- I had gotten used to all the free time I had every day -- but I was actually starting to get bored (and I was starting to forget things). While I was doing pretty much the same work that I had gotten burnt out on, it was a different environment with different requirements than what I was used to (old: EDU, new: ISP) and so it was quite interesting and had different challenges. They had grown the ISP from a very small company into a decent size organization. None of the technical staff had any formal education and had pretty much learned as they went along. Because of this, they had huge holes in their knowledge but weren't even aware of it. Things hadn't been designed properly and best practices were a foreign concept. They made managed to make it this far but they were starting to hit the point where their environment wasn't scaling any more and major changes were going to have to be made -- nearly the entire network needed redesigned. This was gonna be a huge project and is exactly the kind of stuff that I like to do. I love a good challenge and especially enjoy being able to finish up a major project successfully.
Several months ago, after nearly two years, I noticed that I was starting to burn out again. I wasn't really enjoying my job anymore and was beginning to dread working. As the OP said, "I'm just finding the physical and mental act of programming for a living draining" (not programming in my case, but very similar). Instead of working from home occasionally, I started working from home all the time -- I didn't even want to go to the office. I was still getting work done and making progress on my projects but, like you, that spark and enthusiasm was nearly gone.
At the beginning of October, right as it was really starting to get to me and I was beginning to seriously consider leaving, I was involved in a (head-on motorcycle vs. Jeep) crash, suffered some pretty major injuries (two broken wrists, broken leg, messed up ankle, ...) and was gonna be out of commission for some time. Fortunately, the systems that I'm responsible for are fairly resilient and so we haven't had any major issues while I've been out (the biggest problem happened just last night -- a hardware issue worked around by shutting down a link).
I've done a few minor things recently but haven't done any major work since my wreck. It's just been the last few days that I've started catching up on e-mails, looking back over my previous notes, and brainstorming. I've created a number of tickets for myself and have been trying to mentally prepare myself to get back into "work mode" -- as much as I enjoy not having to work every day, I'm starting to get bored again (I can only visit HN so many times a day before I've read everything of interest!). Besides, my bosses and co-workers have been very understanding and amazingly patient but I'm quite aware that my absence is making things hard on everyone else.
I realize I'm rambling (sorry), but I can certainly relate to the burn-out. Part of it is probably because I don't often take vacation time -- my recent time off due to my injuries is the only time off I've had in the two years I've been at this job -- and even when I do I almost always end up doing work of some kind. So, for me, the last several years have basically been: work my ass off, get burnt out, a few months of not working, get bored, work my ass off, get burnt out, ...
Wash, rinse, repeat.
Unfortunately, I don't have a good solution for you (obviously, I can't even find one for myself!) but hopefully you'll figure something out before you do get completely burnt out. I don't have any children, fortunately, or I wouldn't have been able to just decide "hey, I think I'll quit my job and move across the country!" one day. Luckily, I was in a good position financially, too, or I wouldn't have been able to do that; at that point, having to continue at my job would've been quite depressing.
I am slightly afraid that, once I start working again, I'll quickly descend into "burn out mode" again. I've been trying to remind myself how excited I was when I first started at this company. I had an unbelievably large project ahead of me (along with lots of smaller ones) and it was going to be a huge challenge, but I was excited because I was going to get to redesign and rebuild our entire environment (multiple datacenters, tens of sites, dozens of links, replacing Windows servers with Linux) from the ground up, with the flexibility to do things "my way". It's helping, somewhat, and I'm looking forward to diving back in head first. There's so much I want to do -- and actually have the freedom to do -- with our infrastructure: make things more reliable and stable, more scalable, and offer services that we haven't been able to before. I really do have my perfect job. Even so, I haven't been able to conquer the "burn out". For me, I think a lot of it simply hinges on that whole "work/life balance" thing and I need to remember to take some off and get away every once in a while.
Sorry for the rambling wall of text. Good luck to you, OP.
(I blogged about it here: http://tojans.me/blog/2013/03/30/freedom-learning-stuff-doin...)
See a sleep doctor and get a sleep study if they agree to it to see if you're getting enough good sleep (depression is often confused for "burn out", and is pretty reliably caused by sleep deprivation, which is pretty reliably caused by small children).
It'll be also a good way to learn a new language or framework if you don't know Java, Objective C, or Cocoa.
I despise programming, but I love creating things and which is why I see myself not as a programmer, but as a product developer...
Now to find a job that pays for design + code + product development....
I don't give a rat's ass about technology, or which hot javascript framework or build tool I should be using. That stuff is boring.
I care about building products.
why dream? just do that now. if you fail, do programming again.
Ah, boasting disguised as a response.
> I don't even want to work with you.
And a really cruel, personal insult to finish off with.
This sort of attitude needs to end. It absolutely infests tech sites.
In some (many?) jobs, no there isn't. The work can become extremely repetitive and mundane, while still requiring enough physical and mental energy to make doing more creative programming in your spare time look unappealing.
It's a real problem, and not necessarily an indicator of the inherent passion of the person experiencing it.