top | item 8138556

I have a soul-crushing job and I don't know what to do

83 points| shubhamjain | 11 years ago | reply

I love programming and I enjoy solving good problems. Even though I am aware that there is some level of grunt work associated with each job but this one is just killing me.

Most of my job deals with adding CRUD functionality and bug fixes here and there. People don't seem to be tiny bit interested in doing things better. Our front-end developer chooses to re-implement everything from modals, alert boxes, to validation in form of horrendously ugly code because he believes his code will be more understandable to 'him'. The pay is not great and there nothing exciting associated with this job. In fact, out of 8 hours, I barely write code for 2 hours.

I only took this job in order to buy some time and create some interesting things but this job barely leaves me any time to do so. When I started looking for job, I didn't get good response from HN hiring / freelancing threads (maybe because I don't have a good portfolio).

I feel I should know modern frameworks like Rails and Angular to have a better appeal but it would take months before I get proficient in them and I have never been good at learning new frameworks for just the purpose of learning. I have no idea what I should do?

85 comments

order
[+] patio11|11 years ago|reply
Some times I think we are wired to believe we have to beg people's forgiveness for not being miserable. Medium term I'd suggest discarding this belief. Short term: on behalf of geeks everywhere, your local online watering hole hereby grants you permission to not be miserable.

Quit. There exist much better jobs out there. The hiring market for people with your skillset is the best it has ever been.

Level up. Portfolios are not, in fact, how most people get consulting gigs or jobs. This is believe due to availability bias by junior employees/consultants because portfolios are tangible and they have some sort of just world theory where the best gigs/jobs go to the people on the top of the ladder in programming skill. There is no one skill ladder. To the extent that there is, skill is not the primary driver of employment decisions.

P.S. The overwhelming majority of jobs are not in modern frameworks. Get good at Rails/AngulAr if they interest you or if you want to work in fields where they're the frameworks of choice. (Rails might be for Valley startups one of a few top contenders. I am insufficiently well acquainted with Angular to understand whether it is. Either way, neither will account for a full percentage point of LOC written in 2014.)

Also, if you haven't done so, I'd sit down and figure "What do I want to get out of my career?" and start optimizing for jobs which get you closer to those goals. This sounds obvious but some people don't do it. Do it. "A job which keeps a roof over my head and doesn't tax me mentally" is a perfectly valid answer but you don't seem to want that so don't continue to seek it out when you get up every morning.

[+] juliangoldsmith|11 years ago|reply
If a portfolio doesn't matter that much, how would you recommend a young programmer, without many connections, get a new job?
[+] cliffcrosland|11 years ago|reply
I second what patio11 said about the low prevalence of modern frameworks. Even at the most advanced startups I've seen up close, more of the software is built using custom frameworks than using "cutting-edge" modern frameworks. Adopting each new modern framework has a cost, and if a startup's problems are largely orthogonal to the problems the framework solves, adopting the framework is unjustified. I can remember only one job interview where extensive Rails experience was a hard requirement, but it was probably because the company's founding team wanted help learning Rails. You should be able to find many jobs where experience with modern frameworks is not a hard requirement.

If I were in your situation, I'd do two things. First, I'd write a list of 10 ideas to make my career really fun. This list would probably describe companies to interview at and projects to pursue. Second, I'd write a list of 10 ideas to make my current job really fun. This might require some extreme creativity, but it might be better to make a possibly futile attempt to enjoy the current job while working on finding the next one than continue to waste away in misery.

Here are a few crazy ideas that come to mind. Your ideas will be better:

1. Make a bingo board where each square is a common annoyance you encounter in the code. Share combinations of the bingo board with your co-workers. Give a candy bar to whomever gets bingo first.

2. When faced with an annoying task, set a countdown timer and do everything you can to finish the task before the time runs out. Don't let the bomb explode.

3. Stand up and do a fist pump every time you make an especially clever commit.

4. Listen to music that is fun.

5. Periodically listen to comedy that makes you laugh.

