295 comments

[ 2.9 ms ] story [ 285 ms ] thread
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...
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.

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...
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
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..

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.
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.
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.
> 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.

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.

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."

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'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.
(comment deleted)
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.

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.
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.)
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.

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.

> Solving problems is interesting. Repetition is terrible.

DRY.

Solve the problem of repetition.

(comment deleted)
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.

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.
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.

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.
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.

> 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.

Yep. The worst thing in the world is to willingly waste your time.
My advice: never ask your boss to do something that will make both of you look better and presents no risk.
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.

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.
> 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.
(comment deleted)
It's not doing the thing we like to do, but liking the thing we have to do, that makes life blessed. —Goethe
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.

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.
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.

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.
As someone who was in academia in mathematics, I'm excited to have a career programming. I'm continually learning stuff that has practical importance, instead of abstract questions that I usually can solve that is mental masturbation for the most part.

Being able to create full stack websites excite me, since I am able to create websites for friends and/or communities I am a part of, providing a valuable service that isn't all too common I find.

I disagree with the conclusion drawn - it's only terrible if that isn't what you want to do. However, that is more on the author, and less on programming.

> 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.

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.
Programming is a laboratory. Writing programs isn't productive in itself, it's only productive if you can solve a problem which can be solved by a computer. Nobody really cares about primes number, it's just an easy exercise to write code that solve one problem. You need to put the real world into a computer's perspective.

But in order to make a program that is actually useful, you have to understand how computers can be useful, and that's what you need to understand if you want to make your programming skills useful.

There are still many ways computer can be made useful, the problem is, programs need to adapt to real life problems.

What the author describes is its inability of doing actual innovation. Innovating requires one to know a particular domain, and propose a solution that can be done with a program.

Specializing in an existing domain, like graphics, kernel writing, or compilers, is not productive in itself, because those are niche domains which only revolves around computers, they don't solve real life problems. Maybe they will one day, but I doubt advising many students to focus on those issues is really a good idea. Those domains are important, but there will always be enough skilled people to take care about it, and often, those people work in particular company background.

Don't put programming or computers on a pedestal. It's awesome, yes, but innovating can't be a circlejerk. You have to get out to prove your skills are useful. You need to do business with it, and often, most companies don't do it well because entrepreneurs don't understand what computers can do.

You just need to understand computers are intelligent, but you need to teach them. That's what true programming is. A bunch of GOTO, a functional language or any new embedded device will not help you make computers useful. If you're not happy with your job, invent your job, and it will be hard to be heard because your project will need to be rock solid if you want to start it up.

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/

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.

> 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?
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.
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.
> 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.
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.
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?

> 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.

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?

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.

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.
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.
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?
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.)

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.

>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.

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?
> 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.

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?
So there are billionaire baseball coaches?
In fairness, there are billionaire team owners, but they didn’t become billionaires by founding baseball teams.
"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.
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.

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.

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.

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.)

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.
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.