I felt obliged to comment because I feel I know what you are talking about and I also worry that much of the advice posted so far is wrong at best, dangerous at worst.
I am 42-year-old very successful programmer who has been through a lot of situations in my career so far, many of them highly demotivating. And the best advice I have for you is to get out of what you are doing. Really. Even though you state that you are not in a position to do that, you really are. It is okay. You are free. Okay, you are helping your boyfriend's startup but what is the appropriate cost for this? Would he have you do it if he knew it was crushing your soul?
I don't use the phrase "crushing your soul" lightly. When it happens slowly, as it does in these cases, it is hard to see the scale of what is happening. But this is a very serious situation and if left unchecked it may damage the potential for you to do good work for the rest of your life. Reasons:
* The commenters who are warning about burnout are right. Burnout is a very serious situation. If you burn yourself out hard, it will be difficult to be effective at any future job you go to, even if it is ostensibly a wonderful job. Treat burnout like a physical injury. I burned myself out once and it took at least 12 years to regain full productivity. Don't do it.
* More broadly, the best and most creative work comes from a root of joy and excitement. If you lose your ability to feel joy and excitement about programming-related things, you'll be unable to do the best work. That this issue is separate from and parallel to burnout! If you are burned out, you might still be able to feel the joy and excitement briefly at the start of a project/idea, but they will fade quickly as the reality of day-to-day work sets in. Alternatively, if you are not burned out but also do not have a sense of wonder, it is likely you will never get yourself started on the good work.
* The earlier in your career it is now, the more important this time is for your development. Programmers learn by doing. If you put yourself into an environment where you are constantly challenged and are working at the top threshold of your ability, then after a few years have gone by, your skills will have increased tremendously. It is like going to intensively learn kung fu for a few years, or going into Navy SEAL training or something. But this isn't just a one-time constant increase. The faster you get things done, and the more thorough and error-free they are, the more ideas you can execute on, which means you will learn faster in the future too. Over the long term, programming skill is like compound interest. More now means a LOT more later. Less now means a LOT less later.
So if you are putting yourself into a position that is not really challenging, that is a bummer day in and day out, and you get things done slowly, you aren't just having a slow time now. You are bringing down that compound interest curve for the rest of your career. It is a serious problem.
If I could go back to my early career I would mercilessly cut out all the shitty jobs I did (and there were many of them).
One more thing, about personal identity. Early on as a programmer, I was often in situations like you describe. I didn't like what I was doing, I thought the management was dumb, I just didn't think my work was very important. I would be very depressed on projects, make slow progress, at times get into a mode where I was much of the time pretending progress simply because I could not bring myself to do the work. I just didn't have the spirit to do it. (I know many people here know what I am talking about.) Over time I got depressed about this: Do I have a terrible work ethic? Am I really just a bad programmer? A bad person? But these questions were not so verbalized or intellectualized, they were just more like an ambient malaise and a disappointment in where life was going.
What I learned, later on, is that I do not at all have a bad work ethic and I am not a bad person. In fact I am quite fierce and get huge amounts of good work done, when I believe that what I am doing is important. It turns out that, for me, to capture this feeling of importance, I had to work on my own projects (and even then it took a long time to find the ideas that really moved me). But once I found this, it basically turned me into a different person. If this is how it works for you, the difference between these two modes of life is HUGE.
Okay, this has been long and rambling. I'll cut it off here. Good luck.
> I am 42-year-old very successful programmer who has been through a lot of situations [...] Early on as a programmer, I was often in situations like you describe. [...] If I could go back to my early career I would mercilessly cut out all the shitty jobs I did
You know, it's hard to believe it, but at some point parents forget what it felt like being a teenager, and senior developers being junior. I know I'm going hard against the grain here, but I think you're better off doing as jblow did, not as he says.
Priority #1: survive, life gets better. In any organization that's large enough to have a pecking order, sh*t rolls downhill. Your CEO meets the customer's CEO and sees some fish on the office walls. He decides that an aquatic theme will increase sales, and passes it on to project management. PMs are slightly bemused, but figure out some web pages that can feature animated fish, and vet the idea with senior developers, who agree it can be done before the next trade show. The senior developer creates the fish_type, group_of_fish and fish_animation tables, grabs a few morsels that are fun to implement (new web technologies, yay!), and passes the rest to you. Congratulations, you're the junior developer at the bottom of the scrap heap! You not only have to deal with all the crap nobody else wanted, but will also explain it as lines of code to your computer. And, after re-implementing several times to address all concerns from meetings you were never invited to, it turns out the customer's CEO had borrowed the office and actually hates fish since choking on a herring bone 32 years ago.
How do you deal with all this? Well, maybe quitting will find you a better job as a junior developer. (Also, maybe an uncle you never knew suddenly leaves you his fortune.) But realistically, the way most people do it is the same as jblow's. You find ways to survive, improve your resume, and eventually move uphill to have more choice in kinds of crap you need to deal with. Sharing your hard-earned wisdom with junior developers will only be the cherry on top at that point...
You are presuming a lot about what my early career looks like. Really I never worked any jobs as bad as what you describe. Well, maybe the time I did data entry during my first year of college. The longest I ever worked in a highly corporate environment was 7-8 months, but at least at that time I was doing something at least slightly cool (a port of Doom 2 back when that was a new game, and with which I had full autonomy).
What you seem to assume is normal is some kind of career hell I would never want to be in (nor have ever been in).
I'm someone graduating from college in a few months, and this is one of the most striking things to me about a programmer's expected outlook on jobs. The career path of going and getting an internship, then becoming a junior developer, etc etc at some corporation is something that seems like it would suck the soul out of anyone that is even moderately creative.
During my first internship at a "normal" corporation, I felt exactly like septerr does now. I can't imagine following the career path most programmers go down, even if it is going to pay well. How did you avoid (or is it even possible to avoid) going through that corporate phase and skipping right to working on something that you may love but may harbor more intrinsic risk?
For me, it came from understanding what I did not know, and that to do high-level creative work you need a large base of background knowledge. I just took every job as an opportunity to learn and fill in the gaps in my knowledge, so that I'd be better prepared when I did strike out on my own.
I have gaps in between every job I've ever held, but those gaps are strategic. In them, I figure out what I really want to do, and whether I have the tools to do what I really want to do. I applied to YC's first class of S05, as I was finishing up college. I didn't get in. I figured that if investors wouldn't talk to me, I'd learn how to do a bootstrapped startup, so I went to work for a bootstrapped financial software startup. After 2 years there, I quit and founded my own bootstrapped startup, this time in Web 2.0 casual games. It failed too. In examining the failure, I figured that I lacked enough real-world experience to understand what the real markets were, I'd exhausted my pool of potential co-founders, and I had this continuing anxiety about how to do software development "the right way" and make programs that scale. So I moved out to California to work for Google Search. I'm on my own again, but I got everything out of Google that I hoped to get out of it (and more!).
If you're doing it right, each job is an opportunity to get a lot more than money. It's a chance to build technical experience, to challenge yourself, to look at how people with way more experience than you make decisions, to understand how an industry works, and to see how an organization fits together.
This is a very insightful comment, and I hope everyone reads it.
It reminds me of my favorite quote from one of the best books about building any type of "Professional Services" company:
"The health of your career is not dependent so much on the volume of business you do, but the type of work you do (whether or not it helps you learn, grow and develop), and who you do it for (whether or not you are increasingly earning the trust of some key clients). In any profession, the pattern of assignments you work on is the professional development process - you just have to learn how to manage it."
Work with smaller companies, or work with academia.
My first job was a 16 person company doing industrial automation. I was a first-year CS student. They let me write their TCP/IP stack. Second job, TA at the mechanical engineering dept. They needed visualization software for their work on the European space project. Third one, 10-person company writing one of the very first CD recording tools, with prototype hardware.
I was lucky. Each of them was willing to take what in retrospective looks like a huge risk on me. I was crazy and just said "sure, I can do this" to those jobs. I was learning a lot, fast.
But the beauty was, I had no career to consider. Had I failed, it would've been OK - when you're new in the field, that can happen. You'll have to find a new job, but nobody will be surprised if you have quite a few jobs when you start out.
That's when you take the risks, go for the crazy things.
When you're a decade or two (or almost three. Jeebus!) into your career, it's a different proposition. At that point, you get hired for the experience you bring. Taking crazy risks is something that most companies would like you to avoid. (I'm blessed. My current employer still lets me take risks. I just spent 4 weeks in a code base I never touched before and have things in production now :)
Did I love working on the things I started out with? Not really. But I loved being pushed to my limit. I still do. So how do you skip the "corporate" phase?
By taking a job that's outside your comfort zone. Your own startup or smaller employers are your best bet for that. But there are big companies that let you take risks, too.
Ultimately, it's a balancing act. How much safety in your income do you need, and how much risk are you willing to take? If you can push the risk side, it'll lead to more interesting jobs.
I would suggest that you don't try to "avoid" the corporate phase. Instead look for a company that makes a product which you find meaningful. Once you do, you'll likely be able to find creative avenues regardless of the company's size. You just have to go about it the right way:
First, you'll want to become a expert in your company's product domain. This will make your creative flashes much more relevant, and therefore more likely to see the light of day.
Second, start small. Use your own time to create a new tool which you know your team will find useful, and use the opportunity to teach yourself something new while you're at it. After a few successive wins you'll be allowed more and more leeway to apply your creative energies during company time, and the impact of your successes will grow.
Third, don't ask your manager for permission to work on Side Project X, at least not until you have somewhat of a reputation for delivering useful innovations. It truly is easier to beg for forgiveness than to ask for permission.
Lastly, give your colleagues a sense of ownership. People tend to be much more supportive of innovations that they feel they're a part of.
"After a few successive wins you'll be allowed more and more leeway to apply your creative energies during company time"
As someone almost as old as jblow who has worked across a wide gamut of different companies from very small to very large, this is sometimes true, but is by no means universal.
You would rationally think that if you are directly improving team productivity, customer satisfaction and the bottom-line that'll earn you more autonomy, but office politics are not always on the same continent as rationality.
It's also very easy to lose what you gained. Over a number of years I earned autonomy through a reputation of getting things done, to the point where i was making major product-level decisions and controlled who did what on the team. Then new management came in and decided to change course, and within a year or two my autonomy was reduced to almost nothing.
You have to remember that if you're not the owner of a company, you have no rights to the products that company makes. Whatever privileges you have you keep by the grace of the owners, and when they change ...
Ofcourse, if you're the owner you're unlikely to actually be able to write code all the time, having to deal with the soft parts of the business. The grass is always greener on the other side I suppose.
>The career path of going and getting an internship, then becoming a junior developer, etc etc at some corporation is something that seems like it would suck the soul out of anyone that is even moderately creative.
Maybe not exciting, but it never sounded "soul crushing". I never really expected to be having a blast at work; it's just a job. Should I be expecting more?
Starting a startup really sounds like more stress and annoyance than "fun" to me personally, after reading stories of them on this website. Are you sure the "more risk" one is worth it? Corporate programming work really doesn't seem that bad from what I've heard of it realistically, despite how derided it is here. Startups on the other hand sound like killing yourself by programming 13 hours straight every day for some company that's probably going to fail and getting below-market pay compared to the easier and better-paying corporate side.
Well yes, this is how corporations roll. It's nobody's fault - just human nature. But looking for a non-corporate job is not a solution for everyone, especially not for those of us who have bills to pay or personal commitments to hold on to. Plus, that's where the jobs are.
Non corporate job is not a solution? I've been freelancing for the last 3 years doing very good money and having great clients, doing everything I want, how I want them, convincing my clients to use cool tech and teaching them at the same time. There's a lot of other ways to get a nice resume other than having shitty jobs. All corporate jobs I had were total nightmares, I wouldn't go back for nothing in the world to be quite honest. Low salary, bottom feeding whores waiting for the next project to rapidly spit out to get more done faster every week with tons of never ending meetings, no thanks. I'll go back to my home office, with my coffee, music, cat and awesome living room to take breaks in.
"You have to have one" has been true since we lost our ability to photosynthesize, and it won't be false, at a minimum, until we replace all labor with robots and develop an effectively infinite energy source for those robots.
Knowledge is power. Take pride in surviving the toughest position in the corporate food chain and create opportunities to move up. If you become the boss one day and roll less sh*t downhill than your predecessor, more power to you then.
It's very possible to improve your skills on the side for a much, much better junior position. Resume padding and climbing the corporate ladder is not as effective as it used to be.
Do the least amount required in your current job to pay the bills, then, on the side, improve your skills. You don't need to climb up the corporate chain and suck dick until it's your dick being sucked.
The "Good HS grades -> Good college -> Good junior level job at a corporation -> stick at that corporation until you get a good senior level job" is firmly stuck in the 60s, 70s and 80s for a reason. The highest salaried jobs in programming are going to kids job-hopping from company to company in the Bay Area, graduating from average colleges (some minority not even having a degree) working at top companies who's HR departments publicly disavow the previously worshiped legitimacy of the GPA (word is, Google HR isn't even allowed to look at your GPA).
I recently glanced over this test Andreessen-Horowitz was giving out to recruit software engineers for some in-house development thing they were doing. In the description for the application, they said : "A resume is a plus, but you don't need to have it."
I know that, obviously, people with college degrees from top colleges have a higher rate of success in the corporate marketplace. Killer resumes and years of experience will likely get you very far. Sticking around at a successful company for a lot of years will likely get you a very respected senior role with really awesome stock options.
But the point is, for whatever very small but still existent minority, 19 year old college dropouts that have done 3 6-month jobs are still getting hired. Which means that a killer resume and corporate ladder climbing aren't hard-and-fast requirements anymore -- the only hard-and-fast requirement is merit. Obviously years of working within a single environment will get you a lot of merit, and obviously Google will start locations in Ann-Arbor and Pittsburgh just cause UMich and CMU are there, but that's just because Google values those areas for their high rate of merit, not for their pre-existing prestige.
And what OP is describing certainly shows that he is not properly developing his merit.
Now, in the 60s through 80s, there weren't really too many resources available to improve your merit on your own. So if you were in a shitty position you mostly just grit your teeth until you got in a slightly better position to improve your merit that involved less teeth-gritting and more enjoyable skill growth, and then used that skill growth to get into a slightly better position, ad infinitum where the base case is your retirement. So the best advice was to stick in a single corporate environment until you stopped being a junior and started becoming a senior because there was no more efficient way to develop your merit.
But nowadays, there are resources aplenty and much more efficient ways of developing merit. It's very easy to get cheap access to field-defining textbooks and online lecture videos and PDFs and ebooks and cheap personal computers with which to tinker around with and yadda yadda yadda, all of which can be done by any reasonably smart and dedicated but unexperienced young person, all of which is a much better use of said young person's time than climbing the corporate ladder until you got a job that didn't make you want to kill yourself.
So it's very possible to develop your skills and your merit without the prestige that you used to need in the form of a killer resume or long corporate history or stellar college grades.
So as long as you mastered your data structures & algorithms, your theoretical computer science, so as long as you mastered programming principles and can really say you're an expert in a language because you spent many man hours hacking away with that language at home, so as long as you know your OO, so as long as you prep up with the plentiful blog posts there are about mastering interviews (even for specific companies -- Steve Yegge has written a couple blog posts about mastering the Google interview, and for specific languages -- and I've very recently come across a very useful and thorough blog for knowing the ins-and-outs of Java for mastering interviews that demand expertise in that language), you can get an awesome job. Even if you never land a interview with Google or Facebook (because at that scale, so many hopeless hopefuls apply and you couldn't possibly scale HR with the rate of applicants, so you sort of have to rely on less-than-perfect prestige requirements like college degree from a decent college or networking with other good companies in the Valley. But I'm saying that the modern age allows for extremely low barriers for finding quality applicants and getting quality knowledge to become a quality applicant, and while there are certain institutions where you still sort-of need to reply on prestige, for the most part the industry is becoming a lot better) , you can definitely land a phone screen with an awesome software shop at least better than whatever shitty position you're currently in, and then you can get the interview after you display competence in the screen, and then you can land the job. And after that, it's all improving : improving your skill with awesome workmates in an awesome environment, and then eventually moving on to greener pastures at ... greener?... companies if it is your desire to do so.
Note that I'm not saying getting a more fulfilling job is easier by any means. Top companies will still only take top people. Just that, as barriers between companies and applicants lower and modern technology makes judgment of qualification more efficient, "top" is going to rely more on merit than prestige. And you do not gain any merit from staying at a shitty job.
This is an excellent answer. I've been in a similar situation myself: I eventually left. That was the best thing I ever did. It took me about a year to recover. Just as jblow, I'm a totally different person now (extremely confident, and I don't suffer fools).
Since then I've met some amazing developers who (unbeknown to them) helped me get past the mental block that the OP has described; people who could actually challenge me on a technical level, and who weren't jerks.
Take JBlow's advice, and I strongly advise you to take a month off of work if you can. You need that time to recover, recharge, and take a break.
I felt obliged to comment because 1) I agree with you 2) I feel like I'm doing what you wished you did when you were younger and 3) OP needs to read this.
I've been in jobs similar to OP. Sometimes I didn't agree with what I was asked to do and other times I knew I was being asked to do something simply to keep me busy. Fortunately for me, I had one good job to compare against my shitty jobs so I had a little more perspective. However, it was very easy to see everyone else slowly becoming content with their situation. As jblow said, they're letting their jobs slowly crush their soul and they probably don’t realize it.
I left an industry and a comfortable job to get into tech. I was excited. I moved to a new state. Then I ended up at the worst job I’ve ever had in my life followed by three months of unemployment. I never knew I could experience emotions like the ones I felt during that period.
I would talk with people who were the same age as me and it almost always came down to money. The money is nice here so I'll just do one more year and then go somewhere else. Guess what? They're still there. Another promotion, another bump in salary, and before you know it one year has turned into five. By then, leaving and starting something new has to feel very scary. I realized this could happen to me so I GOT OUT.
It is worth mentioning that you might feel some critical opinions about you. With today’s social networks, people can stay up to date with what you’re doing. Maybe it’s because I’ve only been out of college for two years but if you are the type of person who is actively trying to get yourself out of a bad situation, they’ll perceive you as unstable. You’ll spend your time looking for an opportunity that provides you with happiness and exciting work and they’ll think they’re better than you because of a title they hold at their job with promotions as predictable as holidays.
People have told me I wouldn’t be able to get a job if I kept switching jobs but I haven’t felt that. As long as you’re able to explain why you left certain jobs with valid reasons, it won’t matter - especially to the people who matter. Good employers will respect your decisions if you’re able to articulate why you left and what you’re looking for. Who knows? They may have done the same as you years ago.
> ...I wouldn’t be able to get a job ... but
> I haven’t felt that... it won’t matter - especially
> to the people who matter.
Be extremely careful with that! Expectations change, fast, as you age. I keep getting asked about my foolish/unstable years, even a decade+ after.
It is expected of a young professional to hop around a bit... it could be argued that you cannot truly mature until you have seen a couple of different versions of "this is the way things get done around here" meme. But if you overdo it, your perceived value will take a hit and it will take some work to overcome the "unwillingness to commit" perception.
One thing I have observed in this industry is that nobody gets any sound information on how to recruit people; specially how to find and bring in people whose unique strengths will benefit the most to the current team. Under this circumstances, most programmers default to look "people like me, only more so" which tend to form teams with a sort of hive mind.
The relevance to job hopping is that by doing so, you are ruling yourself out of any job whose hiring manager and/or teach lead have had bad experiences with it. Since you do not know what kind of person you will turn out to be by age 40, or what the job market is going to be like at any point during your multi-decade career, it makes sense to not burn any bridges if this can be avoided.
I would not go as far as to say that you should suck it up and keep a job that is making you hate yourself or your art. I had one of those once and barely lasted 4 months there. But if you make an habit of quitting every time there is something to bothers you, you might find out later on that memories are longer than what it looks like at first sight.
It depends. I've interviewed many people applying for jobs (more than hundred, I don't know exactly how many, I've lost count). Applicants come in many shapes and forms neither can nor should be evaluated in the exact same way, so I look at many things when evaluting them: Do they have relevant education? Have they done interesting work? Have they done anything interesting outside of work? Can I have a good conversation with them? Can they solve the toy problem I give them? Do they freak out when I push them beyond their zone of comfort with respect of what they think they know they can do? One thing I've never done though: I've -never- frowned on anyone for leaving a job they didn't like.
I agree with just about everything in your post. I've been on dead-end death march projects before, and I've also been on great projects which get ridiculous design-by-committee requirements. I think both are equally soul-crushing, and if you find yourself in that situation you need to get out quickly.
There are times in your career though when sticking through a difficult challenge is absolutely worth doing. Flitting from task to task because something is "hard" or because a particular feature is not obviously useful is just as bad. I've seen a lot of programmers who aren't "closers". They can get a project to about 85%-90% completion, but can't manage to finish those last few things to get something out the door.
So the answer, I think, is balance. You need to have a good picture of what you're working on and why. If you don't really believe in the project, or if it's being slowly killed with thousands of absurd changes, it makes those difficult periods really, really hard to endure. In those cases, get out, and get out fast.
I'll second your point about doing work that you believe is important. I'm nowhere near as experienced as you (only 28 here) and I've only got two jobs to compare, but I can easily pinpoint the biggest difference between the two: the first job was a corporate job that was a struggle to work at and be motivated at. The second (and current) job is one at a small organization that has me working directly with the people who are using my work. In other words, I'm talking to and working with the people I'm ultimately working for (the users) and that is the motivation I desperately needed and couldn't get at my last job.
OP: If it is at all possible, and I mean AT ALL POSSIBLE, try and find a job that you will be motivated at. There comes a point where you have to take care of yourself in order to take care of others, and it sounds like that point is coming soon for you. If you can't get out (or even just in the meantime), try and do something in your spare time that is fulfilling. It can be programming your own (unrelated to work) project, it could be getting out and enjoying nature, it could be something completely different (writing music and stories are some of mine). If you can't get that enjoyment during your work, try and get some of it on your own time.
> I burned myself out once and it took at least 12 years to regain full productivity.
Ouch. Took me two years. Six months completely out of work and then the rest slowly building up to full time. My workplace bent over backwards to take care of me, which was fantastic. I don't know where you are based, but you may not be in a country where the employee has this level of protection.
I just quit a job because the work was dull, unimportant and consisted largely in cleaning up other people's messes.
I'm replacing it with a job at a company with high values and strong ethics, a profitable and secure business model and it's a company I enjoy. I'll be working on a project from start to finish and code quality will be my driving force.
Quit your junk job and find a situation that matches your principles and values. Do it today.
How do you know this is the right job for you if you've just started at it? How do you know that you won't be bored at this job or you won't be cleaning others' mess, after a few days/months (No pun intended).
I vetted the company by talking with a friend who works there and by being mindful throughout the interviewing process. So I have a reasonable expectation. I had other great offers and I've worked in a lot of different kinds of companies so I know how to look and what to look for now.
Of course, there could also be a quagmire of corporate politics and sloth that won't get revealed for months. If that happens, I'll reevaluate periodically and open the door to change.
Even in the best case, I don't expect I'll work there for the rest of my life. 5 or 10 years would be fine and all I look for right now.
[Edit: added more thoughts below]
I think the crux is learning about yourself and what you want out of a job, and out of life. That takes time, it's a nonlinear process, and it's non-deterministic too. Make mistakes (embrace them, not fear them), be prepared for change (keep a few month's worth of cash in the bank), follow your dreams, and do the things you love as much as possible.
And try everything. Live life to it's fullest.
"Everything in excess! To enjoy the flavor of life, take big bites. Moderation is for monks." - Lazarus Long (RAH).
I think this advice, while well intentioned and not exactly wrong, isn't helpful.
The problem is young programmers tend to be hot headed and emotional about their work. This is anti-professional.
While being motivated is great, and important for big projects, every job is going to involve tasks you disagree with or think are a "waste of time." Part of being a professional is doing them anyway, and doing them without getting bent out of shape about it. That's not a sign that your soul has been crushed or that you've lost your love of programming (or whatever), it's a sign that you're mature and realize that work is work sometimes.
If your job is an unrewarding nightmare and you're miserable, then by all means you should find a new one. I'd go so far as to say if you're unhappy with your job overall, find a new one.
But if you have to sometimes do tasks you don't agree with? That's just normal. If you go running for the hills every time you have to do something you don't agree with you'll never be anywhere for long.
You embody something that bothered me for quite some time now:
Soul crushed programmer: The project I work on right now is a multi-year monstrosity, many bad decisions outside my control were taken, that I now must clean up… Except I can't, because next release ASAP, and budget, so I must rely on kludges. We also lose time to manual overhead (little automated testing, no automated installs, manual paperwork…). And by the way, much of my job right now is not programming any more. It's more like dispatching issues, customer support, and plan for the next release. I don't like nor am I good at this: I'm a programmer, not a manager or a tech lead.
Manager: I can't pull you out of the project. I honestly don't understand why you're under-performing right now, so it could be just as bad on the new project. Besides, it would be unfair to reward you, since you're under-performing.
Recruiter: You know, any job will require you to perform a few boring tasks here and there. Will you do those when they come up?
Wise old advice giver: You need to grow up and accept the world as it is (and maybe give up on changing the world, or your own situation).
(In case you didn't notice, this was a real situation with real people, and near-real dialogues. I was one of them.)
I think you get the idea: when someone complain about their "unrewarding nightmare" of a job that makes them "miserable", many people will either blame the victim, say it's not so bad, tell them to give up hope already, or use a subtler mixture of the three.
I hate to +1 such a great comment, but since I resemble that comment ;-) I have to.
Anyone in the same situation - please listen to the previous comment, this is such spot on advice. You have to love what you do or don't do it, the damage can really be huge. Don't think of 12 years as an exaggeration, I'm 10 years down the line and still recovering. And there have been breakdowns pills and therapy, just because I kept forcing myself.
Pace yourself, do what you love, and try where possible to smell the roses along the way.
If this seems impossible it's just because you're heading away from this goal right now, try to make it your goal. Not money, prestige or cool companies. And as it informs your decisions you'll start heading in the right direction.
I'm not completely there yet myself, but I'm along way away from the soul crushing that got me into a mess and many steps closer to a sane life!
Good that you could ask and share, a lot of these experiences are so common and it's so easy to think we are the problem. It seems to be something that comes with the territory or our general personality type who knows, but it really is common.
And finally, don't forget what happened to Boxer in Animal Farm - he believed any problem could be solved if he works harder ;-)
I'm sorry for not adding much value to the conversation but I just wanted to say that this was an excellent reply jblow. So much of this is spot on, particularly the parts about personal identity.
I've stayed in jobs where I became complacent and stayed too long. When I had finally had enough it was incredibly difficult for me to find something new because my skills were so specific that people couldn't see where I would fit. I will never do that again. If I have to switch jobs several times over the course of a few years, I'll take that over droning away and having my skills atrophy.
One thing that's kept me relatively sane are my side projects. My side projects have also made me realize I won't really be happy until I'm doing my own thing (or at least taking a shot at it). With a family though, I need the predictable income and benefits that a "regular" job provides. I'd love to take a few years off to pursue some of my own ideas, but it's just not feasible for me right now. Or I'm too scared/stupid to figure out how to put myself in the position to pursue my ideas.
It's tough knowing what you should be doing, but not knowing how to get in a position to do what you should be doing.
OP is totally correct for the most part. And knowing of his work (and having met him in 2007), he knows more than me about the passion it takes to get a project off the ground. That being said, there is the occasional point where a person needs to sit back and analyse their contribution to the product they are making.
The OP is a well-known game developer. Game development is very different from application or web development. I've known and worked with programmers who were brilliant but didn't understand that the feature they were working on was necessary for the client in question. That distinction is important; are you depressed because you care about the purity of the product, or because a client who actually uses said product demanded the feature?
It's important because then the question isn't about a programmer depressed, it's about a programmer who doesn't understand the product and for whom it was made, and that is an important distinction.
> More broadly, the best and most creative work comes from a root of joy and excitement. If you lose your ability to feel joy and excitement about programming-related things, you'll be unable to do the best work.
This is probably true. If you're happy with what you're doing, you're probably (but not certainly) going to be better at it than someone who isn't happy with it, all else being equal.
However, being happy with one's job is not a reasonable goal for most people. Or, to phrase it a little more flagrantly:
The idea that we need to be happy with our jobs is bullshit.
Among the programmers I know, many of them claim to love programming enough that they're happy to do it full time (AND work on side projects!) -- and to them, earning a paycheck is almost an afterthought; it's a nice side effect. The amount doesn't even really matter to them all that much because programming is just so much fun. (This is not a straw man -- I've personally listened to employees at Facebook, Google, and various Silicon Valley startups express this very notion.)
These claims are not easily proven true or false, but I suspect that most of them are false. I think that if a programmer represents himself as anything other than absolutely in love with programming, then they lose a competitive edge.
The truth is, I think, that programming is just a job. It has it's ups and downs, and it's certainly less terrible than many other jobs. Like most jobs, you'll be given tasks that you can't get out of and you just have to learn to deal with.
Not being in love with your job is does not constitute a very serious situation. It's simply a necessary evil for most people.
Perhaps you're one of the lucky ones who likes his job that you do it from a "root of joy and excitement" on a daily basis. But I think such persons are quite rare.
Excellent post, although I'd say 12 years to recover is less about the time since burnout and more about finding something new that gets your blood moving.
Once, when I was younger, I burned out completely on my club soccer team. I was 100% A-OK riding the pine and playing with blades of grass because I absolutely did not care. The travel sucked, I didn't like my teammates, I'd gotten sick of the coach and I didn't see the point.
Then, once high school soccer rolled around 2 years later, even though the game of soccer did not change one iota, the switch flipped back on and I super motivated again. I just needed a change of scenery (new teammates, coaches, fields, spectators), I guess.
So I'd say if you think things will get better once the current assignment is over, stick around. If not, move on to something that gets you excited. Life is too short to do otherwise.
Amazing answer, that last paragraph about feeling bad about yourself is exactly how I've felt. I've been working in agencies where you've been producing other peoples ideas and dreams but haven't been working towards anything I truly care about or believe in.
When I worked in-house, I was massively productive, agencies I've just fizzled out and now feel that boredom and malaise. I've been offered an amazing in-house opportunity that I've been ignoring for a while now, I think this has spurred me to a decision. Thanks again!
To add to this, one thing that often doesn't get enough attention is that the majority of the best developers tend to be artists (or at least artisans). Most often this fact is unappreciated because most of the artistry of software is invisible except to the people working closely on it. Also, when looking from afar or when looking close up for only a moment the work looks mostly technical and mechanical. But people ignore that the same is true of artistic works, because we can see the outcomes more clearly so we avoid being misled.
Many times I've seen developers getting burned out because their management treated them like factory workers or, worse, cattle. Often what happens is that some of the better devs start leaving and then that creates a cascade where the working environment just gets worse and worse for everyone else (fewer good people to do the work so more work and more stress for everyone else, and fewer coworkers you enjoy working with) and more and more good people leave.
What you say is totally true about working on projects you care about. That's always the way it will be with artists. If you want to work on something that you don't care about, you can, but you won't be able to do so at your full capacity. You'll need to disengage with it enough to keep it at arm's distance, to disinvest much of your self from it. That too can be perilous because it risks becoming disinvested from development as a whole and losing your passion entirely.
> I would be very depressed on projects, make slow progress, at times get into a mode where I was much of the time pretending progress simply because I could not bring myself to do the work. I just didn't have the spirit to do it. (I know many people here know what I am talking about.) Over time I got depressed about this: Do I have a terrible work ethic? Am I really just a bad programmer? A bad person?
I never thought about it that way, but this resonates with me. I recently ended a job at a pretty big company and I often felt like you describe. At the time, I kinda shrugged it off as normal; after all, weren't office jobs supposed to be soul-crushing? Plus, maybe I wasn't that good anyway. Maybe my team leads were right. Maybe this was just my role in the corporate ladder. I joked with my friends about how I was just mooching off the company, how a dog could do my work, but it felt kinda shitty and it was hard to care in that environment.
The difference between that and the passion project I'm working on now is striking. It doesn't feel like work. I can stay up coding until 4, 5, 6 in the morning if I really want to see the fruits of my labor. (And I often do.) I actually look forward to pulling out my laptop. I have enough good ideas to keep me busy for the next few years. And most importantly, I'm finally getting to the point where I can prove myself creatively.
(On the other hand, it was one year of great money for not too much spiritual trauma, and now I can travel the world and work on the good stuff for a couple of years without worry. So for me, definitely worth it.)
Treating like a physical injury is absolutely the right thing to do. I had a job that took me almost two years to recover from (while at the next one which was fantastic). I almost felt like I lost myself at other and wondered if I wanted to do tech at all. I now see it was just that one place.
I agree and it's a much better and longer answer than mine. Then I realized who you are. Off-topic, I probably speak for many when I say I am glad you found this path for yourself - because you make some amazing art.
This is very good and very solid advice. I know exactly what you are talking about. In hindsight, it is pretty obvious. At the start of a programming career, it is easy to feel the wonder, because there are so many marvellous and great things out there. I remember how excited I was about Haskell for example, about 15 years ago. But after 10 years or so, you have to start working on projects you really care about and which keep that sense of wonder alive. Finally, you have to work on projects that you dreamt up yourself, and hopefully YOU will become the source of wonder.
> In fact I am quite fierce and get huge amounts of good work done, when I believe that what I am doing is important. It turns out that, for me, to capture this feeling of importance, I had to work on my own projects (and even then it took a long time to find the ideas that really moved me).
This is dead on. Very much reminded me of a slightly sensationalized article I read a number of years ago:
> I burned myself out once and it took at least 12 years to regain full productivity. Don't do it.
This is interesting to me -- I've been seriously "burned out" at least three times, and each time it's taken me about a month at the right job to recover. We'll see the next time, but I certainly hope/expect it will take a month or less again.
This is a great answer, but what are the actionable takeaways form this? You say you had to "work on your own projects". Are you encouraging OP to go do their own thing and avoid working for others again? Is that what you did? Are you saying do your own projects on the side? I feel thats can be even more soul crushing.
Yes, I mean I have to be doing my own projects 'professionally' wherein I decide what is being made and how it is being made. Not working for someone else, because that someone else is not going to have the same kinds of goals that I would have.
There may have been some jobs out there where I could happily and productively work, but I don't know, because I never encountered one.
So how do you handle the mundane / repetitive parts of your own job? Let's say you decide you want a decidedly western theme for your new project and want the assets switched over for a reason your employees/peers don't understand or see the full scope of?
The personal identity paragraphs literally feel like they were directly removed from my head. So relieving to realize I'm not the only one who feels that way. The level of self doubt that can encroach on you when you are actually just doing the wrong job is really frightening.
A hard thing I find in these situations is when people try to coerce you emotionally. "This a very critical job. Deadline is nearing. You can get anything you need". I find it very tough to refuse in such a scenario.
Perhaps take your own emotions into account, and weigh them against what you're being asked to do? Abstractly: If I do A I'll feel good about A, but terrible about B. If I don't do A I'll feel bad about A, but fantastic about B. Pick the one that's most important to "you".