6. Think of the people you admire or respect in your workplace. Try to meet with them and learn from them. Give back to them too - perhaps by giving them ideas that you think could possibly help them in their projects, or introduce them to people you know who could help them.

7. Bring in snacks or some particularly tasty treats to share with your co-workers. It might help build some emotional connection and friendship.

8. Bring a bag of M&Ms and eat one every time you save a file.

9. Try working for an hour using only one hand.

10. If you're in an office setting where talking out loud won't bother other people, try narrating everything you do during the work day like how YouTube stars narrate playing video games. An immensely talented engineer I knew at an internship would sing rap lyrics all morning and swear vigorously at his machine when things went badly wrong. It was ridiculously entertaining.

Best of luck making your career more enjoyable!

[+] atmosx|11 years ago|reply
I have the idea that AngularJS is requested more and more. I thought it was kind of a "must have" skill.
[+] elsewhen|11 years ago|reply
Don't you think he should look for a job while he keeps his current job?
[+] a3n|11 years ago|reply
"I feel I should know modern frameworks like Rails and Angular to have a better appeal but it would take months before I get proficient in them"

The best time to plant a tree is 20 years ago. The second best time is today.

[+] DLarsen|11 years ago|reply
If you want to get your feet wet with some real work, I highly recommend joining the folks at assemblymade.com. They have a really neat platform for collaboration that will allow you to make real contributions to a commercial project. One of their most active projects, Helpful, is a Rails app and would be a great companion project to the typical self-taught track of learning.
[+] MalcolmDiggs|11 years ago|reply
Well put. Things you do today will set yourself up for mobility later. Consider continuing-education part of your job. For me, at least 25% of my time is spent on education every week. There's no end-goal, you just have to stay up on the technology to compete in the workforce.
[+] pessimizer|11 years ago|reply
Agreed. There's no way to get out of this, and learning new things is going to have to become part of your routine. Rails and Angular probably won't even exist in 10 years, so you're going to have to know the next thing by then.
[+] fuzzywalrus|11 years ago|reply
I had string of crappy jobs to get finally a good one. I worked at a dead end e-commerce company that's now defunct that provided its own in-house platform to sell to customers for e-commerce sites. It was miserable, everyone could see the company was on life-support, including the owners. The practices we used like editing code on live sites/servers was insanity. I forced myself to start using Git, making me the only one using version control and sneaking in best practices to hone in skills. I took what I could from the job to benefit me (taking on a project to make a mobile version of the platform). I hated the job as the work environment was toxic and it was affecting me outside of work. Even to this day, I have the occasional bad dream of being forced to go back to work for that company but having some sort of exit plan, even vague as mine helped enormously.

Picking a project and assigning it a tech stack is the best way I've found. Simply doing tutorials for the sake of tutorials takes superhuman dedication. My motivation grew also in parallel with the work conditions spiraling downward.

Long story short, I scored a job oodles better than the horrid job and make significantly more, and have happy coworkers and bosses that care. Plus, I've picked up a lot of skills here which I'd never been able to at my crappy job.

[+] 7Figures2Commas|11 years ago|reply
> I only took this job in order to buy some time and create some interesting things but this job barely leaves me any time to do so.

If your interest is in creating "interesting things," you should focus on the ways you can scratch this itch. If you go into your next job looking to "buy some time" you probably won't be any happier than you are now.

> I feel I should know modern frameworks like Rails and Angular to have a better appeal...

Software development is software development.

A lot of jobs, even at prominent/"hot" companies, primarily involve CRUD applications and mundane development tasks ("grunt work"). Proficiency in Rails or Angular might help you land a new job, but it's worth contemplating the very real possibility that the nature of the work at these companies won't be any more engaging to you just because your employer uses a framework du jour.

[+] moooffooom|11 years ago|reply
Wow ... this comment is so true especially in Germany.

Most of our Software Development jobs here in Germany deals with business application at is very boring and contains mostly mundane tasks. I have worked for some companies already and i really got to think the work is mostly the same boring shit!

