Hacker News new | past | comments | ask | show | jobs | submit login
Programming is a Terrible Job (pastebin.com)
479 points by ibadeyes on Sept 30, 2013 | hide | past | favorite | 285 comments



I'm approaching 20 years of doing this and I would love to have 20 years more.

What this really sounds like, and the message gets muted by the complaints, is that the author wants you to find a part of software that interests you and follow that path. I agree 100%. Some people love front-end Javascript websites and all that entails. I find it painful. I still do it when called for but my true love is in low level protocols, embedded programming, hardware, and anything else that let's me get to the "bare metal". It too can be mundane and painful, but I find joy digging through RFCs and implementing them, pushing and popping from the stack, handling memory, and a bunch of other stuff that others might find completely boring.

So I do agree - it can be boring and you should always be looking for something you truly like doing. There is so much in this industry, the world is wide open to you.


10 years here, and loving it too!

the best part for me is, the more i learn the better it gets. And the longer i do it, the bigger the variety of solutions and ways to get things done.

Sure, will get stuck on a crappy project from time to time, which could last for 1-12 months, and it may not be a blast, but i know it's temporary, and the more senior i get, the more say i have in making it suck less.

It took me many years to learn this, but you don't always have to do what you're told (if you know you can do it better). If you're being pressed to get something done, you'll be inclined to cut corners and hack it. But in the end you can just do it the right way, and tell your boss afterwards. The trick is to do it in the same time it would take to hack it. If it means working nights and weekends? so be it.. in the end, it's your name and showing such ownership will eventually give you a bigger voice, and people around will know who produces quality stuff. And if you're working for someone that will not be happy about you doing it the right way just because they told you otherwise, you don't want to work for them in the first place.


7 years.

KILL ME


Oh how I can feel this.

After 3+ years of dealing with banker types when I first started (1991ish), I wanted to leap off the building and land on their fancy cars. :)

Without a doubt, the tightest fisted, greediest and most short sighted people I've ever dealt with. Save 15 minutes here and waste months in the future when you've forgotten how this hack works. Get it out now.

Then I had a few dream jobs. It seems to go in cycles. Get used to it or change professions.


my current job is so boring but the money is so good ~_~

will probably have a 2-3 month break to hack on some project and return to contracting afterwards, hopefully somewhere more interesting.


It's easier to ask for forgiveness than to ask for permission? :)


Totally agree. I've been writing software for money since '98 or so. The joy for me has always been solving problems at all levels. First, understand the business and the problem. Next figure out high level solutions that hopefully involve software. Finally get down in the details and write said software. Over the years I've written systems using a variety of languages and it is still fun. Heck, once I started using git (a godsend to someone whose first SCM software was Visual SourceSafe) I actually enjoy code wrangling.

When people ask what I do I always tell them how fortunate I am to have stumbled into something that I love doing, can make good money, and am okay at doing it.


> The world is wide open to you.

In the United States probably. The author doesn't sound too old, and says that he/she got access to the internet much later. Which means the author is probably from the Middle east or China or South Asia. The work culture there is not as open as in the west. Daily job means monotonous routine work. What excited him about the prime numbers problem was the novel aspect of it, and the fact that he was in control. Later, in his/her day job, that was no longer the case -- someone else was making the decisions. Until these nuances trickle into daily jobs, most people will sooner than later burnout.


Then move. To a different city or a different country. It is a very difficult thing to do but you shouldn't be miserable for a third of your day!

Get yourself some good skills and apply to jobs you really think you want instead of whatever the local industry has to offer.


Yes, though actually moving isn't all that hard compared to all the other things you do one a daily basis.


And my interests are the other way around, and I try to explain to people just starting out that there are so many different kinds of opportunities within our industry and they can easily move around and try new things over the years without the fear of getting forever stuck on work they don't enjoy.


Circa 15 here and still fascinated, too. I think it's sad that the author of the paste hasn't found a commercially supportive environment for their interests. Maybe they should fall back on themselves for awhile (take a non-coding job, code for interest on a project they enjoy in a part-time context with some potential commercialization strategies). The comment right at the bottom of this page is equally correct: noobs gonna noob.


Of course the day job isn't always fun. That's why it's a job and that's what we get paid for.

But: I f'ing love my job as a programmer. There is nothing in this world that I'd rather do. There's nothing that constantly fills me with as much joy as programming does. I admit that I might be a bit lucky here, having founded the company I'm working for; that allows me to pick my battles and find a good balance between stuff that's pure joy and stuff that's just a job.

I do however look out for everybody here who likes solving the interesting problems as much as I do - we try to keep the interesting problems evenly distributed between us.

The thing is: Many of the crappy tasks can still be made interesting: Form a challenge. Fix something related that has been bugging you constantly. Try to implement the crappy feature without performance regressions. Try to implement it in the cleanest way possible. Try to make your future self proud.

If it goes beyond changing the working in an email for the 100st time, I'm sure there is something in there that can make your task bearable or even enjoyable. At least it is for me.


I think, as a founder you are missing the point that 99 out of 100 times you are told - explicitly or by work schedule "do not do it in an interesting, performant or elegant way, just get it working somehow and move on"


Oh I know (I also said so in my comment). And that's why I consciously try to distribute the interesting work between my coworkers and I. That way everybody gets a nice mix between "job" and "fun". Does that mean that sometimes I have to do crap? Yes. Does that mean that everybody gets to have fun at times? Yes.

If I can help it at all, I will not be the person responsible for somebody to write the rant that OP has posted.


Very well put, a nice mix between "job" and "fun". Except that most employers want their employees to do the "job" part of everything and do any "fun" parts in their spare time.


I think that good employers want their employees to enjoy their jobs (and hence, have some 'fun'). I manage a few folks, and want them to enjoy their work.

Of course, it's not all sunshine and puppies--there's grunt work that just has to get done, and everyone takes their share.

Crappy employers of programmers just want to exploit employees, just like crappy employers of other kinds of workers.


That's a shitty employer; 1. it's sadistic to require programmers not enjoy their work 2. if you've got a bunch of bored programmers you're going to lose your top-tier men and women to more interesting jobs.


> that 99 out of 100 times you are told - explicitly or by work schedule "do not do it in an interesting, performant or elegant way, just get it working somehow and move on"

Sure, we're in businesses (well, most of us), and there's little room for gilding the lilly or perfectionists who can't deliver.

That said, I've always found that elegant code is easier to maintain, thus reducing technical debt. If your employer doesn't want to reduce technical debt, you're either working for a start-up that's in a mad rush to 1.0, or you're working for someone who doesn't understand or care about the interest you pay on technical debt, and it may be time to move on.


Isn't that a challenge in and of itself? The majority of us are solving business problems, not technological ones.

If I can deliver something, even if not the most interesting or elegant, that gives the sales/marketing people giant, shit-eating grins, well, kudos to me. Usually, that means I'll be given time to go back and make enhancements, add functionality, or placed at the top of the list for the next cool project.


"um yeah nice, just ... remove the comments. And whats that tool? You can use Emacs for that! And we already have a mechanism for that just put a sub in <that> namespace and name it on_db_<whatever>_insert_trigger!"

Then I go home and write pure OO coffescript/C#. The company is great, but we have very different views on how software should be desigened.


I've never been told that. I've been told to get something done. How I achieve that has never been an issue. Interesting, performant, or elegant does not mean it has to be slow. That's part of the challenge. Meeting the demands of the business while meeting the demands of a professional.


In my experience, virtually every coding task takes longer to do "the best way" than the quickest or easiest way. Many times it takes much longer. Either you are a savant-like exception to this rule, or your velocity is (significantly) lower than it could be.

Don't get me wrong, I push for doing things the right way whenever I can, but acting like you can have it all with no compromises seems silly.


Depend on whether you are looking at the immediate time scale, (when "the best way" takes longer), or over the longer term, where it is often a lot better to sped the time up front, and have a good solution, rather than a quick hack.


>How I achieve that has never been an issue.

Lucky you, I have been there too. But at my current position, trying to use more modern technologies (Angular.js for example instead of a 15-year old stack without clean separation between front-and backend) to be more efficient is met with stares.

And I venture to say this happens very often in a lot of shops. At least outside of California.


my (less experienced) team leader is always going for the "just get it working solution". I often fight back to take the time to produce something more elegant, knowing that in two months time, my solution will not need fixing a second time.


Not to say your opinion doesn't count but theres a huge difference between being the founder of your own company and following orders from a pointy haired boss.

True being a boss is not all roses but your problems shift to a higher order, such as how can I build something customers would love... Versus how can I fix this trivial bug because my boss told me to?


I agree whole-heartedly ... There are very few days when I dread what I have to work on, and you can always find something to improve.


The "challenge" strategy can be intensely satisfying, but can also be very frustrating if that challenge is not shared by everyone on your team.

I've approached problems with goals like trying to do everything in a declarative functional style, and not passing nulls to avoid having to check for null. It's worked great, until we hand the code off to somebody else, with a new requirement, and that person breaks all the rules not because it's a particularly hard problem to solve, but just because they don't care.

It's an issue I'm currently working through right now, and I'm not sure if it's something to write a style guide/manifesto for, or if there's a better way to enforce it, or if it's just not a battle I should be fighting when dealing with an outside vendor.


Totally agree, I've done other jobs that are so many orders of magnitude worse than programming that it doesn't bear thinking about. For all its flaws, coding rocks as a career.


There's a reason it is called work and not play. If work was always enjoyable, then they wouldn't need to pay you to do it.

I think the author is delusional if he thinks any programming anywhere doesn't have large swaths of time that are a bit mind numbing. And my experience has been the programmers who think themselves 'above that' are the ones that provide the least value.

Our job is not to program, our job is to create value. You should be getting your jollies off of making cool shit happen, solving real problems, not necessarily that you just invented some sophisticated new algorithm.

I spent three years rebuilding video games I grew up on a really limited cell phone platform, it was a blast from a technical point of view. I've spent the last three years building fairly rote software that is used in developing countries, it is satisfying more because of the end result that software will hopefully have.

Go get a job someplace where you care about the end result of your work, or go work someplace where your technical side is challenged, but programming is not terrible, your attitude is.


There' a difference between having "large swaths of time that are a bit mind numbing", and having those swaths taking most, possibly all your working time. OP said:

> I don't think I ever caught myself writing code for my employer and thinking "hey, I really enjoy this"

-----

> Our job is not to program, our job is to create value.

It's supposed to be the job of every worker out there. Even janitors (believe me, clean toilets are quite valuable). Or maybe you think our job is to think about what creates value, then do it (or have it done)? That part is not programming, it's business analysis. The OP was a junior programmer, and as such likely had no say on BA. Heck, in general, junior programmers don't even get to chose their programming language, nor their build system, nor the high-level architecture of the programs they write. Genuinely thinking of creating value? That's a pretty good way to get fired. Just do what you're told, and watch (edit: and learn from) the consequences as they unfold.

-----

> You should be getting your jollies off of making cool shit happen, solving real problems, not necessarily that you just invented some sophisticated new algorithm.

True. However, the OP said:

> Imagine coming to work to spend hours googling, wiring together unbelievably shitty, amazingly poor documented frameworks and battling Javscript and CSS.

This is not making cool shit happens. It's loosing untold amount of time battling accidental difficulties. Solving "real problems" is precisely what the OP would have liked to do:

> There were a lot of really hard problems that programmers had to solve that didn't exactly involve javascript hacks to make internet explorer users happy

Working around a problem (such as IE6) that could in principle have been avoided in the first place, is not the same as solving real problems. Computers were supposed to augment the damn human intellect, and now they're mainly used to extract money from other people. This emphasises the short term and zero-sum aspects of our economy, both of which are poor at advancing humanity forward.


Seconded. It's not our job to create value.. Well it is but in a perverse way. It's our job to follow a boss' order and do what he thinks has value to his life, his salary, and him not getting in trouble with higher management


You guys need to take responsibility for your unhappiness and go find a job where you aren't treated as a cog. I say that with complete sincerity. Find a better job.


> Find a better job.

Sure! Can you provide for my family while I do?


I get the suspicion that a lot of people tech startup circles, never had to worry about paying there own bills. At any stage of life.


That sounds harsh. I think it's more that there are many young, single people who have the freedom to accept financial hardship in the short term, in order to secure wealth.

Once you have kids, you can't as easily say, "well, we'll just sleep in the car for a year", or "I'll just stay at work ten hours a day and take advantage of their free meals" (or something). For most parents, our risk-taking preferences change dramatically once we have something to lose, and the pressure from our spouses makes it a little bit harder to take on risks of catastrophic failure.


Yea it was definitely targeted at the right of college SF VC/incubator crowd.


Why can't you? It's not like you have to quit your current job to find a better one.

My advice to anyone who doesn't like their job: please don't come to work in a shitty mood all the time, bitch and moan, and spread your poison around. You don't have to love your job, but quit making excuses and being lazy and go get yourself one you will love.