At my current job we have a load of "slaves" from companies like Accenture, CSC and the like... they also report the same shits from a lot of other places :(

I really lost all hope ........

[+] agentultra|11 years ago|reply
I'm the worst for not taking my own advice but I've often heard it delivered to me in one form or another when I've been in these similar situations... so here it goes:

What do you like to do? Do more of that.

Easier said than done, I know. It comes off as an awfully curt way of suggesting that you throw out your entire life and reorganize it in a way that you can toy with your passions in pure bliss every waking moment. For those of us with families, mortgages, and responsibilities outside of work such advice seems useless.

But it's not entirely useless. You just have to do more of that thing which excites you. It won't replace the drudgery of your current job (or any possible job you can get thereafter). But if you aim to spend a few hours a week on it for the sake of being happy and doing interesting things you might find an opportunity to make it your thing.

Share your passion with others. Show them what you're up to. Aim to make a little progress each week. Keep it small. Finish one thing at a time. Don't leave dangling threads. Yadda yadda.

The flip side of asking yourself this question is that you have to be honest in order to make progress. You may not actually like programming. Or perhaps what you do like programming is so niche that there isn't an industry for it (notice how few postings there are for BF programmers?). It's okay to enjoy programming as a hobby. Maybe you're actually a carpenter in a world obsessed with gizmos and you'd be better off spending the majority of your days planing and staining wood. Fiddle with computers and neat programs at night. That sort of thing.

You're not living in a Kafka-esque dystopia. There are ways to get out of your rut. You just have to shift your perspective and be willing to do something about it.

[+] logfromblammo|11 years ago|reply
If your job is a soul-crushing vise, take your soul out of it and put it somewhere else. There are a lot of people out there that do something they hate to pay the bills. They get their enjoyment out of life by doing something else after clocking out. People at your work have no interest in doing things better because they already emotionally divested themselves from the job. Just pretend that instead of writing awful code, you're just serving customers at the restaurant until your agent calls about an audition.

Reserve your passion, creativity, and imagination for the people who care, even if that's just you. Don't learn anything based on what you think other people might want to know. Learn what you need to know to do what you love. If you can't somehow telegraph to a prospective employer that you can invest your passion into something, it won't matter what you know. Bitter, jaded, burnt-out people don't get nice jobs.

[+] shubhamjain|11 years ago|reply
You are misunderstanding my situation. The reason why people aren't interested in clever solutions is because they can't think of any. It may seem cynical but I have seen people out here working even longer than me re-creating something, not exploiting even basic tricks or automations.

Lately, my co-worker spent 15 minutes indenting JS files without realizing that it would 10s to use a code beautifier.

[+] otoburb|11 years ago|reply
Your sentence "[...] out of 8 hours, I barely write code for 2 hours" contrasts with the next sentence: "[...] but this job barely leaves me any time to do so."

I am probably misinterpreting, but if you wanted to buy some time I would have thought this meant accepting this job to pay the bills, and then outside of work hours picking up other skills to create some interesting things, which sounds like the right way to build up your portfolio and skillset, especially if you've put in your required 8hrs/day in the day job.

I understand there are family commitments or other activities that may take up time, but in light of your implied situation (i.e. having to accept a less-motivating job to pay bills and buy time), you may want to consider either pushing for a new framework at work (which sounds like an uphill battle), or looking for another job.

[+] shubhamjain|11 years ago|reply
The main problem is exhaustion. The queer thing about jobs out here is that in name "flexible timings" there is complete lack of schedule. Everyone comes around 11AM and stay till 7-7:30. I reach home by 8 and I am completely spent. Weekends are better but I don't feel I am progressing enough to have a good job.
[+] ChikkaChiChi|11 years ago|reply
I got addicted to solving problems. Every time I fixed one, I would get that little dopamine hit that told me I was doing a good job.

Then one day a buddy said, 'Yeah, but in your company there are problems that shouldn't need to be fixed.'

Completely changed my way of thinking and set me on the path to start looking for a new job.

[+] blisterpeanuts|11 years ago|reply
Maybe find an open source project that piques your interest, dig into the source code and start helping them fix bugs and add enhancements. If you work 8 hours a day, you have about 20 hours a week of free time, so go for it.

Log onto github.com and click the "explore" link at the top, to get some ideas.

Beyond that, realize that most people don't have ideal jobs. It can take years of hard work to get to the point where you can pick your job, or even better, make your own job.

Everyone's had soul crushing jobs before; just grit your teeth and get through this, whilst looking around constantly for the next opportunity.

As a friend once said, opportunities don't usually knock on your door. They lie there quietly, waiting for you to go out and find them. Best of luck!

[+] aurelius|11 years ago|reply
I was in a similar situation once. Here's the algorithm I came up with to get myself out:

1. Figure out what you want to do.

This is the most important step. You currently have a job, so you have time to really think about this and figure out a solid answer. The answer doesn't have to be an emotional epiphany where you find your so-called "passion", but it has to be a concrete goal. For me, it was more of a recovery of the idea that I wanted to apply my programming and computer science skills to interesting and difficult real-world problems. With that in mind, I looked at the place I was currently working at, and saw that I wasn't going to be able to achieve my goal there. So, I looked around and found another opportunity that was more along the lines of what I wanted to work on.

2. Figure out what skills you need to pursue your goal.

So, when I found the new job that I wanted, I interviewed for it, and got rejected. I asked for feedback, and I was told that my data structures and algorithms knowledge wasn't good enough. I suppose if I had followed my own advice, I'd have realized this before I applied. After stagnating at my old job, and foolishly taking a team lead position, my skills had certainly atrophied. However, the interview failure was exactly the kind of real feedback/wake up call that I needed.

3. Work on improving your skills so that you are ready to actively pursue your goal.

After failing the interview, and getting some feedback, I set to work rebuilding my data structures and algorithms knowledge. I bought a copy of Cormen, et al., and brought it everywhere. At work, I would go off and hide somewhere for an hour a day, and study some part of the textbook. At home, I worked on a core data structures and algorithms library in C. I'd get up an hour before work, and write unit tests or fix bugs. I'd use the evening to hack on new code for the library. I was pretty exhausted after work, and I had three kids, one of whom was only a few months old, but I pushed myself ahead because I had a goal, and I didn't want to be stuck in my current job any more.

4. Don't give up in the face of failure. Keep the dream alive.

After 5 months of study, and writing the data structures and algorithms library, I decided it was time to apply again for the new job I really wanted. I explained in a cover letter what I had done since the first interview rejection to address the feedback I'd received, why I really wanted to work at the company, and how I thought it lined up with my career goals. Within a week, I had heard back from the company, and scheduled another interview with them. Three weeks later, it was my first day on the job!

It was terrifying to apply for a second time. I had no backup plan. My current job at the time was starting to suck more, and I wasn't enjoying being a team lead, so something was going to have to change, one way or another. My life at home was exhausting, too, with the new baby and two other kids knocking around. But my wife was on board with my whole plan, and tried to give me the time to do the work I needed. It helped that we had friends and family who were struggling to find jobs - there's nothing like seeing other people hurting to give you a realistic perspective on your own life, what you have, and where your life should be going.

On the other side of all this, I've made it my mission to be continuously studying, cramming it in wherever and whenever I can. I never want to be back in that hole of skills atrophy. Also, at the start of every year, I make an assessment of where I'm at goal-wise, and I make a study plan for the year, including a substantial project to work on in my spare time that will help me get to where I think I need to be. Resist the urge to hop from one thing to the next. Focus on something, and master it before moving on to something else.

Good luck!

[+] nesyt|11 years ago|reply
Why was taking the team lead position foolish? Were there no benefits to accompany the drawbacks?
[+] klunger|11 years ago|reply
Not to sound harsh, but you seem to have an unrealistic expectation about how rewarding a given job should be. The _vast_ majority of working folk do it for the pay check, then clock out at the end of the day and proceed to the part of their lives where their heart resides. Think about all the folks who works in retail, or food services, or manufacturing, not to mention agricultural workers, dish washers, maids etc. The notion that your career should reflect your passion is classist nonsense peddled by career counselors in upper middle class high schools and psychologically seductive but ill-conceived internet memes. You have a job that probably pays higher than the median national salary and doesn't expose you harsh physical conditions or toxic chemicals on a regular basis. Have some perspective and be grateful for what you have.

That being said: If you want a job that it is personally fulfilling to you on a reliable basis, then you need to take some risks. I would recommend either 1) starting your own company (it is your baby so you will care) or 2) freelance consulting (so you can pick your work).

[+] fivedogit|11 years ago|reply
> "I have never been good at learning new frameworks for just the purpose of learning"

Could not agree more with this statement. When I get into a software project really deeply, my work ethic is insane. Obsessive. As I need new technologies, I learn and assimilate them quickly because I'm so motivated to get to the end point. There's never been a tech I've given up on when plowing through a project -- well, maybe OpenCV.

Anyway, I've tried, as the OP has, to teach myself Rails or Django or whatever on the side as a "resume builder" and have lost interest each time. I just don't care enough to learn the not-totally-necessary tech to a degree that would actually do me any good in a job interview if I'm not doing it as part of a passion project where it is required.

From the other angle, when I get an idea and want to build it really fast, I don't have the patience to force myself to learn a new language or tech when, fuck it, I can just do it in Java or whatever.

Catch 22.

[+] maerF0x0|11 years ago|reply
I think thats where side projects have to be something you care about. Scratch an itch whilst learning pet technology.

Ex: a friend of mine wanted to modify some data on his garmin GPS thing. He also wanted to learn Go and google app engine. A few weeks later he had resume items and the goal accomplished.

[+] lovelearning|11 years ago|reply
Shubham, I went through your blog and I'm impressed! It looks like you're a person with wide ranging interests. You seem proficient in combining concepts from core mathematics, computer science, practical software engineering and electronics, which in my opinion, is something only few engineers can do and fewer still actually do.

Use your creative energies, polymath skills, urge for perfection and your time, to build your own software ideas and perhaps make a business out of them.

Don't waste them on your employer's products or your fellow employees. If they like bad code, then let them. You too can lower your standards of perfection, and raise your level of tolerance. Empathize that perhaps their job is as soul crushing for them as yours is for you. Your expectation of perfection in others is the bigger enemy you have to conquer. Expect perfection from yourself, but forget about others. Good luck (from a fellow freelancer!)

[+] tryanother|11 years ago|reply
i could have written this. our "designer"/self-professed "front end guru" does everything wrong. everything. i've had to teach her what javascript callbacks, closures, constructor functions, and hoisting are. she's rolling her own "front end framework" (table-based layouts with a few breakpoints thrown in) and separates the code into dozens (dozens) of different CSS and JS files. i'm also getting paid shit wages. but i basically spend 90% of my non-work, non-sleeping time learning and creating things so i can have a portfolio. i don't have a CS degree, so i am taking OCW courses and MOOCs to fill in my knowledge gaps. i'm going to start building an app for a friend soon so i can put something on my github. i cannot rely on my "real" work to provide me with a meaningful portfolio. i recommend you do the same.
[+] LandoCalrissian|11 years ago|reply
It's maddening to hear stories like this. I'm a UI/UX Developer, and really I just end up doing most of the front end development for our team. One of the big things I focus on is making sure our conventions are clear and documented. Style guides are verbose and have code examples.

Part of being a good at frontend is bringing the biggest lift to the team overall and making their jobs as easy as possible. So many people will be touching your code at some point, so I go out of my way to make their interactions as painless as possible.

I think with frontend development in particular, it's really easy to get some people that are really unqualified. Hopefully this is changing, but I feel like a decent amount of people sell some serious snake oil because some of it bleeds into soft skills.