> Why can't you? It's not like you have to quit your current job to find a better one.

Finding a job I love would require me to change my career and–in the best case–would most certainly offer a starting salary that's far less than I need, given my current financial responsibilities (e.g., my family and $130K in private student loan debt).

Furthermore, I would most likely have to earn another Bachelor's degree.

See where this is going...?


Not going to really try to refute your claims, but it sounds like you're making it as difficult as possible. For one I highly doubt you'd have to earn another bachelors degree. There has to be another way..


So, are you trying to say that I can become an Archaeologist with only a BS in CS?

Also, how can I fulfill my financial obligations with an entry-level job in Archaeology?


It doesn't take much time at all to look for a job if you spread the tasks over a year. Sounds like an excuse to me.


Read my reply to _sh.


I already am. I'm starting a side gig, and will do it full-time as soon as it starts earning profit :) But I'm stating the reality that's true for the vast majority of people here.


> I don't think I ever caught myself writing code for my employer and thinking "hey, I really enjoy this"

Poor guy. I write stuff I enjoy for my employer all the time.


+1

Writing code that gets used by others no matter how cumbersome makes me feel like I've won the lottery.


> If work was always enjoyable, then they wouldn't need to pay you to do it.

I can't pay my bills with enjoyable.


what bills do you have if you are permanently joyful?


Drug ?


Food and Shelter.


"Our job is not to program, our job is to create value."

This bears repeating. Rare is the job that allows the job-holder to write code for the sake of writing code. Most of us have to build software that adds value to some other business process.

That takes a lot of thought and research, a little bit of code, and a lot of testing, documentation, and maintenance.

If we're lucky, we get to pass off what we consider the most mundane of those tasks to other employees. BUT! If we're good, we can (and do) perform all of those tasks when needed.


> Rare is the job that allows the job-holder to write code for the sake of writing code.

Just as rare is the job that allows the job-holder to clean up toilets for the sake of cleaning up toilets. Janitors clean toilets for a reason: allowing people to poo in a clean, healthy environment, therefore diminishing their stress and health problems, therefore making them more productive at whatever they do, which means more money for their company. On the other hand, getting paid for cleaning toilets up without reflecting on those good consequences is quite common.

Programming is the same. Many, possibly most programmers, are paid to implement specifications handed out from above, few questions asked. They are definitely not paid to think about the actual business value of the solutions they are told to implement. The bigger the company, the more junior the programmer, the truer this is.


This is true in any academic field: Poetry, history, math, physics, engineering...

The nice thing about computer science is you can make a decent living out of your hobby. The not so nice thing - you have to do what people pay you to do, whether they are customers are bosses. It's still a much better living than a poetry expert makes.


+1. And the flip side is true to: companies that find a way for their employees to create value while enjoying their jobs are able to hire great employees and produce excellent work.


> If work was always enjoyable, then they wouldn't need to pay you to do it.

Why do football players, musicians and movie actors get payed 1000x as much as the software engineers who made the technology to make possible their success? TV, Internet, radio, now all HD quality. So that some people can enjoy their work and earn millions while we who invent and produce the infrastructure should suck it up and call it work?

Does our society really encourage people to do stuff they dont really want to do, stuff they dont find enjoyable?

Just my twist on this.


> Why do football players, musicians and movie actors get payed 1000x as much as the software engineers who made the technology to make possible their success?

They don’t. The notion that they do is laughable.

Let’s look at baseball. Baseball players are known for having huge multi-million dollar contracts, right? But that’s only major league players. The vast majority of professional baseball players play in the minor leagues, where they earn just a few thousand dollars a month (and they don’t get paid in the offseason). And that’s not all; minor leaguers are still really really good at baseball. They’re all easily in the top 2-3% of baseball players. There are simply no jobs for the other 97%.

The average minor league baseball player making $15k a year playing baseball is a vastly better at playing baseball than the typical senior developer making $120k a year at $BIGCORP is at programming.

As for the couple hundred guys making multiple millions a year who you hear about all the time? Well, there’s even more engineers who have struck it rich with a startup, and no baseball player will ever come close to Zuckerberg-level wealth.


> As for the couple hundred guys making multiple millions a year who you hear about all the time? Well, there’s even more engineers who have struck it rich with a startup, and no baseball player will ever come close to Zuckerberg-level wealth.