[+] fuzzywalrus|11 years ago|reply
Please tell me these are at the very least, CSS tables.
[+] forca|11 years ago|reply
I feel for you, I really do. I've also had a string of "crap" jobs where I felt I was not doing anything of value.

Remember, you should always be looking. If you have time, do some small bit of pro-bono work for someone, perhaps a non-profit. Add them to your CV. Solve an interesing problem for them.

Look at companies you admire in your area, see what interests you, and come up with a way to solve a problem they are working on. Present this to a manager over lunch. Tell them you fancy working for them and you can bring some skills to the table.

Like Yoda said, there is no try, there is do or do not.

FYI, I switched over to working for non-profits, and while the money isn't as much, the jobs are more interesting to me and I have generally much more latitude to implement what I think will work (for me, always OSS/Libre). It's a good feeling to know you are making a difference.

[+] ffpsx|11 years ago|reply
You are not alone. I am in a similar situation. Best advice for learning new platforms is to come up with something you want to build and then learn the new framework by implementing the idea using the desired framework.

My plan to get out of my rut is to build my own self-sustaining startup that I am more passionate about.

[+] kotakota|11 years ago|reply
Some of the points you're making dont seem to make sense. For instance you say you dont have time to make interesting things but then say you only program 2hrs out of the day. What are you doing those other 6hrs? And what about side projects outside of work?

Another key point that lead to crud work is a lack of experience. If your fresh out of school most job offers you'll get will be fairly crud type work until you've shown your able to handle more.

Education can also play a role in this. If you have a bachelor's or no degree experience will be your best friend. If you have a master's or phd you can generally get into some more exciting positions out of the gate.

Where else are you looking for work besides hn hiring / freelance threads? Those aren't even close to the best resources for finding great jobs.

[+] robbyking|11 years ago|reply
I was in the same situation for more than four years. The only reason I stayed for so long was at the time my career wasn't very important to me -- my main focus was my band, and even though it was infuriating, my horrible job afforded me the time and money to be able to focus on music.

When the time came for me to think about moving on, I did a few different things. First off, I went to udemy.com and brushed up on my framework skills. At the time I was a front end developer, so I too courses in jQuery and Angular.js, then took a refresher course in Java. From there I started doing volunteer development work for local non-profits so I could round out my portfolio.

After that, my job hunt was pretty easy. All-in-all my ramp up took about 6 months or so, and it lead to me getting a job that I love.

[+] cognivore|11 years ago|reply
Our first world problems are such a drag.

I think you can make most any coding job fun if you do it right. Are you interested in making things better? Adding CRUD? Bake in a better object layer to the data store. Front end developer a n00b? Just out do him with some nice Angular or jQuery on the next project. "Oh, I already added the UI stuff."

If you can't learn something just for the purpose of learning (and why are you putting that limitation on yourself - buck up) do it on your own time and then bring it to work. Make everyone else look bad. Make your employer happy. Then get good at the new shiznit so you can quit and get a better job.

[+] mediascreen|11 years ago|reply
I find that making everyone else look good is an even better way to improve your career. Colleagues will remember every time you helped them out and your bosses are usually more aware than you think.
[+] hipsterrific|11 years ago|reply
You make it sound so easy when it's clearly not. I've worked jobs where I was the only .net developer in a large enterprise and worked in a team where my teammate wasn't interested in growing.

It takes more than just gumsion to do what you're suggesting, what you're actually wanting to do is add more stress. Case in point, my coworker who wasn't interested in growing: I spent the better part of two months architecting out the service layers...only to have him f* it all up in a week. Refactor you say? Try refactoring code for someone elses work on top of your own.

He can try to outdo his coworkers to which he may easily become unpopular at work. Nothing adds more stress than pissing off coworkers and added more horridness to an already horrid team dynamics.

It's not easy to work in a crappy job. Your suggestions, in my opinion, sound more like wishful thinking.