You are comparing employees to a CEO and business owner (which doesn't have anything to do with technology, other than for the initial lines of code). Of course he has more wealth.


So there are billionaire baseball coaches?


In fairness, there are billionaire team owners, but they didn’t become billionaires by founding baseball teams.


CEO of a company with a single product, which is a web app that he wrote the first several versions of by himself, in his dorm room. Yeah, he did it in PHP, but that doesn't mean he wasn't an "engineer" working on "technology."


Still not an employee. If I inherited a big fortune would you put me too as an example of how lucrative this career is?


> Why do football players, musicians and movie actors get payed 1000x as much as the software engineers who made the technology to make possible their success?

Do you think their jobs are cake walks? You think football players really enjoy the training, really enjoy destroying their bodies on a weekly basis? You think musicians haven't toiled for years and years making no money at all before reaching the level where they can make a living?

Even if you believe that they enjoy every minute of it, you are pointing at an extreme minority. Software engineers are in the top 5 best paid jobs and frankly, our jobs are ridiculously easy and enjoyable.


It's incredible to me how hard these guys work and the level of ambition they have.

I always say Tom Cruise, Christian Bale, etc. (pick any major actor) would have been successful in their life no matter what since they have the incredible drive and discipline to achieve their goals.

I also get just a bit frustrated when we boil everything down to "software/tech runs the world" so we should be glorified in some way. Well, sewage systems also run the world. I certainly don't recall or care who built that.


Seconded.

It reminds me of a quote from Muhammad Ali:

“I hated every minute of training, but I said, 'Don't quit. Suffer now and live the rest of your life as a champion'.”

Now I'm not going to say that every athlete or musician is like that, which is part of the point; reality generally defies generalizations, but I will say that discounting the work professional athletes put in is a bit narrow minded, regardless of any perceived pay-hardwork or pay-joy ratio.


Another quote I've heard and liked: "Training is like wrestling with a gorilla. You don't stop when you're tired. You stop when the gorilla is tired."

And the gorilla is never tired.


Apples and oranges. Only the top 1% of athletes, musicians, actors make a living off it. Compare them to the top 1% of programmers.

Alternatively if you compare all aspiring athletes, musicians, and actors to all programmers, you may find that programming does pretty well.


A good point. When you look at the top richest people of the world, some of them are (were) programmers. None of them are sports or movie stars.


eh, I don't think that's the same. Bill Gates, Zuckerberg, they weren't top 1% programmers. They are simply people who knew programming (to some degree) and got rich from their business ideas. Whereas the athletes, like Michael Jordan or Tiger Woods, are incredibly talented.

The closest you can find in the programming world is probably John Carmack, who found a way to earn a large sum of money based directly on his programming talent.


You can't say that Gates and Zuckerberg were not talented though. They definitely were in the right place in the right time but if you look at their early history you would find people who did their due diligence when it came to programming and got the business running and then stepped into managerial roles. They have multiple talents if you will which is only evident by juggling all responsibilities and seeing things through. Of course athletes like Michael Jordan or Tiger Woods are incredibly talented but only in a single field. They have managers who handle the rest of their business affairs.


Zuckerburg got lucky as well. I has signed up to a few similar apps before facebook, but the timing was right to get a critical mass.


Wow. Who is to say every single professional athlete and musician and actor enjoys every single second of their career?

Athletes' bodies are taxed to the maxed. Most of the above are in the public light 24/7, they might feel unsafe and have to hire bodyguards. That's not something everyone is going to enjoy. These people work hard, sometimes long hours. They are on the road, sometimes away from their families for long periods of time. This might be an exciting life at first, but wears you down after a few years.

Your average working musician has a "day job" playing for weddings, churches, and corporate events anyway. Not the life of luxury you seem to imagine. They are spending their off time marketing, networking, and planning their next event.

Most actors don't "make it big" and spend most of their time auditioning for roles, networking, and spending time looking for more work. I know a actor. She actually quit and got a "day job" because of the unstable nature of the work. If you get a role, you're still working under a deadline, and you're still working under the authority of someone else. I've heard in an interview somewhere that TV actors can work up to 12 hours a day.

After all, while preparing for the Australian Open Serena Williams said "I don't love tennis today, but ... I've actually never liked sports."

What about the people who support the infrastructure that make your job possible? The people who get paid less than you. The people (probably immigrants) who work in farms and factories and slaughterhouses to bring you food? The cooks and servers in the restaurant. The workers in China who build your computer/computer parts.


So basically the takeaway from all of this is that instead of walking on the backs of the downtrodden, all those immigrants, infrastructure people, poultry producers and programmers should be paid a hell of a lot larger portion of the profits.


Are you really lumping bottom 5-10% wage earners with the top 5-10% of wage earners in a nation, and calling them both downtrodden?


>Who is to say every single professional athlete and musician and actor enjoys every single second of their career?

Why does this "every single second" strawman keep cropping up? The complaint was not that every single second of programming isn't glorious, it is that every single second is shit. The idea is not "other jobs are perfect because they are fun all the time", it is "other jobs are better because they aren't 100% pure shit all the time". If you don't agree that programming is 100% pure shit all the time, then argue against that. But don't stoop to lame strawman arguments.


I wasn't intending to attack a stawman. I thought the parent implied that. I am sorry if I mistook the meaning of their comment.

Personally, I don't find single second of my job to be shit. I really enjoy my job for the most part. There is some time spend on mind numbing tasks, but I tend to take those in stride. I wouldn't want to do anything else really. There's pros and cons to every occupation.


While I was reading OP's article, I remembered a blog post by an actor. The blog was gone, but basically what he said was that even those who were lucky to act for full-time in Hollywood, 95% of their work is mundane stuff. Basic training. Networking. Auditions. Imagine that you take job interviews twice a week and once hired for 3 months you take employee evaluation every day. That's their life.

They endure that life because they know the door that opens to the field where they can do what they want is only reachable through this muddy road.

I program both for work and for fun, and I can understand that. (I also act, only occasionally, and yeah, regular programming job is a lot more stable and low-risk, so it's understandable that the upside is a lot lower.)


why do you make 100k while the cleaning lady who provides you with health thru a clean infrastructure should just suck it up and call it work?


I've felt this way before. Dejected that the my new job wasn't an exciting candy land of save-the-day hacks and movie montage of elegant code spanning the screen. My expectations were too high. I thought we would always do the right thing to kick out software all grown up ready to take on the world.

When the realization set in I got angry. First at the job then at myself. I held it tight knowing someone was to blame. Anger lead to depression which sparked more anger. But depression won, and eventually lead to a calm realization that programming wasn't the magical world I wanted it to be. So it became just a job.

I never wanted it to be just a job. I work with people who don't know a bit from a byte. They could care less what I code as long as it works. For a long time I believed them. I just made it work. Recently I've started to believe again.

I've started to believe in the magic again. I'm learning that within the boundaries of my job I can create little realms of beauty. No one cares how I code so I can code to my own enjoyment. I've stopped caring what other people thought. And I've stopped looking to the job and outside world to give me enjoyment and I've started looking inside myself. To find the joy in my own actions, in the moment.


I really agree with your sentiments here.

I would say that if you work on a very large scale system with an explicit way of how things are done and there is extreme rigidity in doing anything differently than the job gets tedious quite fast.

I would venture to say that most developers do not fall into this category and have more autonomy (even if that is just building a CRUD web app). Most code isn't peer reviewed and the emphasis is on getting results. Within those boundaries one can do so much to keep things interesting.

I also find it interesting that as developers we sometimes feel frustrated that the end users don't understand or care about the complexity of the implementation and how much may have gone to just that single push of the button on the screen.

How much do you care about the complexity of your car, or the countless bridges that one may drive through? I can sense the complexity behind it but at the end of the day, I enjoy that is come down to turning on the ignition.

Every profession has these issues. Ask the newly grad civil engineer who's tasked to work on a bridge. What do you think they get to do? They get handed the mother of all books on how a bridge is built and everything important that needs to be considered. Their job becomes one of plug and play as there is only so many ways one can build a safe bridge. I had one of my professors relate this story and he couldn't handle it. He went on to graduate school and become an engineering professor.

For better or worse, we get some say on how that bridge gets built, as long as it stays and functions as a bridge by the end of it.

I find a lot of developers just give up, shifting responsibility from internally to external factors. It's hard to see someone just going through the motions, not evening really trying because the job has become "boring". It becomes a self-fulfilling prophecy as the company starts to recognize this and eventually puts someone more inclined in the same position.


It took me a longer time than I liked to realize that the end user didn't care at all. To them it was magic and they just want it to work. And you're right, most shops don't care how it's coded either. Once I realized that it gave me some freedom to once again enjoy my work. I still get frustrated from time to time, but at least I know why and can shift my thinking when I realize I'm headed down a negative path.


Most users are as you describe, but I made it my mission to educate them on what they were asking for when requesting a software change, and why one change might take two or three days, while another takes a month or more. I'm not didactic about it, just providing good explanations in terms they can understand. This makes them better understand that I'm neither a wizard nor a plumber, but someone who uses the ability to break complex problems down into a collection of small, simple, eminently-solvable pieces, and builds the complex solution out of those simpler solutions, sometimes using a bit of insight, creativity, and mental brilliance to achieve economies of scale.

The bonus, for me, is that occasionally there will be a colleague who gets it, someone who doesn't get that glazed look on his or her face as my words pass in one ear and out the other, and who can become a true partner in the quest to maintain, improve, and extend the software's capabilities. When you find someone like that, it makes the effort seem worth it.


Well said.

I've done the same with the Account Executives where I work. Some get it more than others, but most only get it part of the time. Still it's better than nothing.


I don't want to burst your bubble, but there are bosses out there who a) will read and criticize your diffs and commit comments, and b) will not be anywhere near as capable as you. These circumstances combine to produce a situation where it is entirely possible to be "too clever", which elicits a polite chewing-out and an assignment to go back and replace elegant code with code that any idiot can maintain.

If you know a trick for maintaining a sense of satori in such conditions, you would oblige me enormously by describing it.


(I'm replying late to this so you may never read it.)

I don't think I'm that great of a programmer. I'm self taught and I have a lot of insecurities about my abilities. Even though I get paid to program. Even though I pickup new languages, on my own, and write working software with them.

So when I write code I write it as simple and direct as possible. I stay away from clever and I stay away from cute or smart. Because I know that the idiot that will be maintaining the code and need to understand that code will be me.


I've been able to build trust with stakeholders, and that lets me be 'too clever.' The problem is when they lose that trust, because of a situation they are going through. Being clever is a risk in many situations.


Where do you see yourself in the parable of the three stonecutters? http://straighttogo.com/stonecutters/

It's not just a job for you; you never wanted it to be just a job.

It looks like you have found the cathedral in your job.


Honestly, I can understand OP's frustration. I would be lying if I said I didn't think similar thoughts. But the truth is, you don't get do to what you want unless you're running your on company. Even if you are running your own company, you have to make sure you're doing the right thing in order to not go bankrupt.

I think having hobby projects can help provide a nice balance between doing whatever the hell you want and doing what is needed right now. It also gives you the opportunity to learn new things which you can maybe apply later to your actual job. As long as I have my favorite forever project, I won't be bored.


protip: every job is like this. I went into journalism because i LOVED reading and writing. Making it a career sapped the fun out of it. Now i'm coding professionally. It's much more fun than the pressures of journalism, but I do find myself sometimes thinking "this was more fun when I did it just for the heck of it"


Yes, a day job will require of you things you wouldn't CHOOSE to do. Yes, doing something as a job is less fun than just doing something for fun in your spare time.

BUT: Speaking only of programming, which is what I choose to do, that extra work can be extremely fulfilling. No, you can't just be working on what you want all the time, but honestly most projects that are driven entirely by people's spare time end up incomplete. The list of exceptions is long, but the list of projects that are incomplete, in features or documentation or in handling of corner cases, is far, far longer.

I love open source, but there are some domains that all the open source options suck. I think a big part of that is the amount of real, un-fun work required to really finish a project. And yet, when creating a project for a job, you (sometimes, at least) need to really finish it: Add the features your users need, handle those corner cases, write up that documentation.

And having really completed a project and seeing the feedback from hundreds of users that find it to be awesome? THAT is amazingly fulfilling. Even if it's not fun every step of the way.

I assume journalism can have similar benefits, but I can't speak to that.


protip: every job is like this.

True, and most of them also pay a lot less.


protip: Be a very picky freelancer and only work on projects that interest you.


I'm having a mid-career crisis much like OP and the notion of freelancing is enticing. Can you tell me more about how it is more fulfilling, lees frustrating and how you find quality gigs?


I freelanced in the UK for 2 years, currently in Canada since the past year. Freelancing is tough here, it doesn't seem like it is the norm. It's tough in the UK too, but if you are good at what you do and/or you work in a niche field (like me) then then you have no trouble finding freelance work.

What I loved: you get to work on pure software. None of the BS with internal company politics, requirements gathering, user analysis etc. You are focused on a specific set of tasks. You are paid much more than as a perm (but not for vacation, sick days etc)

The last part is important to me at this moment in time. It effectively meant I could work for 6-7 months and make as much money as a perm salary. (This is a short term view to take though). This difference should cover down time, when you are looking for new contracts or you just want to take a little time off to upskill. Depending on the availability of jobs, you can be very selective on the contracts you choose. I've known people leave within a few weeks and move onto something else since it was "not as advertised". Because you shift job fairly frequently (3-6 months usually) you get to meet a lot of different people, learn different techniques and different skills.

The bad part: No vacation pay, no sick pay, you work a day you get paid for a day. You are usually hired for a particular skill, so there is no training. If you don't like a job, there's no point in complaining since they will hire someone else - in a decent company, they will try to accommodate your growth, longer term at least. You can be let go on a very short notice and there is no job security (obviously). It can also make it tougher to get loans and mortgages since the criteria is much stricter.

It's not for everyone, and depends very much on what you do, but I have plenty of friends who freelance and would not go back to permanent positions.


I'd like to hear some more on this topic as well; I've got a few freelance clients whom I inherited from the (literally) flaming hulk of the company where I used to work, and I need the money, but the work they need done is so delightful that I'm thinking hard about getting out of freelancing entirely in order to concentrate on doing things I actually enjoy, instead of working every hour God sends. If there's some way to reconcile these increasingly divergent considerations, I haven't been able to find it.


Bingo! Been there for a few years now. It's awesome. :)


Not always possible. I have something like that, then 3 months in the road the company lost his biggest customer and chop down the project/team!


I think you're not understanding the premise.

I don't work for "a company". I work for one of several companies, depending on the week/month, and sometimes two or more at the same time.

Personally I prefer shorter contracts, but I have constant offers of longer contracts, so I could go that route if I wanted. But I also want time to work on my own projects.

Though, in the abstract, sure, it's not always possible. This is advice along the lines of "Be Really Awesome and Have an Excellent Business Network." Not everyone can really follow it.

But there are a LOT of freelance jobs floating around right now, so it's a good time to give it a try if you can.


Most jobs, yeah. I do know a few engineers (the non-software type) whose interests seem surprisingly closely aligned with their jobs. One is a chip-design/layout person, and another is a chemical process engineer.


I think jobs can be more fulfilling give you value in pursuing your interest beyond what's possible outside of a job. Such as a lab with expensive or hard to acquire equipment for research or fabrication. In some cases, it can be an opportunity to solve a problem beyond normal bounds of home hobbies.

But programming many jobs seem like the types of thing you can do even without the job.


Protip to employers: Make your jobs interesting and fun, and you'll find that your employees are way more productive than you ever thought they could be.


You mean a job is sometimes work? How weird.


Don't shoot the messenger.


I find that at work I get more disheartened when I know there's a fun hobby project waiting for me at home.

Part of OP's problem is that he, like me, started with programming as a hobby and still wishes it was.

Note that in hobby programming there are still boring parts to push through. Additionally I still have to do sys admin work so I have a server for my website. And other such things. But as a hobby I can choose to pause it whenever I want. I can stop and go read a book instead. I can switch to another project just to keep working on something fresh then switch back when I have the energy to push through the boring part.

Also, real work often has policies, paper work (digital version of it), politics, and all kinds of other stuff that gets in the way of just writing code and making nice software.


TL;DR for the article: "OMG, work is BOOOOORING!"

See also: the disillusioned former law student who went in to change the world but ended up pushing paper, the disillusioned architect went in to design monuments but ended up designing Wal-Marts, the disillusioned English major who went in dreaming of the Great American Novel but ended up spell-checking ad copy.

There is a difference, though: if "wiring together unbelievably shitty, amazingly poor documented frameworks" really pisses you off, you can FUCKING CHANGE THAT. Not every discipline has quite that level of flexibility.

BTW, GTFO off my lawn.


By the number of people that are pissed off about webdev and still don't success at changing it, and by the amount of "Oh Brand New Automagic Solution for Everything (TM)" coming up every month and still failing at fixing the mess that webdev is... I'd say it's not so easy to "fucking change that".


I don't know if it's easy or hard. I'd bet it's rather on the easy side. What I know is that it's not with having dealines to produce the next product that anybody will have the time to take some step back and come with a better (more automatic) way of doing things.

What's painful, it's not doing something repeatitive. It's being presured to repeat it, without being let automatizing it, which is what we should do as programmers.


I had a colleague once that wanted to invest 4-8 hours writing a script that would save her about 1 hour each time it is run. The script was expected to be ran about once a week.

She did the wrong thing and asked her boss. "Not enough time, there's more urgent things to do."

She then lost an hour per week, contributing to the general sense of urgency that she lived under. Of course, this wasn't the only such script she thought about by far.

-----

My advice: if you can shoulder the risk, automate it before your boss tells you not to.


I look at it this way. Bosses don't understand craft, only results. It's your job to understand the craft, and to get the results your boss is looking for. Automation, scripting, refactoring, these things are part of the craft and can't be skipped, so they're part of the job and it's not done until they're done.

So don't present your results to the boss until all the work's done. It takes as long as it takes.


My advice: never ask your boss to do something that will make both of you look better and presents no risk.


frankly, it sounds like she could have simply taken the initiative and wrote the script on her own time. seems like she could have simply done it over a weekend, and it would have been worth it if she truly felt that it would save her an hour per week.


> it sounds like she could have simply taken the initiative and wrote the script on her own time

I agree, except no one should ever have to work on their own time. Personally, I think she should have written the script on company time.


That might be true - but she should do it only to prove that those kind of investments are worth it, and to gain trust from her boss/team.

I think programmers should be paid to not only do the crappy grunt-work, but also for automating it away, even though there will sometimes be cases where it turned out not to be worth it. To me, the automating is part of the job.

And sure, I remember when I used to think I could rewrite entire applications in a few hours the "right way", but that was pure inexperience on my part. For a junior dev, they might want to run it by someone more experienced, but otherwise, these kind of tangents can turn out to be some of the most valuable time spent on a project.


Yep. The worst thing in the world is to willingly waste your time.


But then, as a software engineer, you push for a big rewrite, or introduce a new framework / technology, or do some NIH work or over-engineering. And you actually convince business users that it's for the benefit of the product / business / whatever, while you know it's only to keep you, a programmer, from dying of boredom by doing the same repetitive boredom one more time.


I felt the same way. I quit. I'm still unemployed.

I will admit the job I had wasn't nearly as dreary, but I was still plagued by the fact that what I was doing was utterly pointless and had zero value.

In retrospect, I wish I had just grown the fuck up and accepted the simple fact that the chances of any person on this earth making his or her life meaningful outside of his or her own family are astronomically slim. The machine we contribute to is one that takes in money, spits out more money, and creates very little value in the process.


As a matter of fact, giving one's own family its proper value (the most) is one of the problems of our society. And one of the problems with our 'leader-based' culture is that 'ordinary' people (those who are not leaders, who, by mere statistics must be the vast majority) find little support in it.

So, I guess we all need to develop a 'family-centered' philosophy or life more than a 'work-centered'. I find this rather compelling, albeit difficult to tackle (because it is likely you spend more 'conscious' time at job than with your family).

So, as you say, it is a problem of a fine-tuning of one's own values.

Not that I am suggesting 'crap jobs' are good for anyone. But that one has to value 'family success' much more than 'job success'.


No success can make up for failure in the home – Stephen Covey


I'm not quite as cynical as your last line, but I fully agree with the outlook growing up.

And honestly, does any of this sound unique to programming? Do you think carpenters are all happy just making what people will buy from them? Do you think musicians all just want to make music people will buy? Mathematicians of old just being glad they could reliably hit ships with a cannon? Electricians constantly just plugging in similar wirings into similarly bad houses? ...


> Do you think carpenters are all happy just making what people will buy from them?

An anecdote to highlight your point.

I'm a web developer, but I've built furniture four our new house last year. It was fun, I've learned some new things and, most importantly, it's still there once the electricity goes out. It provides, in my opinion, a lot more value than nth iteration of some corporate website re-design. I thought in a parallel universe I could become a carpenter and live a great life. Then I've imagined the parallel universe in which a frustrated carpenter dealing daily with stupid client demands, building the same table over and over again, physically tired and risking dismemberment on a daily basis, comes home. He wants to make him a website to reach to more clients, so he picks up HTML and CSS and Wordpress, builds it and it's fun, it works, you can interact with this creation from anywhere in the world! He goes to sleep thinking "I should've become a programmer instead...".


The grass is greener...


Or do you think Benvenuto Cellini was happy doing salt and pepper for François 1er? (He wasn't, according to his biopic) http://www.jamesgreer.net/wp-content/uploads/2011/05/cellini... But that's what the kind was paying him for.


Thank you.

I think about quitting every single day, but this fear lets me grind through the day. Being unemployed is just no option if you're not alone/have family.


Look at it this way, if programming were fun, people would do it for free (and many people do) but if you want to make money at it, you are going to not enjoy everything. That's the trade you make, they give you money to do something which you might not enjoy.


The problem is, there are lots of ways to learn that programming CAN be fun (and this site is a great place to learn about places that seem to offer exactly that).

It's not that I do a job in a field that I hate. I have a crappy job in a field that I love. I'm convinced I could resign much more easily if it were the former case..


Yeah. Sometimes I feel like a bum for grinding out a not-so-amazing-but-nice-paying day job, but then I remember my wife and son. To them, I'm a hero. And that's a really big win right there.


I dunno. Quitting pointless jobs is still a net positive if you see the bigger picture I think. Pointless jobs should not be done and the fewer people willing to put up with it, the better. Bosses dealing out pointless jobs will soon learn to either raise pay or solve their problem differently. Sure, sucks when you're longing for that pay check but overall I commend people doing what you did.


Plenty of people have very meaningful lives outside of their family and it is nothing to do with chance. It does however require a level of effort that a lot of people just aren't willing to give.


It's not too different than other hobby turn professionals. Like to work on cars? You may want to become a mechanic. Replacing brakes for the hundredth time is not nearly as interesting or challenging as the first time. On the upside, you get to be around the environment you love and occasionally there may be some new problems to solve. As with any profession, there is always an opportunity to learn and improve even on something that is considered routine. For a mechanic, maybe do it faster or with different tools.


I think "mechanic" is a bad metaphor. We're talking about engineering here. I don't think I could doubt that a lot of programming jobs (webapps, etc) are not as interesting as a lot of electrical and mechanical engineering jobs. But I could be wrong.


Solving problems is interesting. Repetition is terrible.

As programmers many of the things we build are to automate processing that other people would find repetitive and make errors doing. As a result, our work becomes repetitive and we make errors doing it. As some level we've succeeded – we've added a layer of abstraction and made a lot of people's lives easier – but we've also moved our expectations ahead of us and now we're playing catch up.

The author says

> Sometimes I also think if it would be different if I was born several decades earlier

but I don't think it would. The problems would have been more fundamental and the solutions would be more "pure" computer science, but I imagine you'd still have the same level of tedium with regards to debugging and loose user requirements.


"Solving problems is interesting. Repetition is terrible."

Most "programming" is just "digital plumbing". No matter how flashy or utilitarian the taps or basin are, underneath the job is pretty much always the same - you hook up hot water to one tap, cold water to the other, and the sink drain to the drainpipe. You can do a great job or a shoddy job - so long as nothing leaks _too_ much, it doesn't make any difference to most people.

Almost all of the programming jobs in the world are like that - call it CRUD or MVC or Mobile Apps or Web Apps or websites or SaaS, or PaaS - you're mostly gonna spend your life hooking some user interface up to some data store doing some sort of filtering or data transformation in between - and hopefully having some real-world side effects that generate value for someone, be that entertainment, education, ecommerce, improving the efficiency of some previously manual or tedious process, or often - just releasing a new version of the same old thing because marketing decided it's time for a version number change and a few "new feature" checkboxes for their competitor comparison. Most "day to day programers" _don't_ get to write new 3D renderers or physics engine for exciting games or write the next great crypto system or solve hard computer science problems or software to control new spacecraft or fighter jets - or whatever "interesting programming problem" you can name. But if you're lucky, you might get to solve real world problems your business/clients/customers have – by hooking some fancy new off-the-shelf taps up to some standard boring old digital plumbing in fairly standard ways – occasionally you might even get some new-to-you plumbing job, perhaps plumbing in an espresso machine or a fridge-with-ice-cube-maker-in-the-door, and that'll be fun - the first time. Maybe even the second and third time - then it'll be "just another standard plumbing job", with a different fridge or coffee maker.

I saw a presentation a week or so back, that seems to me a lot like the article-writers original "I'll write some code to find Mersenne Primes!" - it was a bunch of local guys presenting (at DorkBot here in Sydney) about the new ASIC USB BitCoin miners they were building - you _can_ find and attempt to solve interesting computer science / math problems, but there's _vanishingly_ few people who'll employ you to do it.


I don't exactly know the truth of your statements above, but I've spent my life doing all of that cool stuff. I've written code for flight computers, done machine vision for factory inspection, supported cancer research by doing stats and data analytics, written 3D viewers/playback for aircraft black boxes, worked on robots and UAV for several years, and now I'm doing some computer vision + AI work that I can't make public just yet. And I had other opportunities, like working for private space launch, which I declined.

How? Mostly (not entirely) by working for a defense contractor. Everyone seems to knock corporate jobs, but I swear to you I've done so much cool stuff because it is only companies that size that can bid on and win this interesting work. Plus, I went to university (another false meme around here - college is just a piece of paper), where I learned the chemistry, physics, electrical engineering, and math to do all this stuff.

There is plenty of pain in big government type projects, but there is pain in every thing important. Do you want to wrestle with undocumented CSS behavior, or wrestle with how to program this robot, or how to reduce defect rates in your machine in the factory, or how to make this plane fly. Sentence structure doesn't make it clear, but I consider only the first boring, and the rest extremely interesting.

There are a lot of those kinds of jobs. You may not live in SF anymore, and end up at an airbase in Iowa, or in Albuquerque, or Huntsville. OTOH, your pay will be absolutely amazing compared to local property prices, and you can raise a family, go on great vacations, and not worry about living in the crazy bubble we are in right now.

I know it won't appeal to everyone, but I swear to you there are tons of extremely interesting, challenging jobs out there that aren't start ups, and aren't corporate internal reporting apps (TPS reports). You will need to be far more than a Ruby on Rails developer, CSS+HTML5 jockey, or what have you.

edit: all of the above is written by a US citizen. I don't know what opportunities are like in other countries, and don't mean to imply that any of the above applies to anyone but a US citizen. I don't know.


To add to Roger's answer, I can assure you that software engineers in semiconductor companies are having a ball as well. The work often involves understanding computer architecture, registers, memory and IO. Everything cool (read: advanced OS concepts) that you learn in college is getting implemented there.

Some job profiles include programming GPUs, device drivers for a new device, writing kernel code for the processor, firmware for other chips on a motherboard.

There are also math intensive jobs such as 3d spatial programming for manufacturing simulation and nanoscale image processing for finding defects in wafers.

Compiler and language enthusiasts often enjoy working in the forefront. When Intel plans to come out with a new instruction set, it uses its own engineers to write an optimized compiler (better than gcc) for those instructions.

Same goes for Java in Oracle.


Roger, may I ask what you pursued in University? You said that you learned chemistry, physics, electrical engineering and mathematics, but what degree did you get specifically? I ask because I currently have a CS and Finance degree, but would prefer to work on the type of problems you speak of. I'm currently considering doing a masters in Computational Mathematics, but I don't know whether that would get me to where I want to be or not. Any help at all would be greatly appreciated (I also saw your post here: https://news.ycombinator.com/item?id=6462363, and I completely agree with your sentiments regarding most of the job positions on HN.)


Out of curiosity, would you say that big defense contractors or other big corporations that typically get this kind of "cool" projects, may sometimes seem buried in red tape or cumbersome processes? I feel like sometimes startups make things happen faster and with lighter administrative overhead, but I'd like to know if someone has experience with the opposite.


I'll be honest, this fact in and of itself is driving me to plan for a PhD. I have no interest in being a digital plumber. Zip. Zero. Nada. I want to solve fundamental problems that have never before been solved.


so i understand where the plumbing analogy is coming from, but, as with most analogies, it's not a perfect parallel. moreover, as someone who's currently spending a lot of time wiring up ui elements to data stores and data stores to other data stores, i find the comparison a little hurtful.

like, if the path from an app to a webservice were like plumbing, i'd lay the pipes, data would move, and that would be it, on the the next job with the same pipes and tools i used for this one. but actually, as the project matures, i hope to have made several nice little json-schema-sized pipe connectors that i and others can freely reuse.

my ideas for improving the ui development process are not quite as mature as this is the first system i've worked on with much emphasis on ui design, but there are already a few interesting corners to look into.

and i'd really like to hear from anyone else with ideas as to how to allow people who don't know as much about programming integrate their human interface ideas with the machine interface underneath. i guess that's what this google web designer thing is all about, though.


I suspect that even back then, there was a lot of tedious grunt work. My dad did some sort of academic goofing about in the late 70s, early 80s. Should be pure and focused, right? Well, at one point, they got a new hard disk for the minicomputer, and he had to write a driver for it. There is always absurd shit you have to do before you get to the good bit.


> Solving problems is interesting. Repetition is terrible.

DRY.

Solve the problem of repetition.


My advice would be - do not become a "software engineer".

My advice would be - become a solver of other people's problems who happens to know how to develop software.

This may sound like a futile exercise in semantics, but believe me, this subtle little shift in thinking has made all the difference...

In order to escape OP's "boring as shit" programming life and have a ball turning nothing into something, one has to change their perspective: It's not about the code, or the elegance, or us, or what we become; it's about solving our customers' problems. That's it.

It doesn't matter if the solution requires the most elegant algorithm ever conceived or smacking someone on the side of the head; solving the problem is where the rush comes from. The elegant and cool code is the byproduct.

Once OP understands this, he'll be too busy building and solving to rant.


I suspect the customer can read this orientation as well.

When the customer perceives that the programmer's goals are aligned with his goals, he will be much more inclined to send that programmer work.

In contrast, the programmer who sees the customer as an ignorant philistine who "doesn't appreciate good design" or "doesn't understand what he needs" will drive customers away.


Solving the problem should be what you're looking to do. Learning how to solve the problem with the current tools also helps.

edw is right - avoid that "Software Engineer" label. It's a pipe dream of broken promises


One of the author's frustrations, seeing months of work abandoned - is the byproduct of training programmers as scientists and engineers rather than designers...or rather it is the byproduct of a pedagogy which attempts to extend mathematical logic and proofs to messy social problems.

Landing pages and NoSQL backends are not deductively better or worse: at best they are statistically or inductively so. Typically, however, choice is simply intuitive.

Making good intuitive choices is the essence of design and the way to develop good design intuition is not to sit down and bash on one's first solution until it plausibly works. Education should attempt to teach students that falling in love with one's first idea is a tarpit.

Teach students the practice of coming up with three independent design schemes and developing each to the point that the merits and flaws of its underlying design concept is evident. Maybe one is worth developing.

Throwing away months of output is not wasted effort - just as lines of code are no more a relevant measure of productivity than pencil lines on a blueprint. Artists have stacks of sketches and studies, architects stacks of abandoned schemes.

Most ideas are not worth loving, let alone executing and most solutions cannot be demonstrated correct via mathematical logic. The education of programmers should align with this reality.


The problem is that "developing each to the point that the merits and flaws of its underlying design concept is evident" is software engineering. It takes a substantial amount of work to get to that point, including usually having actual customers bang on the product. If you develop 3 independent solutions to the point where the flaws on each of them are apparent, by definition you will throw away 2/3 of your work.

I don't think that's necessarily a bad situation - hell, the bulk of my work is prototyping, and I throw away probably 90% of it. I just don't think this is unique to design, and I think that software engineering differs in that you usually need to proceed farther to see the flaws in your design. Science is a more apt metaphor - the scientists I know easily throw away 99% of their lifetime output, because the point of science is to prove yourself wrong as quickly as possible.


"Teach students the practice of coming up with three independent design schemes and developing each to the point that the merits and flaws of its underlying design concept is evident. Maybe one is worth developing." That seems like a good idea but then you would need software designers and programmers because what is good for one is not good for the other. We're no were near this becoming a reality.


The idea of developing multiple independent schemes comes from my background as an architect. I mention it on the off chance that it won't the discipline of software development as long to incorporate it as the 4500 years since Imhotep.

I'm optimistic because functional programming is already seen as an often viable alternative to bashing on an array - garbage collection is a useful abstraction outside the computer too.


  "Internet was a luxury in our struggling country"
Based on this, though nothing can be assumed, I can't help but wonder if the author was doing outsourced/offshored development work for another country?

I can only imagine that doing outsourced/offshored work brings with it an extra level of dehumanized drudgery.

I am a software engineer who typically works with small teams and/or small businesses. While the code-writing itself can be mindless CRUD work, and is almost never interesting on a theoretical level, solving actual problems for my users makes it worthwhile to a large extent. I am solving real problems for people trying to get through their days -- people I get to work with face-to-face. That's rewarding.

If you're doing mindless CRUD work for somebody five thousand miles and several levels of management away, though, that kind of rewarding feeling must rarely be possible. I don't know if I could do it.


The flip side of that equation is that in developing countries that much of the "drudgery" is outsourced to, call-centre work is considered aspirational and there are people literally killing themselves with physical labour for less per week than an established elancer can earn in a couple of hours. This may not be quite the situation the original author faced, but it certainly helps put the lack of excitement in fixing IE7 bugs for anonymous foreigners into perspective.


There are many reason why programming is a great career:

1. You get to create things

2. You make things that are useful to other people

3. It is fascinating to see the program you wrote execute as intended

4. There is always more to learn – you are never done

5. Short distance between idea and running program

6. Code is very expressive

There are also lots of jobs to chose from, and they pay relatively well, so if you don't like where you are: switch. There is no reason to stay in a boring job when there are many interesting ones to switch to. More on why programming is great: "Why I Love Coding" http://henrikwarne.com/2012/06/02/why-i-love-coding/


Reality kills a lot of interest. Rules, deadlines, no one cares about good design... just get it out. Only you and a few like-minded co-workers realize how neat some of the solutions are. No one else cares.

Make it a hobby. The stuff you care about at least. Apply things you discover there in your professional life and you'll stand-out and be noticed.

Most programmers don't love the job. They don't go home and think about how something can be made more efficient or scale better or fit into smaller spaces. Hell, most don't know the meaning of time and space and why those things matter. Those who do (so much so that they make a hobby out of it) are the kinds of people you want working for/with you.

Hang in there. It's not all bad.


Regarding the "specialization is more interesting" - I have the opposite opinion.

11 Years ago I starting in the video games industry, as a graphics-programmer. This meant I lived and breathed graphics-related topics. After about 6 years I could no longer take the tedium. I moved away from graphics into more general programming (in the same company) and found the variation really helped me get through the day. I've now left the games industry and couldn't be happier.

My suggestion is that if you are unhappy in your current programming role, learn some new stuff in your spare time and apply for a new job. At the end of the day, we do stuff that only a small % of the population can do. It's a skill that people are willing to pay you for, and you don't have to go down mines or anything :)


OP has no idea how lucky he/she is. I've had some really shitty jobs before I started my programming career and being able to write code for a living is like winning the lottery in comparison. You need some perspective in order to appreciate things.


There is also the odd view that "years ago" the OP would have been involved with computers. Don't get me wrong, there is a chance, but statistically speaking very very few people were involved with this sort of stuff years ago. Even if I had had the opportunity, I have very little aspirations that I would have actually been as good as the forerunners were. I mean, I can hope, but since I'm not even the best at learning from their teachings, not sure I would have been among the best to discover these things. :)


Agreed wholeheartedly - I'm a Marine grunt, stuff gets pretty stupid in the military, and Marine Corps infantry? Yeah, I'll take programming any day over infantry life, much less complaining that practical programming doesn't interest me.


If you hate JS hacks and web apps and that's what your current job is doing, quit and go work on some database internals or a large distributed system or something. There are lots of jobs that aren't working on CRUD apps out there.


Difference between the hobby and the job I find is your control over what and when you do the things you want to do. Both have the type of work everyone loves, its just not as free at a workplace.

I program Android at home and decide when I want to do the boring parts. Sometimes I make it fun by finding some way I can script or generate the boring, repetitive parts of programing games or layouts. Heck, sometimes I just grind at it with a 6 pack and a good playlist. But at work there's often weeks at a time where I'm forced to do the crap work that no one ever really dreamed of. It needs to get done, it has strict deadlines and I'm not allowed to drink. But it pays me well and its part of the stepping stones to getting to the fun parts.

After spending the amount of time I have on HN I must admit that I am blessed with the position I'm in so I can't complain fully about it but its not fair to say that programming is a job to avoid simply because you're tasked with the crap every so often. For one, you need to earn your stripes to be put in that position where your responsibility and accountability are high enough to get the critical components. The guy right out of school onto the job dreams big but its no different from any trade or job in the world: new guy gets the grunt work. Perhaps its because I spend more time talking with fellow geeks or perhaps we do have a small superiority complex but no one should be fresh into a career thinking they'll be the one doing all the magnificent things you see on the web crafted by experts and superstars of their field. Heck I went through that faze too and I'm still very young but its much easier to see once you interact with the next shipment of grads: I don't hand off the critical work because I don't know they're good for it yet.


It is terrible because we let "the real world" dictate how we develop our software. That is a mistake. What we can create is basically only bound by our imagination and the ability to articulate this imagination in a precise and consistent form. Eventually "the real world" will have to bend to that.


Or , you can be usefull to the real world and actually solve its problems. Some actually love that, you know and some even like boring predictable stuffs...


If you don't like web development, learn something else. The only reason you're not doing something you love is because you haven't put in the effort.

Right now, I write fault-tolerant, distributed systems in Go for a living. I really enjoy it. But a decade ago, my first programming jobs were building websites in ASP (pre-.NET), PHP, and ColdFusion for a little over minimum wage. There are truly very few software tasks worse than writing ColdFusion.

I now count myself as proficient in a number of languages and I've done all kinds of different things over the course of my career. My latest side project is learning game development. Maybe my next job will be doing that?

If you don't like what you do, make the choice to do something else, then take the steps to make that goal a reality. You never know where you'll end up, unless you lack the energy or courage to try.


I object.

My story is very similar: teenager obsessed with programming, working with paltry early-days computers (Sinclair ZX-80, Apple II, TRS-80, etc.), writing Mersenne-prime & other such fascinating-but-obscure programs, got a $4/hr job writing dBASE II programs for an apple farm, way advanced in college, 20+ year career as a software engineer.

I don't think I ever caught myself writing code for my employer and thinking "hey, I really enjoy this".

Speak for yourself. I wrote lots of code for my employers thinking "hey, I really enjoy this". I love my job. Oh sure sometimes the situation gets hard/grinding/depressing, but that's what ANY job will do. On the whole I REALLY ENJOY PROGRAMMING AS A CAREER.


Nobody seems to be addressing the author's recommendation about specializing instead of being "just" a software engineer. Is specialization really the road to less boring coding? As a recent entrant into the working world I find myself thinking that may be the road to more interesting work, but don't have much of an idea about what the day-to-day work of a specialist is.


Specialization leads to the big bucks, it's also easier to dodge crap code that is outside your specialty.

It has nothing to do with boring/exciting, that depends on the project/company/coworker.


But you know __why__ it isn't terrible - unlike people stuck in other professions, one can pick whatever interests them, work on it, and with minimal cost show case it to the whole world, and if that gets some attention, maybe they can land an interesting gig, or the random stuff they work on might even take life on its own. It doesn't happen frequently but last time I checked there were a few that did happen this way.

So if one limits oneself to just what the customer wants boss what the boss demands - programming is terrible, but programming unlike most other jobs allows one to follow one's own heart with costs tending to zero.


"I only want to work on the things that are fun and interesting to me," said every person in every profession.

This is why I started working for myself. There are some things I have to do that I don't enjoy, but for the most part I do get to pick and choose how I spend my time.


My (unsolicited) advice would be, go and find one of those jobs that you idealise from a few decades ago. They still exist, just where they always were, in academia. Of course, it's not all playing, but if you want your job to revolve around programming things that nobody has programmed before, that's the place to be.

Have a look at getting into a PhD programme in Computer Science, Computational Engineering or something even more abstract like Computation Number Theory.


I'm a first-year computer science student, and I've been programming for about 3 years (self-taught). I find the field to be overwhelmingly expansive, and while that's partly what I find so alluring about it, I sometimes feel like exploring a bunch of subfields is taking away from the time I should be using to specialize.

I really enjoy making games and simulations, but I have trouble picturing myself working in the industry, as I really want to work on technology that solves problems. And if I were to "specialize" as a game programmer, I would probably be a generalist in that subfield.

One area that I find extremely interesting is the realm of real-time, embedded software. My dream job would be at Tesla Motors, writing software for autonomous cars. Unfortunately, it's not as easy to get experience with embedded systems as it is to get game programming or web development experience. And, for the same reason, it's not as easy (or cheap) to amass a portfolio of, erm... UAVs, robots, elevators -- what have you.

I also enjoy making web applications, doing system administration, and everything in between. And I can't deny that I've had my "start x website in dorm room like Zuck and be rich" entrepreneurial fantasies.

Does anyone have advice or words of wisdom? If I had to choose one area to specialize in, it would be embedded software, but I feel like I could get a ton of great experience as a game programmer on my own, for free, while getting a cursory glimpse at embedded systems would require more than just time as an investment.

How might I pursue a career in embedded software? I think the real-time nature of game programming would be a nice complement to real-time embedded software development. Should I pursue both?

Sorry about the essay, but this dilemma has been bugging me incessantly lately.


>How might I pursue a career in embedded software? I think the real-time nature of game programming would be a nice complement to real-time embedded software development. Should I pursue both?

You should contact some of the research professors at your institution and see what's going on at the school in those fields. Look up the robotics/AI professor and go knock on his door. Ask him what he's working on and if he needs any undergrad programming help. Usually these professors will be glad to take on a student to a team if there's room at all.

Of course you'll likely need some decent to good C/C++ skills, and arm/x64/x86 Assembly may help too.


> Like algorithms? You can be a computer scientist. You can become a systems programmer and develop OS internals. Try digging through Linux source code. If you're into programming languages, you can get into writing compilers. I hear LLVM is amazing. If you like graphics, dust off those math books and get good OpenGL tutorial.

What makes you think those you can't be those specialist you mentioned? All those roles are still very high in demand, and if you really find generic software engineering lowering your IQ, nothing is stopping you to do those things in your own time. Remember Linux?

Even in mainstream game development, people tackle complex algorithmic problems everyday. From game graphics to enemy AI, there are countless "hard problems" to solve.

My point is, just because your boss wants you to churn out generic CRUD apps everyday, doesn't mean you have to limit yourself to that. Just by spending half an hour everyday on something you really loves can make a difference.


> Imagine coming to work to spend hours googling, wiring together unbelievably shitty, amazingly poor documented frameworks and battling Javscript and CSS.

I don't have to imagine it. Happens every fucking day.


I think this is the direct consequence of the way IT is taught in many places. The guy was truly a researcher, a scientist. He was able at doing theoretical tasks well, and this is also an important work and good calling. But as I understand he chose the "commercial IT" career. This is not science, in fact they don't need smart people, although they hire them. And the result is you work in a wrong place: too much chore, brain not needed, technical dishonesty, and often you cover your management's ass with your work.

I think programming is easier for those who learned it at non-IT work: they don't have passion for theoretical, ideal things, and every chore solved is a holiday. I did like this. I had no time to argue about semantics/approaches/OOP, just to resolve problems with very limited time. Then I went to professional IT companies, and except for money and some smart guys around, the work isn't inspiring.


If you're going to be a pro athlete, you need to love to practice, drill, and train, not just play. If you're going to be a race car driver, you have to love to hear the sound of the engine and feel the vibration as you go down the road, not just the thrill of winning. If you're going to be a musician, you need to love the feel of the instrument in your hand. If you're going to be a writer, you need to love words, grammar, typing, and editing. If you're going to be a painter, you need to love working with paint, not just imagining great subjects.

If you're going to dedicate your life to programming, you have to love code: syntax, text editing, refactoring, commenting, testing, debugging, tuning. All of that low-level stuff. The problem-solving and learning-new-technology fun parts are just the icing on the cake.


actually race car driver need to love the gym


I can imagine I would have said the same had I been doing "web development". The way some stuff works on one browser but doesn't on another drives me mad. It is as though web programming is not about logic, but about just knowing how to get stuff to work on the browsers.

I think the fact that we've all grown used to pretty UI and are design/experience conscious means there are more developers spending their energy in prettying up stuff, making it mobile friendly, etc. which not everyone enjoys - though looking at it after its done might still give some satisfaction.

On the other hand, I still enjoy writing scripts to help me with tasks, figuring out a nice algorithm to solve a problem, etc.

If you have a 60-40 mix of stuff you don't enjoy and stuff you enjoy, I think that is OK. If that 60 grows to 70/80, makes it really tough to stay motivated.


  > It is now time to conclude this long-winded rant. 
  > I would like to end with a piece of advice for those who 
  > are thinking of becoming a software engineer. My advice 
  > would be - do not become a "software engineer". I know 
  > there is a lot of demand right now, but 1) the demand 
  > won't last forever; 2) most of the "software engineer" 
  > jobs are boring as shit.
My advice is, make the boring things interesting by providing better, simpler, cleaner abstractions. But that is hard, isn't it?

Or pick a general boring thing and automate it away. Thats also hard.

Or perhaps enable non-programmers to write programs for their own problem domain without having to learn much (if any) programming, so you don't have to do the "boring shit". Hows that for a challenge? :)


If one of the factors underlying the OPs sentiment is that they don't feel like their work is particularly useful or meaningful (which I DO struggle with), these points address that head-on.

Sometimes political or budgetary constraints can prevent projects like these from finding legs, but good points.


After working for a large IT shop for over 9 years (not there anymore :-D), I completely "get" this post. However, I have to say, we're spoiled. There are a lot of ways you can do worse.

Growing up, I often worked summer jobs that were either construction or factory work, right beside men in their 30s and 40s. Some days the weather was over 100 and we were expected to work in it for 9 or more hours. Some days we were doing something near a chicken plant where I had to put up with an unbearable odor the entire day. Often times, our only available toilet was of the portable kind. I've been a ditch digger. I've been up on a metal roof in that 100+ degree weather. I've spent 8 hours consecutively (with the exception of lunch) doing the exact same thing every 30 seconds.

Programming isn't so bad, by comparison.


There are an incredible amount of hard problems and interesting challenges in frontend web dev. The field is changing at a fantastic pace, and there are all sorts of exciting projects to get involved with. Its wide open. If you think its all just JS hacks you're doing it wrong.


> There are an incredible amount of hard problems and interesting challenges in frontend web dev.

Name three that your boss will allow you to work on.

> there are all sorts of exciting projects to get involved with

Name three that your boss will allow you to work on.

> If you think its all just JS hacks you're doing it wrong.

Or maybe that's his boss doing it wrong: like, "This form is ugly on our HR people's computer. Please fix it by next week." Of course, the stuff is badly written, badly documented, and have to work with 5 different browsers, including IE6. The fastest way to please your boss is the JS hack. The fastest way to displease your boss is to suggest that, maybe, IE6 is a teeny bit outdated.


If you have a bad boss, find a new boss. You could just do the right thing, and if your boss has a problem with it, you're fired. Problem solved.

Of course, this assumes that it actually is your boss who's wrong, and you're not just ignorant of the market realities that your business operates in. If you want to avoid that JS hack and drop support for IE6, you better have numbers that show that it's a negligible part of your revenues. And if you do have those numbers, it will be much easier to convince your boss.

(True story: I was working on Google's visual redesign of 2010. As a team, we all estimated that supporting IE6 would double the development cost and add a minimum of 3 months to the schedule. We took this info - along with numbers for IE6 market share - to our managers, who took this to their managers, until it reached the executive level. The verdict: we didn't have to support IE6. This was the first version of Google Search that dropped support for it - Docs had dropped support a couple months earlier - and started the tidal wave of sites not supporting IE6.)


I think that's giving too much power to your job.

Your boss may not let you work on it but there's no reason to not work on it outside the job for 5-10 hours a week, just for kicks. Those kicks might be enough to keep the day job more bearable.

If at the end of the day, putting in 5-10 hours a week extra out of your own time for it is considered too much, then accept that you also see your work as just a job.


The OP himself reckons the hobby is fine. It's the job that sucks. Sure, you can take some quality programming time outside your job, and the OP does exactly that, but your day job is still taking a huge chunk off your life.

When a job sucks, the solution hardly lies in what you do in your spare time. First, I would try to improve the job, or enjoy it, or quit it, or annihilate it (we're programmers, annihilating jobs is what we do). And if all that fails or otherwise isn't worth my efforts, then I will give up and learn to love my spare time.

When someone is complaining their job sucks, my first reflex isn't to tell them to man up, cheer up, or give up. It's not helping. instead, I ask myself what could be done about it.


Work normal hours for your job then anything extra pushing your skills in areas you find interesting. This can be on tangentially related work tasks or research or skills.

If you find your interests lead away from your job, then that is a path to skilling up for a more appropriate job.

If you think it sucks you have to work so long and hard to find and/or get those interesting jobs it does .

But it's because other people are willing to do this and will get the interesting jobs leaving the boring ones to those that don't.


Learning a useful tool at home related to work pays off.

For a web front end task job that doesn't have JQuery 5-10 hours in it could save so many hours at work after introduction you may look like a hero and win you more paid at work research time.

Prove you are worth research time to your employer.


> Ariel T. Glenn (née Laura A. Nickel) with Landon Curt Noll discovered on October 30, 1978 that 221701 − 1 was the 25th Mersenne prime. This made international news because Noll and Nickel were still high school students. For the verification of this number alone, the pair used almost eight hours of time on a CDC Cyber 174 at California State University [1]. They consumed over 4000 hours of computer time in their search double testing M21001 through M24481, along with a test of M65537 using a custom implementation of the Lucas-Lehmer test.

I don't know who wrote the linked article. But I do know that the above text was the wikipedia page for Ariel T. Glenn before it was deleted. She currently works for the Wikimedia Foundation.


Turns out it's not her - I asked.


Turning one's passion into a job almost always has this result. Work is never as exciting as doing something for the sake of doing it because work always has a finite list of things that must be done even if you don't want to. It doesn't matter if you're a programmer or a rock star. The routine of having to do something you don't want to do, whether that be write tests or perform the same hit song every day for 20 years, sucks. The trick is to try and find a balance. Do the boring stuff to pay the bills but find/make time to work on something that you actually enjoy. Sure it's not exactly easy to do but once you get out of school/your parents house - that's life.


You really should man up and either find a programming job you like, or go do something else that makes you happy. Sounds like you're in the wrong profession. I enjoy programming as a hobby and I enjoy write code for employers. Both present different challenges but in essence in both cases I'm programming and solving problems. The benefit of doing it for employers is that they give you problems you wouldn't necessarily have in a hobby project. This is life. And life landed you a crappy job. That's not the point though - the point is how you handle this and so far it looks like you're not handling this very well.


My modest experience shows that people complaining about doing mundane work, do complain when they work on the "dream job", too.

After all, motivation is something that you build, not something you have passed-on by DNA.


Don't be a programmer. Be an "X" who programs.

Instead of spending 99% of your time bullet-proofing your software for idiot users who can't use a computer, write software as a tool to automate your own job.


"Imagine coming to work to spend hours googling, wiring together unbelievably shitty, amazingly poor documented frameworks and battling Javscript and CSS."

Not all programming is writing web apps or gluing together frameworks. Some developers work on lower-level software, which involves writing more code from scratch and doing more algorithmic thinking. It depends a lot on the job. There are very few problems in the code I work on that can be solved using Google or StackOverflow.


See, that's what I love about this profession: it's never boring. If something _is_ boring, then almost by definition, it can be automated. The automation itself is usually interesting, and once you've automated your boring task, you can go on to do other interesting things.


"Sometimes I also think if it would be different if I was born several decades earlier. Back then, software engineering was in its infancy."

I think a lot of people can relate to this. I've often wished I could have finished college right before the .com boom, because it would have been so obvious to me that the internet was going to be big. Or would it have been? Hindsight is 20/20. If you had been born decades earlier you likely wouldn't even be into programming.


I don't think it was obvious at the time.

I can distinctly recall seeing Mosaic for the first time in 1993 when a fellow undergrad showed me his home page. My thoughts were essentially, "that's really stupid: it's just a bunch of boring information about you". Email and usenet seemed (to me) far more interesting and important.


That's not the question I asked myself. Born in a society with limited career options, it was, Would I rather do boring shit I hate? or Would I do boring shit I love and can closely relate to. The answer was obvious to me. It was either that or a Government job with lot's of job security and dangers of certain intellectual death by corruption and general numbness. It was always a choice between lesser of two evils.


All through high school and most of college I knew I wanted to be a programmer when I grew up. But when I was about to graduate I suddenly had to decide what kind of thing I wanted to program. I have many interests; too many to study them all. So I know a little about a lot of things but I have been unable to get jobs in those areas. (Graphics, compilers, AND operating system internals to name a few that the OP mentioned.) So basically since I couldn't decide I'm stuck with the "general" stuff. My experience is similar to OPs, basically, but I haven't figured out the solution. I have a vague plan of becoming either important enough at work to pick my projects and help with product strategy or else to become an independent developer.

Complicating this plan, though, is the fact that I put more emphasis on family than on work satisfaction. If I have to put up with a boring job but get to live in a nice house in a nice community and spend time with family, that might be worth it. I'm just not totally satisfied that it is yet. But I can't go risk everything in a San Fransisco start-up attempt.


Totally agree, at most companies, it's a dead end job, then your skills became obsolete and you drop out of the job market. Most people are out by 35.


Quick response to whoever put this on pastebin:

If you don't like what you are working on, isn't it naive to assume that the entire field is like what you are doing?

Get some passion. If you show up to work, close tickets, do enough to get by, then not think about programming until the next morning when you show up to work you are not going to learn, you are not going to level up, and you are not going to impress anyone. Maybe you can gladhand your way into management, but you won't be any good at it and you've risen to the level of your own incompetence. I can't imagine that is very pleasant either.

Meanwhile people all over the place are working on hard problems of their own choosing and love every minute of it. I think they earned that. They earned it by taking the risk of success or failure on themselves, or by working hard and learning and working hard and learning until they had the freedom to choose what they would work on, because the decision makers trusted them to deliver if it was possible to deliver.

You can't shit shovel your way out of being a shit shoveler.


This really should be titled: "Programming is not computer science."


Maybe the problem is that people get educated as computer scientists, and get hired as software programmers. While the area of expertise has a large overlap, they value very different qualities in the way you work.


Unfortunately there isn't a standard computer science curriculum out there. So one school may focus on pure computer science (i.e. that actual science of computation) and another may be teaching students how to write C# programs.

Software plays such a critical role in today's society that I almost (almost) think computer scientists and software developers need to be licensed like civil engineers, which would then create some standards. Of course there are a lot of reason why this would be a bad idea, but bottom line issue is the lack of consistency between schools.


Oof, this guys has it bad.

The thing he doesn't consider is people like me, so let me flesh out that penultimate paragraph:

"If you like to build products that help solve problems in the real world, become a full stack web developer. If you like the delight that comes from encountering a user experience that has considered corner and edge cases and approached them in a unique or profound way, learn how to do the hacky shit that seems super boring or mundane to other people."

Programming is only terrible if you work on something you don't care about. I'm assuming that's his real point but it gets hung up on the day-to-day frustrations of web development in particular. It's pretty clear to me that web dev isn't his favorite coding discipline, but just because it's not his cup o tea doesn't mean others don't enjoy the shit out of it. I don't get how people can love being QA engineers but far be it for me to say its terrible.


Does this person think that programming will suddenly be a breeze if it is done as a hobby rather then as a job? Even if you are programming in your own free time you will still have to deal with the perversions of internet exploder and other fatally flawed programming platforms. At least if you are doing it as a job you are getting paid for it!


I think what happened to OP is that he's getting tossed the shit work and nothing interesting, so he's doing someone else's IE support.

If you're building your own web app, you decide if, and when, to support IE. If it's bringing in $10k/month and you can double that, it's worth the hours of unpleasantness to get the additional money. If it's something you're doing for fun that isn't going to make money, you don't do the IE hacks. But there's no point in doing someone else's IE support, unless you can get a promotion or a bonus out of it.

The problem is that while he sucks at politics (that's why he's doing someone else's shit work) he doesn't know he sucks-- the first of four stages, unknowing incompetence-- so he thinks that the industry is just chock-full of shit work, because that's all he's able to get (and he hasn't figured out that you don't really "get assigned" the best work; you just do it). He needs to learn how to fight for himself; that's his real problem. Otherwise, he'll end up pulling a Walter White over-correction when it's decades too late.


Those jobs suck bad for him.

We don't all like the same things or find the same things interesting or dull. Some of us like the variety, just working on whatever a day throws up, tinkering with whatever to solves a problem a person or an organisation might have and make things a little bit better. Code which is never going to amaze or astound anyone, code that may have been written under horribly compromised circumstances, can still make a big difference to people, and for some people that in itself is satisfying.

Programming is many things, at one end an end in itself at the other a tool for doing stuff. Programmers find different elements of what programming can be interesting and / or fulfilling.

Yes, there are a whole bunch of programming jobs which are wiring up CRUD apps, or writing jobs to parse data. They're not satisfying for some people but that makes them a bad match for those people, it doesn't make programming terrible.


Just curious - why is this posted to pastebin? Is this to make it completely anonymous? Is this a thing now? I like it.


"Imagine coming to work to spend hours googling, wiring together unbelievably shitty, amazingly poor documented frameworks and battling Javscript and CSS."

That's definitely not a software engineer routine. Engineers craft/architect solutions instead of "wiring shit together". Of course, being able to re-use existing stuff is part of the job but if your job is wiring things together, specially if you do not know how those things work, you're not a software engineer.

That said, there are different software engineering gigs with different level of difficulties and solving different kind of problems. I like the advice of specializing, getting into more computer science, but that's still software engineering.

Don't get fooled just because the market is full of shitty web development gigs, that's a small portion of "software engineering".


I may be in the minority, being that I came to programming from a desire to kill the boring shit that constituted most of my old job, but I really enjoy killing boring shit. It might be a psychological tic, but even if I have under 10 users for a given script I love seeing them ask "Wait that's all I have to do?" when you show them that their computers are now doing their mindless bullshit almost instantly. Sure the given business logic might be trivial, but I've always gotten a relatively bigger kick out of user satisfaction than a fascinating problem with little user impact. (not to say that fascinating problems are either useless or uninteresting, I rather enjoy playing around with hard problems, it's just preferences of rewards).


interestingly, in some corporate places, the inefficiency is so built into the politics that if you tried to automate someone's job away, they might be scared of you! I had a friend who worked at a bank, and in one week, automated the manual process that used to take the "team" months to do (mostly excel manual data entry and cleanup). I was told they were scared of being made redundant...


Every job comes with pros and cons. I used to be a Chef - I loved cooking, but there's so much tedious work associated with it - prep work, inventory management, hiring/firing, etc...

Now I'm transitioning into the business world, and finance. I absolutely love trading stocks, and the thrill that comes with it (especially when you're on the winning end of a trade), but of course there's plenty of downsides too (reports, spreadsheets).

And of course, I write code for fun and to automate certain tasks, but even that can be tedious.

There really is no perfect job, but there are good ones. I think it's more important to maintain work-life balance than to be overly concerned about how much fun your job is...


I can totally sympathize with the way the author feels but at the same time I'm very aware of how much of à luxury it is to be a software engineer. especially nowadays with so many emerging technologies. if you're current job has become stagnant and your not afforded the flexibility or the ability to influence change then it's time to move on. if you're afraid of losing a opportunity coming from equity or share s then that does factor in. best you can do is try to apply all the amazing things you learn from sources like hacker news and wait until you're next move becomes clearer. wrote this from my nexus 7 . really like this hackers news app.


I can usually make tedious programming tasks rewarding by focusing on software craftsmanship.

If I have to write a TPS report generator, I will try to make it the most concise, reusable, tested and well documented TPS report generator that the world has ever seen.


Ditto for me, although I'd also probably write it in OCaml or some other new-to-me language just for fun.


Wow. This us uncanny. Replace 'Mensenne primes' with 'Perfect numbers', 'math encyclopedias for kids' with 'Geometry teacher', 'history teacher' with 'spanish teacher', and 'struggling country' with 'midwestern US state in the early 90s' and you've pretty much described my introduction to programming--right down to working on it with another nerdy friend.

I don't think that means much of anything, and I don't identify with the rest of the post, but I find it interesting that someone from another time and place has a nearly identical programming origin story.


Programming is like being able to build a house. the house is the product. some builders are completely driven and passionate and build the worlds most beautiful structures. Others build the ones we dont like.

programming is a toolset, its in the eye of the programmer where the passion for creativity, design and ultimately product lies. programming when combined with architectural skill creates the beautiful products we call iphones, devices, web stuff...

if someone is stuck thinking programming is just a tool they will naturally see it as boring or mundane. If someone takes that tool and changes the world with it, then Im sure they will not see it as such.


> Sometimes I also think if it would be different if I was born several decades earlier

Or you'd be complaining about writing yet another missile ballistics program, or converting another basic mathematical or statistical algorithm into MUMPS.


Or yet more likely, writing another payroll system in COBOL.


Nah, he'd got it made flipping houses.


That's a very pessimistic view of software development. The thrilling part of the work is building things and seeing people use them. That's what it's all about.

There is always grunt work, but instead of "battling" javascript and CSS you could use the opportunity to learn more about browsers, interface design, etc. Channel the frustration into building new, better frameworks, or helping improve the existing ones. There are plenty of opportunities to exercise your CS education in fast-growing or large-scale businesses. And for all I know, solving problems in the kernel or coding OpenGL could be even worse.


> And for all I know, solving problems in the kernel or coding OpenGL could be even worse.

For me, solving problems in the kernel is immensely more interesting and rewarding than fixing the n-plus-oneth CSS aligning bug. It also comes with the added advantage of using real development tools instead of nuts and bolts that barely help you.


Apples to oranges. My point is, writing OpenGL code or fixing driver compatibility issues can be just as boring. CSS is not exactly programming anyway.

On tooling, take a look at current webkit/FF/Opera inspectors, TraceGL, TernJS, the upcoming IE11 developer tools and TypeScript. You'll be surprised.


I think most of the disappointment comes from not being able to work as you'd like to, and with colleagues that just don't care. The solution to that is freelancing or changing jobs.

Or, as jwz has done, open a bar and sell beer instead.


For me, control over what I work on or how I solve a problem is the key to satisfaction. The more rigid the constraints, the less creativity allowed, the more boring the job. It's hard to find jobs that consistently allow enough creative latitude to keep the tasks fun and interesting. The OP's point about not being a general software engineer (implying specialization) might make sense. I imagine that more specialized you are, the fewer the people that are around that know more about your area than you. So you might get more creative leeway because you're the expert.


I have to agree with the notion that at the end of the day, your job is simply your source of income. Some people are fortunate enough to be in a position where their job is fun for them. Good for them. But I doubt even they have sunshine and rainbow filled days one after the other in the office. There's always the shitty task that comes up that WILL land on you. That's why your job isn't your free time (well, maybe it is for some people). Don't get me wrong, I REALLY enjoy programming. But that's why I have numerous side projects that I'm working on.


"You've got to serve somebody" -- Bob Dylan. The author doesn't say what is preventing him/her from finding a programming task that he/she is passionate about and pays enough to live on. I've been around awhile and let me tell you, there are so many more interesting programming challenges now because hardware has made incredible advances. There's only so much you can do in what used to be called 3M (one megabyte of random access memory, a megapixel display and megaflop performance.) Oh, and no internet to speak of.


Well, IE is a world in and of itself, but I rather enjoy battling shitty APIs and badly document web services. It's a great feeling when you can get a reasonably elegant fix to a braindead decision implemented in the system you're interfacing with.

Even as a hobby, I've always preferred writing a script that parses badly broken websites and sends commands over SSH to an ncurses program that does something fun and useful, than calculating some number that has been known since the 30s.

Brokenness is fun, a challenge. It's straightforward CRUD that I dread.


> Sometimes I also think if it would be different if I was born several decades earlier.

Check out section 7.6 of Phil Greenspun's SITE CONTROLLER thesis http://philip.greenspun.com/research/tr1408/complete.pdf . It seems there has long been plenty of undesirable programming work (anyone for in-house COBOL?) but a BS in CS may have been a more reliable route to interesting work before the PC software industry.


I see no section 7.6. [EDIT: Section 6.6 looks potentially relevant to the conversation.]


Sorry, that should read 7.4.


Thanks!


This is my 2nd year as a web developer, and I'm honestly very grateful. I feel fortunate to have this opportunity as my peers are working in much harsher environments for less compensation.

I've been working all day from a bar in downtown Austin, TX. My CEO is a developer and is very understanding. Deadlines have to be met, but how or when you work is at your discretion.

I previously worked in a very harsh environment with a hostile CEO, and I can understand that it can be oppressive. However, I think that the status quo is changing.

/2c


I think this sounds a lot like burnout and the sooner you admit it to yourself, the sooner you can think rationally about it and address your psychological needs and start feeling somewhat better. You probably need a total break from it for a while.

I think that almost any particular sort of work can be either wonderful or terrible depending on a lot of other factors:

- autonomy

- relationship with coworkers/management/clients

- work/life balance (cliche, but there's really something there)

- possibilities for learning new things in the course of the work, etc.


Well, this is also a terrible perspective. Programming can be like being a professional chef. There are some that become Gordon Ramsay's and others that get stuck in a greasy diner at a forgotten highway off-ramp.

Cooking professionally can be ugly, filthy, horrible hard work. There's the television version of the rich and famous cook and the reality of the actual work being really hard. And, yes, you have to do a lot of stuff you don't really enjoy doing. And, yes, it isn't all creative and wonderful.

Why am I making an analogy to cooking? Because over the last few years I've ended-up doing a lot of cooking for my family. I've studied some and really enjoy the creative process. However, I've also found myself completely and utterly fed-up with it at times. I used to be the designated cook when we went camping. The last time we went camping I drove out as far as necessary to go get take-out.

So,yes, programming, depending on the choices you make, can be like sausage making.

If you are the creative type you need to make an effort to find the right job for you or start your own business. Still, as someone else pointed out, you are going to have to stomach the idea that you are still going to have to do things that you will not enjoy. This is true of any job.

I always told my employees that I'd never ask them to do anything I was not willing to do myself (or hadn't done before myself). Examples of that were things like washing the pile of filthy coffee mugs in the kitchen area ('cause it seems that adults are pretty bad about cleaning after themselves sometimes) or getting in our Haas CNC machine to clean it. The point wasn't that I expected them to actively do these things but to realize that all of us ought to understand that there are things you don't enjoy doing that simply need to be done.

As a programmer you need to seek out work that really turns you on. How do you know? Because you can't stop thinking about it and you can't stop working on it. You want to talk about it all the time and you want to learn how to do it better. In other words, you are passionate about it.

In general terms there's a lot of mobility in the CS world. You need to take advantage of this and actively hunt for work that is really engages you while fully understanding that utopia does not exist.


I think there is a joel's on this but 90% of business software that isn't customer facing is boring CRUD bullshit that is shipped when it reaches 'barley works' stage so you can move on to the next project. This sucks. I think the answer is to go work for a company with more interesting problems to solve where software is a core competency rather than just a budget line item.


It sounds like the poster has a bit of a rubbishy job/one not suited to them.

Yes, all jobs have some boring bits, but if it's always boring then you should change!

There are really enjoyable programming jobs out there. It depends on:

- the tech-culture and environment at your work - your manager(s) and colleagues (kind of related to the previous point) - your problem space

Identify why your current work sucks and then either move or change it!


Make it fun! Music, news etc. Be proactive about your inspiration!

Programming is one of the only engineering fields that has a quick feedback loop between Hypothesis -> Results. And I love that! Also the open ended difficulty bar inspires constant accomplishment. I love it by every character typed! I have to stop myself cause I have some coding to do ;^p


I am not a programmer any more but working in the industry (InfoSec).. I remember a really smart guy who worked with us said he would be happy with 8-10 weeks of really exciting work each year. I agree with him.. if I have 8-12 weeks of really cool work that challenes me and the rest of the year is average, mundane work.. I will take it.


I agree with the Author. He is quite right. My story is really close to his. There are real things in the world, boxing for example, car driving... and so on. I really hate this programming boring stuff like digging through RFCs and implementing them, pushing and popping from the stack, handling memory, and a bunch of other stuff.


Sure, programming is a job, like working on cars is a job. You can be mechanic in a small town, or work for an F1 team. It's your call.

Just take a step back and ask, "what is the company I work for trying to do?" And if you don't like it, or don't think it's cool enough, move along. Again, it's all your choice.


This is good advice if you have the experience to be hired for an F1 team. F1 pit crews aren't hanging out at career fairs.


Programming _can_ be like an art form and appreciated in isolation.

In most cases though programming is a means to and end. In that case you've got to not only enjoy programming - but also believe in that end. When you do you'll happily wade through all kinds of language, system, and framework quirks and frustrations to get to that end.


I always just ignore the subject domain and focus on a technical challenge. That's been enough for me for 15 years so far. I haven't ever been stuck on O&M work though - that seems soul-crushing.

Get yourself some new development work, and try to pick the hardest challenges and that'll often be enough to stimulate you.


It's not doing the thing we like to do, but liking the thing we have to do, that makes life blessed. —Goethe


TL;DR; OP works in programming jobs that are not ideal for him/her, thinks all programming jobs are like that.

With a little not realising if you actually take your hobbies seriously they too will have drudgery in them at times. Not dreaming about but actually finding Mersenne primes is a world of hell.


I am continually frustrated picking up other peoples shit. I abhor the "get it working" attitude. This industry is full of sub-par engineers and lazy attitudes. No excuse, do it properly and then we can stop this "pass the buck" attitude which is common in this industry.


Any job is boring if you are not motivated by something, whether it's money or career or building something cool or learning new stuff or whatever works for you... without that it doesn't really matter if you are a programmer or banker or cab driver, you'll hate it...


Sounds to me like you're externalising the blame for your boredom. We all pass through crappy jobs.

If you find yourself in those kinds of jobs: move on. There's plenty of interesting projects and companies out there that will allow you to apply yourself. Keep looking.


> 1) the demand won't last forever;

this is one of my greatest fears. at the same time, it seems inconceivable - i can't picture it.

could programming really go the way of being a lawyer?

how would that happen - less demand for software, or an oversupply of software engineers?


> I don't think I ever caught myself writing code for my employer and thinking "hey, I really enjoy this"

If you've never really enjoyed your job I can't fathom how it's taken you so long to realise this isn't for you.


I think the point is: Either you do it because you love it or you do it because it pays well.

What must be noted is that there are other jobs that pay just as well, and do not entail as much complexity and pain.

Just ask all the hustlers who make us build their pyramids.


> Sometimes I also think if it would be different if I was born several decades earlier.

sigh

I cringe whenever I hear this in any context. If you find yourself feeling this way, you should strive to do the things the next generation will feel this way about.


What annoys me is the author has grown up surrounded by amazing tools and support allowing him/her to get into programming and is complaining that his/her particular choices have disappointed.

The world doesn't owe anyone satisfaction. It's up to the individual to find what makes them happy. Maybe some jobs aren't all that satisfying, in that case at least you now know this and can do something about it. Want to be a NASA computer scientist? Guess what, you can!

Lamenting about the 'golden days' of software where it was all tucked away in labs is short sighted. There are SO many more opportunities to do SO many more exciting things. Software is in its infancy, the real world changing tools are still to be discovered. Apply yourself.


Sounds like the poster has a job he doesn't enjoy. Might want to continue looking for a company that provides opportunities more in line with what he wants. Simple as that.


Two decades developing software and I wouldn't change a damn thing.

I recommend software engineering to any of my friends who I think would find it as fascinating and enjoyable as I have.


> I have graduated and have been in the industry for a few years

No one who can say this about themself is in a position to be making any absolute statements about anything.


Programming got me and my family out of poverty.


It sucks because what the OP is describing isn't software engineering, its web development...


Maybe the author should follow his own advice if he dislikes his daily job so much (he or she).


Seems like a complaint anyone could make about any job given theoretical vs. practical.


I very much want to come up with a coherent and inspirational repudiation of the OPs thesis. This is the second essay I've seen recently that seems to completely miss the magic of our trade, and I feel like we need some strong cheerleaders to counter this stuff.

How does a programmer NOT wake up every morning with a head full of inspired, flaming joy at the thought of what we do for a living? I've been at this for 5 years now (putting me in the same generation as OP, and the other blogger I came across) and I'm still ragingly in love with this craft. And I (_just_, you might say) write web apps. Yes, there are tedious days (we are, as many have stated WORKING, after all). And yes, sometimes the nature of constantly shifting specs leads us into some ugly code - but that's the nature of writing and designing to meet the needs of customers; sometimes customers really just NEED something that isn't very pretty.

But the root of what we do is this: we conjure ideas from memory and imagination, commit them into words and incantations in the terminal, and send out our instructions to be carried out by the machine. Making our will manifest through a medium that is almost completely malleable to our intentions. If there's another trade out there that's more nakedly similar to "wizard" I'd love to hear about it. What we do is barely-adulterated magic. And there is so much room for improvisation, art, and beauty in the crafting of our instructions, that even a simple CRUD interface can become a work of glory.

I freely admit that, in my enthusiasm, I'm sounding a bit deranged. And I'm painting this in a bit more glowing light than most day-to-day coding deserves. But it pains me to see a programmer with such a negative outlook on programming. And when that view gets touted as a warning against being a coder, I feel those of us who really and truly enjoy our trade need to be standing up and making the counter-argument - with all the ardor and enthusiasm it deserves.

Addendum: and OK, so the OP may not be making the claim that "programming" itself isn't what's bad, it's the JOB that's bad. It's writing the code that our clients need, day-in, day-out, that's bad. My counter-claim to that: writing bad code is a choice. You can look at every problem that comes to you as "just more toilet cleaning", or you can look for the aspects of the problem that separate it from all the code you've written before, and start writing the correct, clean, elegant response to it. And if you're solving the same problem a second time, well it ought to be that much easier than before, right? If you solved the problem PROPERLY the first time, there should be very little work in solving it a SECOND time. So now you find yourself getting paid to do less work, while - hopefully - leaving yourself room to more fully commoditize whatever process you've found yourself on, making it easier to KEEP getting paid while doing less and less work each time. With your remaining time, you solve OTHER problems, and continue filling the pipeline with magic and money.

Seeing the job as tedious and boring starts as a choice you make yourself. Getting back the magic you felt in your youth is just a matter of remembering it; and choosing to see it in the next project that hits your inbox.


I'm in total agreement. I find programming just so fascinating and beautiful in a way that's like nothing I've ever seen or imagined. I find everything so sublime, and I'd still say that at 2am at the end of an 8 hour solid programming session.

I'm much newer to this (one year and still studying) but I really hope I can feel this way for the rest of my life.


At it's core, what is programming? It's the skill of being able to leverage turing machines, symbol manipulators, to an end.

In a world being eaten by software, in a world where information is on its way to becoming the most atomic unit of value, it's hard to imagine a more profound and useful skill.


that's open source exist.some part of the work doesn't give the flexibility what you want to build.if you're happy with it share it and share your happiness with others.


Yeah, it's the worst job there is. Except for all the others.


So the article is saying go be sys admin?


I understand OP's sentiment and I'm glad that he (assuming he's a guy) at least admits that some of this is youthful idealism having a tough run-in with reality.

That said, I don't think he has to stay stuck in this mentality. And, there are many benefits to being "just a software engineer". Much of it depends on your attitude towards life and what you're expecting and/or hoping to get out of it.

First, it's important to recognize that as we get older, we'll eventually have to confront the fact that not all of our dreams and ambitions will come true. If you look at the number of thought leaders in the industry in ratio to the total number of programmers, very few make it to the top 1%. I don't think it's a zero-sum thing, it's more that at a certain point, people give up and decide to do something else. OP may be one of those people who decides that because reality didn't match his expectations, he's just going to give up. On the other hand, he could decide to push himself and his understanding of what it means to program to a new level. And then he might see new opportunities in his current job that he hadn't noticed before. I know that this can sound hopelessly fanciful and idealistic, but it really is true and quite possible; I speak from my own experience here.

Second, one of the most awesome things about programming - regardless of the type you're doing - is that it helps improve your mind. Since I've been in the tech industry, I've found that my thinking tends to be cleaner, more rigorous, and more realistic (though not always, of course). I have an easier time understanding difficult topics than I used to and I also find the process of learning easier than in the past. For that reason alone programming is a worthwhile pursuit. Who doesn't like their mind to work better?

Finally, OP has some growing to do and should try to realize that his current predicament has much to do with his attitude and little to do with his actual job. As other posters have noted, this problem exists in every creative industry. You were excited about the pure fun of it when you were younger, and now you feel mugged by reality as it were. Part of this could relate to our model of education which sometimes makes it seem as if academia is much preferable to actual private industry work. Like they said in Ghostbusters - "they expect results in the private sector!"

My advice to OP would be to try and balance his current work responsibilities with something fun outside of work, something that gets his juices flowing. Learning to bring a sense of play into your really helps, otherwise yes...the sense of drudgery can kill you. So the trick is to learn to stay positive. Sounds like a tall order but it's definitely doable.


try being a full time mom !!!


For you.

Not for me.

Mine is a Wonderful Life.


I love programming, it makes me a good living, but I hate working for other people.

My main issue is a manager or a boss that can't manage a project properly and it crashes and burns (and I just have to watch and smile) or I am forced to work weekends or extra hours because of it.

This has happened at nearly every development job I have ever had. So, I started my own company and now work for myself.


We're a broken tribe. Why build something yourself, when you can have a code monkey do it. I do feel like a code monkey.

No wonder we have so many product managers, project managers, UX designers, UI designers, other forms of designers, but very few developers.

No wonder people rather be PMs of different sorts.


I've been a PM, and also worked with software on a more abstract level (enterprise architecture). Came back to coding, and am happy with it. I much prefer poorly documented franeworks and half-baked tools to the day-to-day nonsense of politics that is inherent to working in higher-level role in any bigger organisation.


It's an absolute luxury to be able to get paid exorbitant amounts and not having to break a sweat. Oh wow I had to parse CSV files for four hours, poor me. What if you had to break your back on a farm 10 hours a day with the constant uncertainty of whether you'll make a dime or survive until next year?

Your job is what you make of it. Bring some awesome music, change your desktop background, install a new theme, read some shit during lunch. It's what you make of it, and you're in a better position than a lot of the people out there!


I really hate the attitude in the first few sentences. The "your life is better than others so be grateful" idea never really applies, its like saying "your neighbor gets beaten three times a day, so don't complain when you only get beat once!". Just because someone else's life is worse than yours doesn't mean your own is so great. Also, the person breaking their back on a farm might be doing that because they made choices in life which lead them to have a poor future.

As for your job being what you make it, I totally agree. There are lots of ways I have made my work life better recently even when I hate my job (for example I got a keurig) and until you do everything you can in that aspect you can't be sure you won't be happy. When you do all of these and THEN still aren't happy, find a new job.


Actually, look at it from the farm boy's POV. "That guy sits in an air conditioned office all day creating some really cool stuff and he COMPLAINS?!?!" Kinda like the same feeling if you run into some rich brat complaining that he only has 5 yatchs and 2 mansions, etc. I mean i am up for the notion of always striving for improvement in your life, but why the ingratitude? Be grateful AND strive for better. You can still earn another million bucks WITHOUT complaining that you only have one million right now.


That's not the same at all. Comparing getting beaten vs getting beaten more is not the same as working in an air conditioned office vs a farm.

To make any job "fun", I always have IRC and messages going so I can talk to people a lot of the time. Keeps the day exciting.


>I always have IRC and messages going so I can talk to people a lot of the time

In a lot of software shops, you are not allowed to chat, use IM or even bring headphones (like here)


You know, I will give you that.

My experience and I would venture to say most of the comments are based on people working in North America (or a similar place).

I would say that likely you work for a company that is either based in India or another similar country. I can definitely see how they would treat software developers like a sweat shop.

And its tough as "change your job" doesn't readily apply.


Even in India startups are not putting any such restrictions. Right after my graduation I joined a startup where we used to play UNO cards, access facebook, hear songs, play guitar etc. But I guess it is just the opposite in software MNCs like TCS, CTS, Infosys etc.


I'm not sure iSnow is in another part of the world, because there are actually plenty of companies in North America that do not allow programmers to bring headphones or use IM at work.


I could understand the IM part. The headphone one?

I don't dispute what you are saying but that seems to much for a software company to be doing in North America.


I agree, but the majority of programmers are not working at software companies. As many old-timers pointed out to me when starting out, software developers are generally treated better at software companies than other companies that may see them more as a cost center than a profit center.


>I would say that likely you work for a company that is either based in India or another similar country

Actually Germany and the company has its strongest workforce in the US.


Fixed your title: "Programming [JavaScript] is a Terrible Job [for me]"


I came to this late and will probably get buried. Anyway, here goes.

1. Programming punishes you brutally if you do it wrong. Bugs occur for what seems like no reason, problems are unsolveable, and the job becomes an unrelenting, unrewarding slog. (Conversely, it's a hell of a lot of fun if you're doing it right.)

2. Some companies and teams are managed by idiots who will force you to do things wrong. If you're 22, you'll probably end up working for at least one or two before you're 40. Leave them, because...

3. Until you get used to doing things right, and learn how to things properly, and get the credibility that comes with actually being good at this job-- and that takes a while-- nothing will make sense and your career will be for shit.

When you're bad at your job (and everyone is, when starting out) or when things are bad, it's not obvious. Nothing is ostensibly bad, so much as incoherent. You get trapped in a flood of grunt work that seems beyond automation because either (a) you're not skilled enough, yet, to do it; or (b) you're not in an environment of excellence that encourages automation. When things seem unpleasantly stochastic, get out and move to a more coherent place.

The issue with OP is that he hasn't figured out that solving the right problems is far more important than solving the highest percentage of what's put in front of you. IE hacks? If it's your web app, or if you're strongly investigated in the success of the thing, make a cost-benefit analysis and decide whether to do the IE hacks; at least if you end up doing them, you're doing them for you. If it's someone else's ambition and you know that doing good work won't be paid in kind, just do well enough on the grunt work to avoid political adversity. Then pack away as much time as you can to learn the skills you'll need, and make the contacts you'll want, for the next act.

Rule One, which should never be broken: if it's bad for your career, don't work on it. I'm not saying never work on unpleasant stuff. Sometimes, the unpleasant work is important. If you ever want to be a founder, you have to get used to doing annoying or unpleasant work when there's no one else to do it. However, if the work actually hurts your career-- and there is plenty of work like that out there-- then it's virtually never worth doing.

In the short-term, if your boss considers it important, it is (by definition) good for your career. However, if you're getting tossed the IE support while the interesting work gets passed on to favorites or hogged, then it's time to (a) just get up and do more interesting stuff-- it's better to ask for forgiveness than permission-- or (b) find another team or company. So long as people like OP don't realize that they need to take self-executive responsibility for their own careers, they'll be doing the shit work no one else wants to do.

Programming gets a lot better as you (a) get better at it, (b) gain credibility, and (c) learn the warning signs that surround bad jobs and failing teams. There are a lot of people who get to work on better stuff than someone else's IE support. It takes a while to get there, and it's done one day at a time, but unless you're untalented, steady progress will lead that way. Even if you don't care to play politics actively, you have to learn the warning signs. That takes years. Until you develop those skills, everything seems nonsensical and wrong, though; and the industry seems uniformly terrible. It's not. It's mostly terrible; the good news is that it's mostly terrible because of the MBA-style, anti-intellectual management that used to be common everywhere, and that's slowly going extinct-- because what it produces is of too low quality for it to survive.


noobs gonna noob.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: