Hacker News new | comments | show | ask | jobs | submit login
Is developer compensation becoming bimodal? (danluu.com)
381 points by signa11 7 months ago | hide | past | web | favorite | 561 comments



One (semi-pedantic) quibble with the article: there absolutely are barriers to entry for programming. Programming is hard! These barriers may not be artificial, but they are real.

To use a non-software example, there are barriers to entry to chip manufacturers and power companies even under anarchy. Fabs are tremendously hard to build. Power plants are extremely hard to build. Building up knowledge and skills about computers is also very hard, especially when our genes don't seem to guide us toward thinking highly logically.

And programming is hard because it requires us to understand a bunch of modular systems and then the systems they're built on, all the way down, and in some cases, all the way up. Then, we have to understand the whole integrated system of the individual modules. Not all programming problems require this level of difficulty, but these problems do exist. I've been on teams where I'm the only one who understands what the OS is doing or the CPU is doing or what the network is doing or why some other distributed component might have stopped working. Most of my teammates in these cases seemed to enjoy programming, but didn't care to become overall experts in computers as a whole.

I once had a top-tier business school grad friend claim that programming really isn't that hard and that we're all whiners. He is a genuinely smart person. Today, he himself is trying to code in JavaScript on the client side. He's a friend so I help him, but the problems he has are junior-level or even entry-level. Suffice it to say, I haven't heard much more about how programmers are "whiners" when we say programming is hard.


If you want to know just how hard programming is, try teaching it to someone.

Programmers have to remember a vast amount of domain knowledge. Consider the basic task of choosing where you are going to store some data, well first you need to know which options exist and there's dozens of them (do you want Postgres, SQLite, Redis, LevelDB, ..?). Then you need to know the strengths and weaknesses of each. And I hope you have been keeping your knowledge up-to-date because the answer in 2018 is very different to the answer in 2008.

The lack of barriers to entry actually makes it harder. There are "law schools" and "med schools" to teach you all the knowledge required to become a lawyer or a doctor. There is no "programming school", every programmer is self-taught. A computer science degree hardly scratches the surface.

While there are specialisms, such as game development or embedded development, most programmers are expected to be generalists. You may find yourself needing to write networking code, and there's a whole bunch of knowledge that goes along with that. Or, many programmers end up having a working knowledge of cryptography.

Sure, almost anybody can learn JavaScript or Python, and write code, but learning a programming language is only 1% of the job.


> There are "law schools" and "med schools" to teach you all the knowledge required to become a lawyer or a doctor.

Programmer now, gained a law degree in a previous life. Know lots of folks who studied medicine.

The idea that med school or law school teach you "all the knowledge required to become a lawyer or a doctor" is laughable and a truly absurd statement. The sheer size of the problem domains these subjects cover alone renders this impossible, and furthermore I'd argue it's pretty insulting to insinuate that Computer Science is somehow more difficult in this regard.

While I can't speak fully for medics, a law degree "hardly scratches the surface" as you put it either.


> While I can't speak fully for medics

Medical school will teach you the basic science and theory and give you basic clinical experience, one still needs to complete a 3 to 7 year residency in the field one wants to practice in. Then there are fellowships that one may want to do if they want to specialize even further.

It's definitely not the case that you learn everything you need to know in school.


I don't think that is what he/she meant. I don't know what your professional software experience has been like, but software is applied and required to some extent in all industries nowadays, and therefore there is a broader scope required. It is also more of a moving target. I'm a contractor providing software engineering services. One contract I might be doing Subsea control systems, the next OpenGL graphics hardware programming sprinkled with Java and Eclipse, the next contract may be embedded assembly language for turbine control systems etc. Law/Medicine maybe moving, but I am fairly certain a doctor or lawyer does not "move as fast". They tend to stay specialised in maybe an area or two. In fact, for a serious medical condition, from a patients point of view, I would be quite alarmed to be seen by a doctor that has not "specialised" in my condition. Ideally, one that does nothing but my condition. I think it is easier for a doctor/lawyer to fall into the trap of becoming specialised in one or two areas alone than a software engineer, simply for the fact that if I did not constantly have to become specialised in a new area, usually for every contract), then I would not be able to pay the bills. So I imagine that is what he/she meant.


Your point is a good one, but to me it confirms the comment you are responding to.

> The idea that med school or law school teach you "all the knowledge required to become a lawyer or a doctor" is laughable and a truly absurd statement. The sheer size of the problem domains these subjects cover alone renders this impossible

You seem to be an example of a programmer that can be good and proficient in many different fields, languages, and scopes. You don't really see that in law or medicine. Doctors can't jump around from orthopedic surgeon to psychiatrist to dermatologist. And it's very uncommon (at least for lawyers under 60 or so) to be both a corporate lawyer and a litigator.

As giobox mentioned, the sheer size of the domains of law and medicine all but require doctors and lawyers to specialize. That's certainly true to some extent with computer science but it doesn't seem to be quite as strong in that field.


I think you misinterpreted me a little. I think the reason that lawyers and doctors cannot "jump around" is not because, for example, a lawyer cannot absorb the information required to be both a good corporate lawyer and a good litigator, due to it being too much. They can. It is that the system that they choose to be in (law/medicine) demands the individual to be certified and formally trained to such an extent that it cripples this kind of professional mobility. This is not true in software. Not because of any other reason other than society is catching up. Unlike the fields of law and medicine, where those fields are growing "linearly" with society. It is also the reason that I do not by law require to be a chartered engineer to perform my job to the full extent.


The (jurisdictions will have their own phrasing) 'demand' placed upon lawyers is that they are competent at the work they're doing.

The magnitude of knowledge needed to push a company to become public or undergo a merger, to litigate a divorce with children in custody, to defend an individual in a murder trial, or to litigate an aboriginal rights claim is substantial and there is very little overlap between them.

The issue isn't the regulatory requirement for competence - it's that the fields of specialization require years to become decent in.


I have limited idea whether its fundamentally barriers in terms of the subject-matter (because I do not know or practice in multiple fields of medicine) or in terms of the social structure (where it is pretty obvious the highly structured/time-based hierarchical regulated fields).

But I will say one of the MAJOR things that I LOVE about programming is its relative lack of artificial and social barriers. In psyche, med, law, science: even if i am good enough to pick something up in 6-12 months, or even if I have already been studying or been experienced in said field (say because I have a family member who has been surreptitiously teaching me or bringing me along on the side), there is an inescapable time, money, and social barrier that is effectively immutable.

I can't REALLY do law/medicine without running them in serial, paying the fixed costs of time/money for both (which almost no one has), and I can't fast-track through either or leap-frog students or peers of lesser ability. And god help you if, half-way through, you then think that something in chem/physics might be interesting and applicable. Or if you have the insight/ability to say: i think i'd learn more over there (well too bad, these are the requirements for the program and this is the course structure and this is what you need to do to get your practicing certificate...and except in exceptional circumstances, that's even if you had someone in a position of authority who would agree with you).

Those barriers have not yet been established effectively in programming. Sure, some people tried earlier to establish things like certification and structure, and we're now starting to see the germination of university degrees in arbitrary specializations, and that force will always be there, but few people take them comparatively seriously. The barriers to entry are low (you could almost always even just pirate some software to get started and install it on relatively cheap generic hardware). And if you want to apply it to different fields, you quickly find the barriers aren't generally from the computing/programming side, but from the social/structural barriers inherent in those fields in our society.

Now to be sure, we get the downside of this too: cranks, frauds, used-car-salesmen, agile coaches, wannabes, fads, marketing, etc.

But they don't stop me learning for my own ends, and if i ignore them they have no effect on what I can learn for myself once I pass the relatively low barrier of stable employment and income and basic hardware. And my knowledge makes me more employable and more attractive.

Whereas there is no way I can participate or do the same with engineering, medicine, or law etc without effectively cancelling my life and/or desires in other fields.

And whereas my knowledge and self-direction make me immediately more employable and desirable NOW and at all times in the future in programming, i have huge sunk, upfront, and opportunity costs for several years to participate formally in each of those other fields.


Yep. Except I would consider what I do as mostly engineering, and what I said above still applies. Subsea oil/gas control systems, gas turbine control systems, etc, but then sometime just desktop applications, eg OpenGL/Java etc. All need software. But all engineering, although I would say the desktop application contracts are less engineering, more programming. But then we would have to start talking about the whether programming is actually engineering so don't want to go there :)


I am about to graduate from law school. I also agree that a law degree "hardly scratches the surface" of law.

That's why in most countries lawyer candidates are required to do mandatory legal internships. And even after becoming a lawyer, you need to gain a lot of experience before you can be trusted to practice law without the supervision of an experienced lawyer.


One of my law professors speculated that you learn about 3% of what you need to be a lawyer in law school. At the time, I thought that was a bit conservative. In hindsight, it seems pretty fair.


Do you have a throwaway email? I'd like to ask you a few questions about transitioning from law to programming. Thanks.


Afraid I don't really have much to say about this - I did a postgrad Computer Science Masters, applied for Software Engineer jobs and started new career immediately following completion of Masters. I've known several law graduates follow this path. If like me you've always had an interest in the field and were a reasonably competent programmer before starting the CS degree this wasn't all that difficult by comparison - I found attaining the CS Masters easier than studying Law if I'm honest.


CS PhD here and worked over a decade. Yesterday, I made a list of over a dozen technical areas in CS I feel inadequate on. I think the issue is not that a CS Masters is easy. It is that CS knowledge is a never ending firehose. When I graduated (2008), most NoSQL systems were not even created. For anyone transitioning from law/medicine to CS, while I welcome you to the field (good for you!! tech is awesome), just be aware that tech gets obsolete very fast. While an older lawyer or doctor may be considered experienced, the newbies right out of school may run laps around you (lots of examples but the creator of Ethereum comes to mind. I know oh so many PhDs who work on distributed systems but it took a Waterloo undergrad student to think out of the box).


Yeah if we're talking about barrier to entry, I can't think of one much greater than the LSAT.


That's an interesting idea. What would you say makes the LSAT difficult?


>furthermore I'd argue it's pretty insulting to insinuate that Computer Science is somehow more difficult in this regard

Why in the world would that be insulting and who is it insulting to? If anything it's a reflection of how immature the industry is and how computer science degrees have minute overlap with software engineering.


> Why in the world would that be insulting and who is it insulting to?

It’s insulting to diminish the legitimate achievements of other people through unjustified comparison, in particular when doing so results in the elevation of the person doing it.

There is no objective criteria by which we can state computer science is a more difficult field than law or medicine. To imply that is therefore offensive, and people are not “immature” just because they react to offensive things by being insulted, even if you believe they shouldn’t feel insulted.


It's insulting to all the people who are doctors/lawyers/any number of other fields where the degree is just the entry point to being able to work in it.


> Programmers have to remember a vast amount of domain knowledge. Consider the basic task of choosing where you are going to store some data, well first you need to know which options exist and there's dozens of them (do you want Postgres, SQLite, Redis, LevelDB, ..?). Then you need to know the strengths and weaknesses of each. And I hope you have been keeping your knowledge up-to-date because the answer in 2018 is very different to the answer in 2008.

I'm pretty sure 90% of us would just look for a Stack Exchange question describing a bunch of popular database platforms and choose whichever looked best after thinking about it for a few minutes, and that outside of extreme circumstances (>terabytes of data, distributed over an actually unreliable network, other exotica) almost any option would work well enough.

Which is to say, programming is complicated but it's not very precise. Compare to mechanical engineering, where if you use the wrong steel your bridge will fall down; or to medicine, where if you prescribe the wrong drug someone might just die. So while there's lots that's useful for a programmer to know, if they don't know it they can get by alright almost all the time, and it's really hard for their managers to tell the difference. (Which is also why we can get away with not having a "programming school" beyond a handful of required courses for a CS degree.) So it's hard for this to seem like a very effective barrier to entry.


> Compare to mechanical engineering, where if you use the wrong steel your bridge will fall down; or to medicine, where if you prescribe the wrong drug someone might just die.

Dereference the wrong pointer and the rocket blows up. Forget a memory barrier and the robot brain gets corrupted memory and sees human life as an impediment to paper clip maximization. Forget to zero out some memory in a goto: cleanup section and suddenly there's a back door in a popular security library leaving machines to the whim of any curious script kiddie.

I know a lot of people aren't working on real time systems or encryption libraries that have the same level of significant consequences as what you're describing, but some are.


For software developers (and in fact, for the general public), the smart play is to rely on real engineers to provide mechanical, electric, or electronic failsafes in their designs.


That seems to have worked well for Intel.


Nowadays the electronics has code in it.


And most mechanical engineers are not necessarily making bridges, they are making adhoc small objects.


> I'm pretty sure 90% of us would just look for a Stack Exchange question

When you're starting from scratch, I think the bigger barrier isn't "where do I store this data", it's "what the hell is data"? Try to explain to a computer illiterate person that the latest Mariah Carey CD is just a really big number and you'll get a glimpse of this. The person who knows they can jump on Stack Exchange is already past the worst part of the learning curve.


> When you're starting from scratch

And other times. I've been working in software for almost two decades. I ran into a particular data problem that I could describe but didn't know the name of (a la wizard of earthsea). So I couldn't search to see how others had tackled this.

Google and blogs and YouTube and stackoverflow have pushed the boundaries of knowledge. You don't need to know exactly how to do something (for many kinds of tasks) but you do need to know what it is called, and how to adapt what you find on the net to your situation.


You haven't seen some of the really generalized questions that come up on stack exchange then. ;-)

That said, it's often a great resource.


> I'm pretty sure 90% of us would just look for a Stack Exchange question describing a bunch of popular database platforms and choose whichever looked best after thinking about it for a few minutes, and that outside of extreme circumstances (>terabytes of data, distributed over an actually unreliable network, other exotica) almost any option would work well enough.

And you're the reason why I have to mop up poor performance because someone decided to use MongoDB for highly-relational data.


Oh, yes[1]. I was arguing why there isn't a knowledge barrier to entry into programming, not why there shouldn't be one. :)

[1] Well, not me in particular! I know the important things and only use SE for looking up trivial details, of course. But maybe not everyone agrees with me which is which...


I'd argue the reverse: that in software, very small errors can have vast consequences, but it's virtually impossible in many cases to tell what those consequences may be or where they'll fall.

The reason is that software systems are at another level of complexity.

The Space Shuttle is often given as an example of the most complex machine every built, with more than 2.5 million parts. The Airbus A380 has about 4 million parts.

https://www.quora.com/Whats-the-most-complex-machine-ever-bu...

The Linux Kernel, not necessarily the most complex software ever written, has nearly 10 million lines of executable code, over 12 million with comments, scattered over 36,000+ files.

https://www.quora.com/How-many-lines-of-code-are-in-the-Linu...

Google's back-end cluster and services are frequently given as the most complex software existing.

The full LoC in Debian GNU/Linux has been estimated as 324 million as of 2009. This is the stable archive, which includes somewhere between about 30k to 70k individual software packages (I'd have to do some digging to see what the count was for the stable release as of 2009).

https://unix.stackexchange.com/questions/111281/exploding-am...


>I'm pretty sure 90% of us would just look for a Stack Exchange question describing a bunch of popular database platforms and choose whichever looked best after thinking about it for a few minutes

I used to do that but I got burned more than a few times.

These days I do a bunch of research - sometimes days, including tracking down obscure blog posts about obscure issues, reading issue trackers and spiking code. Can feel like a waste to begin with but it's saved me from some very dark places.

I would not trust stack exchange or stack overflow for a technology recommendation ever.


I don't think the problem with programming is that it is complex or has wast domain knowledge, it is true, but this is not a unique problem.

I think the biggest barrier in programming is just how abstract and alien it is, cognitive load can be enormous. Try to teach engineer about materials or steel liquation or semiconductors - it might be abstract or complex but at least it is dealing with real life physical processes.

With programming it is whole different galaxy. Like explaining pointer arithmetic to someone who just started learning CS. Or recursion, or asking someone to rotate tree in their head - there is a huge chance it will simply BSOD them. Programming is much more close to theoretical physics or maths than engineering.


It's a good thought, but I agree with madengr. Other disciplines are faced with abstract challenges, and even those in plain sight are very difficult to reason about. Magnetic fields. Rotational moment of inertia. RMoI--still so confusing. Even simple to explain, easy to observe concepts can still be abstract and difficult to understand.


Have you taken a course in semiconductors? Just as much abstraction there, and EE in general, as CS.


Programmers have to remember a vast amount of domain knowledge.

It's even more elementary than that, I think. I've encountered lots of intelligent people who lack any sort of diagnostics skills - absolutely essential for being a programmer.

Things like.. the landline is broken. Well, then, get another phone, plug it in and see if it works. If it does, then it's the phone we need to look at, if it doesn't, we need to move further up the line.

It frequently boggles my mind how many people struggle with simple elimination, experimentation, and narrowing down to resolve problems, and I'm not sure such people could become developers without this ability.


That's learnable. For example, military forces teach enlisted people with varying levels of skills how diagnose systems, and it works.


I disagree. It may be possible to teach a monkey to perform X. But can you teach a monkey to teach another monkey to perform X? EDIT: no implied insult there.


You can disagree but you would be wrong. I have personally taught people to diagnose and repair systems. Many others have as well.

There are are also formalized methods of teaching how diagnostics. And training on how to teach it. So yes, you can teach a monkey how to teach another monkey to do X.


Not if X is problem solving, which is what I was getting at really. For example, you could teach a monkey to teach X to another monkey, but what if the other monkey did not consume the learned material. Then the teacher monkey would not be able to adapt to still achieve the goal of teaching the student monkey. What you say works, assuming what is being taught is simple, and there is no feedback from the monkey that is being taught to teacher monkey.

That feedback loop from student to teacher, is similar to a problem that you tried to fix, and it still doesn't work. You then need to adapt, just as the teacher monkey would need to when the student monkey did not understand what was being taught. How you adapt to the input from that feedback can not be taught, because the particular feedback that one will receive in the future cannot be predicated (for complex troubleshooting etc).

Sorry for bad monkey examples. :)


This is so true. In my job, it's the problem solving ability that is valued. Not the innate knowledge of tools etc that we use to solve the problems, however that is, off course, required also.


I have an issue with that: law school and medical school certainly do not teach you how to practice law or medicine. Computer science sounds akin to both: you get theoretical underpinnings (many of which are outdated or will be unneeded for your specialty) but all your actual learning is on the job.


Agreed. I've done both law and programming. Law school categorically does not even try to teach aspiring lawyers how to practice. The classic curriculum is designed to teach you how to "think like a lawyer." There are exceptions here and there, but if you want practical skills, you have to deliberately look for the handful of seminars and clinics that teach them.

Between learning to program and learning to practice law, once you get past your chosen programming language's syntax and a few core CS concepts - learning to program is much easier.


Learning how to do X can be very easy if you accept an arbitrary level of competence as enough to claim "I know how to X".

I have the feeling that a lot of people can believe they have learned to program while all what they did is to go past their chosen programming language syntax and grasped a few core CS concepts.

That's quite a low barrier to entry, but if that's what people mean when they hear the word "programming", then I'd argue that Software Engineering would be a better name for the field we're here comparing with practising law.


Don't let the electrical and hardware engineers hear you say that, that'll just open the old debate about whether software engineering is really engineering at all. (Kidding.)


In the UK the practical skills are taught postgraduate in a Legal Practice Course.


To become a good programmer you need either a gift (which some young people have) or experience -- lots of experience. A CS education gives you a good foundation, but you still need to learn so much more: software engineering practices, lots and lots of details, a variety of programming languages and their huge libraries, mistakes mistakes mistakes (so you can learn the patterns, so you can spot them in code reviews, so you can avoid making them again, ...), full-stack-ness (so you can scale, so you can foresee problems before they strike), ...


To be honest I'm not really sure how it works in the US, but in the UK if a doctor has passed their exams to become a registrar, they are by that time reasonably competent to practice their chosen speciality (except for surgeons). Obviously being a doctor requires a lot of practical on-the-job training but the point is the whole process is managed top-down.

Programming education is totally ad-hoc and you can be a great programmer even with a degree in agriculture.


> Consider the basic task of choosing where you are going to store some data

Yes, do consider.

In many, many cases the appropriate answer is "whatever stack you're familiar with".

In maybe 10% of cases the answer will boil down to technical requirements and you'll need familiarity with "Postgres, SQLite, Redis, LevelDB, ..."

And that's where the bimodal distribution comes from.

> There are "law schools" and "med schools" to teach you all the knowledge required to become a lawyer or a doctor. There is no "programming school", every programmer is self-taught

I don't know a lot about the law.

But if you think that MDs are not "self-taught" in the same way bootcamp graduates or CS graduates are "self-taught", you should talk to an MD some time.


> If you want to know just how hard programming is, try teaching it to someone.

> The lack of barriers to entry actually makes it harder. There are "law schools" and "med schools" to teach you all the knowledge required to become a lawyer or a doctor. There is no "programming school", every programmer is self-taught. A computer science degree hardly scratches the surface.

+1024

I have said quite a few times that the best CS program is one where you learn how to learn without being spoon fed. In fact, I know a couple great programmers who were _not_ CS (one studied econ; the other, physics), and they similarly learned how to learn without being spoon fed.


Yep. I've talked before that we are doing a huge disservice by not focusing on the sequential logic of programming, which is the first barrier to overcome. Also, we reinforce memorization over problem solving in maths throughout school. Hearing students say, "When are we ever going to use this?", was not uncommon when I was in school 15+ years ago. And as far as I can tell, the push for standardized curriculum and testing has only made this worse.

https://news.ycombinator.com/item?id=15164948#15168430

https://news.ycombinator.com/item?id=12589473#12592521


I've been teaching my partner bits and pieces of programming. Sequential logic, and control flow were some one of the easier topics.


I call this the essential learning skill and am totally bummed that our public education not only does not cultivate it but actively deters it.


I run a Computer Science academy, and that’s quite literally our goal.


Which is why I question the usefulness of a computer science program/degree for the vast majority of dev positions. Learning how to learn would I imagine be the best use of such a degree; but then one with at least half a brain, given a few years in the field, starts to pick that up independently.

I chose to avoid computer science degrees because in those days, in the late 90's, it was pretty much 80-90% math classes. I don't regret getting a degree in a totally different discipline: it turns out learning philosophy, history, linguistics, writing, etc. etc. was far useful to me as a person (and, arguably, a worker) than some boring math classes ever would have been.

Have comp sci curriculums improved in that time? Given that job interviews these days last 4-8 hours, require group approval and whiteboarding in front of an audience, I would argue, NO. Obviously, no one trusts the degree.


The number of hours of hands-on programming in a degree (probably only a couple of hundred a year) are too few for a graduate to learn anything but the basics.

Most professional programmers would put in more hours of hands on programming in a months work.


The funny thing to me is that you implicitly mention something else in this point. The languages/databases you specify are all popular in web/mobile/end user based applications, and almost exclusively never used in enterprise where C#/java/Sql/Oracle still make the vast majority of tech stacks.

You could add another layer to what you are saying as do you want to build apps? platforms? or enterprise line of business software? if so you need to know entirely different stacks. Then you need to know what is important to being "good" at the chosen stack.

This is just a long winded way of agreeing with you, there are vast amounts of knowledge required to "make it". Most importantly you cant ever feel like you know enough and stop trying to learn. I took about 12 months off from stretching myself and now I feel 3 years behind...


> If you want to know just how hard programming is, try teaching it to someone.

Continuing with the example from the article: law and medicine are also hard. Try teaching those to the same set of people.

> Programmers have to remember a vast amount of domain knowledge.

Programmers are not at all unique in their need to understand significant domain knowledge. Essentially every knowledge-based field, including those with licensing barriers to entry, also have this requirement (and arguably to a greater extent).

> And I hope you have been keeping your knowledge up-to-date because the answer in 2018 is very different to the answer in 2008.

Lawyers and doctors must also keep current with their field and the industry in general. If anything, the degree to which they must keep up with their respective fields seems to be a difference of degree when compared to software developers, not of category.

I don’t think any of this difficulty is the reason why programming enjoys high salaries, because (circling back to the article’s thesis), it isn’t distinct from other fields with higher barriers to entry in that respect.


> law and medicine

Law and medicine also trend towards bimodal compensation.

There is an enourmous earnings difference between the top echelon of lawyers and all the other lawyers.

Same thing for specialist surgeons.


> Programmers have to remember a vast amount of domain knowledge. Consider the basic task of choosing where you are going to store some data, well first you need to know which options exist and there's dozens of them (do you want Postgres, SQLite, Redis, LevelDB, ..?). Then you need to know the strengths and weaknesses of each. And I hope you have been keeping your knowledge up-to-date because the answer in 2018 is very different to the answer in 2008.

And yet there are a lot of examples of companies that got it wrong, picked objectively-shitty options, and still succeeded massively and then had the money to pour into cleaning up the resulting messes.

There's countless options, but they don't seem to matter as much as people believe. As much as it would be nice to think Lisp is a superweapon and it's easy to replicate Paul Graham's stories, that's not what's happening in the market.

There's an interesting split the OP discusses that seems to largely be a B2C vs B2B thing. With a few exceptions at the high end, many of the winners in both of these spaces aren't determined by "purely better technology" but by other things. However, in the B2B space, battles can be won much more easily on the strength of salespeople and business strategy, whereas in the consumer space, it requires more skilled implementation of ideas - great UX doesn't require technically great programming, but it requires competent execution of the original idea, in a way that a medical records system sold to a hospital administration board doesn't.


> and still succeeded massively and then had the money to pour into cleaning up the resulting messes.

And they typically have to pay enormous sums of money to hire the talent required to clean up.

This is large part helps create the bimodal compensation model.


if you want to create a CRUD app, then you probably don't need the best and latest library.

There are plenty of apps out there today which support millions of users but didn't choose the most optimal database, wasn't well architected, and has mountains of sloppy technical debt.


> Programmers have to remember a vast amount of domain knowledge

And that is only half the job. You also have to practice, a lot.

I think "Teach Yourself Programming in Ten Years" is about right http://norvig.com/21-days.html

You can learn academic computer science, or know a lot of trivia about programming and computers, but without years of dedicated practice it doesn't translate into actual productivity.


In Electrical Engineering, which the article often mentions as a counterexample, the 10-year veteran is not nearly as likely to drop out of the profession. Programming has a constant bleed-out of people who learning how to program, became veterans, and then were dismayed to discover that they were going to have to do it all over again, because the libraries, frameworks, languages, etc. were different. Some just do it, but some move into management or out of the field entirely. This happens in engineering as well, but not nearly as often, and it means there is a more nearly constant shortage, I think.


In my experience, while there is a new library/framework/language every day, most of them aren't introducing brand new concepts that the developer has to worry about. A lot of the patterns they implement are also common in other language/frameworks. Nothing against React, but every other day someone posts a new concept that is very similar to a pattern that has existed for years.

Edit: I should note, on the last sentence, this may be done by a veteran developer who knows better but is trying to introduce the concept in a new light. It could also just be a developer figuring out a common pattern on their own. I've heard the actor model pattern was developed by several different people at the same time who were unaware of each others work. I'm not saying it's a bad thing.


React is interesting. It takes something that we started out with, immediate-mode style UI programming, and brings it to something we have now, retained-mode UI (i.e. the DOM). History in our field loops...a lot.


I always wonder if some of the veteran drop-out in programming is that improvement (in my lone experience anyway) is couple with/ consists of realizing what else could go wrong. Every step up the ladder of experience affords a better view of how things can fail and that can be hard to deal with. I feel like I keep getting slower as I get older but not simply because of age; some of it is the motivation to sit down and write something that is probably going to come back and bite me in the ass (possibly through no fault of my own) later on down the line. A lifetime of programming means a whole horde of problems to think about at night.


I was just trying to point this out! Though in a more pedagogic setting: I have a very smart coworker who's been out of school for ~1.5 years. He works quickly and tends to create bugs he has to fix later. I got him to contrast his style against our coworker in his 50s who is slower to merge, but the rarely has to fix a bug!


I think the EE drop out rate may be slower, but from what I see electrical engineers tend to migrate at some point into something that isn't exactly EE. Typically that means systems engineering, management, software, or product management.


You are right. Now thinking about that It seems to me generic Software world seems more comparable to interior designing or fancy restaurants where patrons keep spending because tastes change faster than requirements.


I don't know. Is it having to learn new things, or is it having to do the same things over and over, with the names changed?

Once you get the principles, there isn't much difference in languages, etc. But if you are a senior developer after 5 years, or 3 years, there isn't much room to go up.


I'm not sure they all have a choice, sure you can learn new frameworks or technologies but without real experience it's difficult to demonstrate competence in them. How many employers would hire a Cobol programmer who learnt Angular in their spare time?


There is one point where the article asks why programmers seem to get compensated well compared to other professions.

> The second most common comment that I hear is that, of course programmers are well paid, software companies are worth so much, which makes it inevitable. But there’s nothing inevitable about workers actually being well compensated because a company is profitable. If we look at this list of the most profitable companies per employee, we see companies that pay well, like Alphabet (Google) and Facebook, but we also see hardware companies like Qualcomm, Cisco, TSMC (and arguably ARM now that they’ve been acquired by SoftBank) that don’t even pay as well software companies that don’t turn a profit, and that the compensation between the software companies that are listed isn’t very strongly related to their profit per employee.

The relevant barriers to entry perhaps aren't to programming-the-skill, but programming-the-business-activity. In other words, the barriers to entering business of profiting from programming. And that makes software engineers higher priced commodity because there is higher competition from other companies, but also self-starts.

Hardware companies don't have pay their engineers as well because those engineers have a harder time leaving for other businesses. There are fewer capitalized companies, and self-capitalizing a chip HW business is very difficult. (and arguably the many smaller company options in that industry are rapidly consolidating - so employer options are going down rapidly).

So in the end software is paid well perhaps because the software profession deals with business areas which yield high value return on the labor, _and_ the low capital business barriers to those activites supports higher competition for software labor.


This is absolutely true. I've claimed for years that programming is easy and it's not hard to teach to children, but I started when I was six. For older people, the field is hard to break into due to a cognitive barrier I've seen. "I don't know how to program and computers are mysterious-- therefore I don't know how to learn how to program."

The biggest impediment to much larger participation in the top tiers of software engineering is imposter syndrome and the elitism of the industry when faced with a trainable candidate. Every startup aims to hire someone who can "hit the ground running" and who doesn't need an assist from anyone.

Also, the largest tech companies have chosen to use LeetCode-like problems almost solely to assess candidates, which are unlike most tasks done on the job most days. These tend to select for people who trained specifically for the interview and for coding competitions, such as ACM.


It's not just old people. When I was a kid, the Commodore 64 was the absolute state of the art in consumer computer hardware. What I was able to produce in C64 Basic after a few months of trying was, at least to a first order of approximation, comparable to the sorts of things that were considered professional software back then: the machine just couldn't do that much, so writing a simple game with an amorphous blob that was controlled by the joystick and shot at other amorphous blobs was not _that_ far off from the sorts of games you could buy; I felt like I was doing "real" programming. Compare that to the situation today. Modern games have gigabytes of 3D rendered playfields. Even iphone games like jungle run are in 3D. But what a beginner can produce after a few months of practice still probably looks like something that might have been state-of-the-art on a C64 back in 1986 (in fact, may be harder, because the development tools are so fragmented these days). What felt like a real accomplishment to me when I was 12 feels like failure to my kids - once they realize what a hurdle they have to climb, they wonder if their efforts might be better spent elsewhere.


Have you tried creating a game in a modern engine such as Unity3d? If you try going through a few tutorials, and browse through the asset store, you might be surprised.

While the gameplay in your first game may still be simple, it can look great because the engine does most of the work. It absolutely won't look like something from a C64 (unless you want it to).


This absolutely. As someone who started later (in college) I was unbelievably dismayed at the amount of effort it took to output something that was nowhere near comparable to the software I used daily and took for granted.


I think we're kindred spirits in a way. I don't find programming terribly vexing, either (I started when I was 12), but trying to teach others has given me more appreciation for how difficult it is to grok something so rigidly logical.

That said, I have no patience for the "smartest boy" syndrome or the, as you say, "LeetCode-like problems" given in interviews.

I suspect that these interviews do "work" in the sense that they successfully filter those who know what they're doing (albeit rejecting numerous ones who do as well), but they run the risk of encouraging elitism, rockstars and "smartest boy" cultures. (I also think programmers are uniquely bad a hiring because when we can't reduce a problem to something solvable by an algorithm, we tend to try to find the cheapest heuristic.)


When I taught AP CS, I got around that rigidly logical issue by performing a very simple exercise on the first day of class to build an appreciation for algorithms.

The students were asked to write out instructions to build a paper airplane. One by one, I would follow their directions as loosely as possible and build lopsided airplanes. The lesson did a reasonably good job of explaining how computers handled algorithms and code.


Part of that might be because you started so early, but part of it might just be some innate properties of how you think. Is your brain good at programming because you started so young, or did you start so young because your brain is good at programming?


I think there are two interesting correlaries:

1) programming seems to be one of the only "hard" professions that pays well (compared to math researchers, hard science researchers, or even things like some social work -- that's really hard in entirely different ways). Of course I'm probably missing some hard stuff that pays well

2) programming seems to be the "hardest" of the high paying jobs mentioned. Once you get them, banking, consulting and law jobs actually have a lot of mindless or not super challenging work


I guess the grass is always greener. I'm a lawyer who lurks here occasionally. Most legal jobs involve 60+ hours of work, being on call 24/7, and there is pretty much no legal equivalent of a 10Xer because almost all work is billed by the hour. There is no way to make a contract that's 10x as valuable as your competitor's, and certainly no legal equivalent of scaling to the degree of Google or Facebook.

Law is incredibly challenging work - I know more than one lawyer who complains that they should have went into programming to work 9-5 at Google between free massages and endless burritos or whatever other perks you guys have. It's certainly not work you can casually do while watching youtube - especially considered there's such a thing as legal malpractice a.k.a. get something less than perfect and you could personally be on the hook for your license. Also, it seems like career longevity in software engineering is a lot higher than in law - most lawyers for the top firms (the Google/Facebook equivalents in pay) wash out by the 4th year and practically all do by the 8th.

I always wondered if I made a mistake picking law over software engineering. I don't have any strong passions and I was good at reading/writing so I went into law, but have been kicking myself for missing out on stock options and equivalent pay for a laid back lifestyle. Glad to see there are programmers who think lawyers have it easy.


Software keeps working after the work is done. That’s the key differentiator, not the brain power. This leads to economies of scale on two fronts.

1) scale for the low end. As an engineer, I’ve made a game where I have customers worldwide that pay me something like 25 cents a week. A lawyer can’t really do work that scales out at the low end like that. It’s not a brain power thing, it’s just the nature of the work product.

2) at the high end, a big company like Google or a financial institution can keep hiring programmers at say $100k, and have them produce tiny detailed enhancements that produce say 150k or or more of revenue per year over a multi year period. Most large systems can always sustain a little more enhancement that will produce an optimization of revenue.

I think this is the key difference between programming and other kinds of work. Programming is scalable at both the low end (distributable to very cheap consumers) and the high end (can always get more revenue through optimization). And at both ends of this spectrum the machine keeps earning money even when the programmer is sleeping or working on a new project.


Software doesn't keep running indefinitely. It has a shelf life of a few decades at the most, and usually just a few years.

Programmers definitely have leverage due to scale, but lawyers also have a lot of leverage when dealing with cases that have large $$$ amounts tied to them. Traders obviously have leverage by using large quantities of capital in their trades.


A lawyer can make a small modification to a drug patent that helps a company earn for example $2B a year for 15 years rather than 12

A lawyer can make a change in a corporate structure to lower a company's tax rate indefinitely

From the perspective of lawyers adding value to the law firm, a good lawyer can do this with dozens or hundreds of clients a year, and increase the firms revenue by bringing in tons of new clients. Creative lawyers can also figure out a way to differentiate themselves in a particular sector, like tech startups, and one lawyer who becomes a leader in an area can add millions in rev to the firm a year, for many years, by bringing in new business

Some law firms also take equity, and good decisions about when to do this can bring in huge windfalls


I hear you; I'm only a hobbyist programmer myself. I worked in investment banking at the beginning of my career and did an MBA so know lots of consultants and work a lot with lawyers in my work at startups, and I know those can be grueling jobs and that most people don't make nearly as much as the lucky few at the top firms

I was referring more to the intellectual challenge of the work. In investment banking there is basically no intellectual challenge at a jr level and at senior level it's all relationship management. The trading side can be hard but increasingly that's a programming job

I'm sure there are some super challenging law assignments but from what I understand from friends at top firms there's a lot of template changing and standard cases for a lot of stuff. At startups I try to do as much of that basic work myself so we can save on legal fees. Of course I get lawywers to review / sign off, but it's usually easy for them to do so

But programming is hard at an intellectual level in a way that is different from banking and consulting work and from what I understand, legal work. The first time I did a problem set in C involving memory allocation it took me like 20 hours to get it right. And the engineers working on massive systems that have to run perfectly, fast and be maintainable by hundreds of random people have work that is orders of magnitude harder. In programming, the difficulty of the work seeks to scale as your skill does. Don't know many other professions like that

I interned at google not as a programmer, and you are right that the work life balance there can be amazing, but it probably is the best company in the world for work life balance. Lots of programmers at other companies like work crazy hours as well, and often for non technical bosses or poor managers who make those long hours unpleasant


> I interned at google not as a programmer, and you are right that the work life balance there can be amazing, but it probably is the best company in the world for work life balance.

I'm not convinced. From what I hear, being a developer at Google can actually be stressful, if only for the fact that your peers are likely to be talented and ambitious - so it will take effort to keep on par with them.

Compare that to countless corporations which also hire developers, but where the motivation and talent levels are lower. In many of those jobs, you will be fine with doing maybe 15 hours of real work peer week. I'm not sure it would fly at Google. Based on this, I recently declined an interview invitation from Google recruiter - precisely because I was worried that my work-life balance would plummet.


>I'm only a hobbyist programmer myself.

There's also a very important point to be made here. Large-scale software development and self-directed programming have very, very little overlap in terms of time allocation and mental effort. To exaggerate the difference somewhat, it is like comparing building a go-kart in your garage with designing a factory that produces commercial, road-ready cars.


I tried to make that point in the post, though I don't have experience building large scale software. If hobby programming is building a go kart in your garage then the analysis you do in banking is like playing Mario kart :)

There's a huge jump in intellectual challenge of hobby programming vs the analysis you do in investment banking, and I'm sure there's another huge jump between hobby programming and large scale swe. Though I don't know which jump is harder. And I'd imagine that designing the factory in your analogy probably is the work of very experienced engineers, and jr eng is probably more like designing and building the machine that attaches all the wheels as part of a massively complex automated system


Are you at a top tier law firm? Because you're comparing yourself to programmers at a top tier employer of programmers.

The life of the average programmer certainly does not involve endless burritos or massages, and the compensation is probably below yours.


Yep - top tier firms pay roughly the same as tech companies do as far as I can tell (with the added bonus that you don't need 250k in grad school loans to work for Google at an entry level - and a much higher ceiling for the truly, amazingly talent).

Another key difference is that in most top tier law firms, literally 2-3% of every starting class can expect to have a full career there. I've heard tech has a similar concept called stack ranking, but it seems much milder in terms of the forced attrition. Not to mention you don't need a full career at Google - you can always take that resume line and go to another big tech company, a startup or something midmarket. Law is much more segmented. The M&A lawyer laid off during a recession isn't going to find a job at a small firm because those generally do not do M&A.

I don't really hear of top tier software engineers struggling to find work - happens to out of work top tier lawyers all the time.

Oh, and for the record 15% of law school grads get that sweet 180k starting salary (a trajectory most won't stay on).

There are many, many lawyers making 40-60k a year working horrendous hours with no real hope of advancement.

Let me be clear: I have zero doubt in my mind, even with my very limited knowledge of the software engineering market, that I have no doubt the median software engineer is far better off than the median lawyer, likely in terms of pay, hours, and prospects all at the same time.

My question related solely to the top tier because that's where it's even remotely competitive.


"something less than perfect and you could personally be on the hook for your license"

You might get sued by a client, but from what I have seen getting disbarred is really hard to do. Like, you have to blatantly defraud a client or something. Just doing shitty work, or even (as some I have known has acutely experienced) actively screwing over your client in a technically-legal-but-totally-sleazy way, the Bar Association will give you a slap on the wrist, if anything.


Lawyers don’t have the monopoly on 60 hour weeks of deep thinking.


Programming is one of the few "hard" jobs that is demanded in very large quantities. There are roughly 1.6 million people working as programmers in the US[1]. That is approximately as many as all engineering professions combined (the largest individual engineering profession is mechanical with 285k). It is roughly 50% more than all life, physical and social sciences combined.

[1] https://www.bls.gov/oes/current/oes_nat.htm#17-0000


I think I have to disagree with both statements.

banking - extremely long hours with unpredictable work, huge attrition rate (most people who start in banking don't stay in banking), eventual career progression is into sales

consulting - long hours, weekly travel, huge attrition rate (most people who start in consulting don't stay in consulting), eventual career progression is into sales

law - long hours, high attrition rate (most people who start in big law don't stay in big law), eventual career progression is into sales

At least for me software engineering is much easier than any of those.


I agree with your statement but when I said "hard" I meant the work itself was hard rather than the work "lifestyle", if that makes sense

I woerked in banking and agree it is a hard work environment , but getting the deliverables done was easy and not intellectually challenging. From my friends in big consulting and law firms the work sounds similar in nature


That's a good point and I mentioned it because you included social work in your list of hard careers so thought hard doesn't necessarily mean doing hard math/logic/etc.


I think social work is a hard work "lifestyle" but also hard in the sense the problems you are trying to solve are very hard. In banking / consulting advisory work, the problem is making the client happy, which is not easy but not as hard as rapidly scaling a software system, or "solving" the problems like ptsd or homelessness that social workers deal with.

I'm sort of mixing apples and oranges but it makes sense in my head :)


> 2) programming seems to be the "hardest" of the high paying jobs mentioned. Once you get them, banking, consulting and law jobs actually have a lot of mindless or not super challenging work

Are you saying this as a programmer, or are you saying this as a banker/consultant/lawyer?


Every task is easy to the person who doesn't have to do it. I usually say this to non-technical people when they ask for a feature that sounds simple to do, in their minds. But the same fallacy is at work if you think that highly paid bankers or consultants have mindless work.


A former banker, have also done freelance consulting work and did an MBA do know lots of consultants. I'm relaying things I've heard from lawyers I've worked with in various roles. Am a hobbyist programmer, been doing 10-20 hrs of coding / week the last 18 months, and interned at a FAANG in business roles tho knew some engineers

The stuff you do in investment banking is at least an order of magnitude simpler than making any useful software. It's basically modifying excel templates and debugging complex models, making slide decks that are 80% template slides, and working on deals that are intellectually challenging on occasion but a lot of it is blocking and tackling and managing processes


Having been both an attorney and a programmer, the better jobs in both industries will be quite challenging. I personally find writing software much more rewarding than practicing law, but it's certainly not more mentally taxing.


"Of course I'm probably missing some hard stuff that pays well"

Hitting major league pitching.


Programming seems to be the "hardest" of the high paying jobs mentioned

Perhaps for some people. Most of what I spend my time on is little more than simple data munging, some trivial analysis and glorified crud apps.


Once you've become a highly paid software engineer it's very human to try and justify your status by claiming that programming is exceptionally hard and therefore your status/salary is justified.

That's not to say that the job isn't hard... but lots of jobs are hard. Dealing with the constant loss of people around you if you work in a retirement home or hospice is also hard; but those jobs aren't rewarded equally.


"Dealing with the constant loss of people around you if you work in a retirement home or hospice is also hard; but those jobs aren't rewarded equally."

That is a completely different sense of the word "hard" from "programming is hard". Working in the retirement home requires enduring emotional pain and sacrifice. Programming (at least some kinds of programming) requires a high degree of skill, knowledge, and intelligence.

The distinction being there may be a larger number of people with the skills to work in a retirement home, than there are people with the skills to write particularly difficult programs.


I don't know why the parent went to hospices and nursing homes as a counterexample, but your response is missing the point: lots of jobs are hard in the way that programming is hard, and don't have the same compensation levels.

Of all the programmers I have met in my life, I would trust only a select few to do the things that most professional engineers do on a daily basis. For example, control system engineering, where quite literally, life-and-death attention to detail is required. The scope of the knowledge required and (in)tolerance to error is astounding. Meanwhile, try to get a programmer to do something as essential and mundane as writing comments. It's like this eternal, "unsolvable" problem in the industry that nobody can fix.

Most of the well-paid programmers I know (including quite a few at AmaGooFaceSoft) can't wrap their heads around databases well enough to deploy a low-traffic web application. And this industry is now rather routinely hiring totally inexperienced people, right out of bootcamps, at salaries that are mind-blowing to most professionals. It's clear that this stuff isn't rocket science.


The compensation is not based on how hard the job is so it doesn't matter. There's a limited amount of people that can do programming, but also limited amount of people that can do safety-critical engineering. Perhaps there is some overlap. But can you engineer a bridge that's used by a billion people every day? Probably not, hence the salary differences.


"The compensation is not based on how hard the job is"

Well, yeah. That's what I'm saying. And so is the original article.

"...so it doesn't matter."

This does not follow. Maybe it does matter, but the market is irrational. For example: maybe there are a lot of highly-paid, under-utilized software engineers sitting around FaceGooAmaSoft, because FaceGooAmaSoft are terrified of what those people might do, if they weren't twiddling their thumbs and enjoying complimentary massages while eating catered lunches.

"There's a limited amount of people that can do programming, but also limited amount of people that can do safety-critical engineering. Perhaps there is some overlap. But can you engineer a bridge that's used by a billion people every day? Probably not, hence the salary differences."

Prove your claim. Most programmers making big salaries are affecting maybe hundreds of thousands of people a day, at best. It's pretty rare to find gigs where you affect even millions of people a day. Even inside GooAmaFaceSoft, those are coveted positions, with lots of cookie-licking and internal politics.

It seems more plausible to me that the market is where it is because of deep pockets and a willingness to engage in defensive spending, more than any kind of individual productivity. But yeah, this isn't an argument that is going to flatter most HN readers.


> Most of the well-paid programmers I know (including quite a few at AmaGooFaceSoft) can't wrap their heads around databases well enough to deploy a low-traffic web application.

I honestly don't believe this. You did caveat that this is anecdotal, but it's such a bold claim of ignorance I think it should be qualified.

> And this industry is now rather routinely hiring totally inexperienced people, right out of bootcamps, at salaries that are mind-blowing to most professionals

This is also dubious. It clearly does occasionally happen, but those candidates are also not as inexperienced as you imply ( e.g they typically hold STEM degrees like mechEng, chem, physics, Maths - often from prestigious Universities - or have years of experience with non-dev technical work like security, IT, ETL, etc. )


"this is also dubious. It clearly does occasionally happen, but those candidates are also not as inexperienced as you imply"

Sorry, but no. It happens All. The. Time. Bootcamp grads are working everywhere, especially in SF. Throw a stone at the next Off the Grid, and you'll hit one, the stone will ricochet, and you'll hit another. These sorts of folks are readily employed in the writing of CSS and creation of web forms, which is ~99.8% of all day-to-day webapp work.

(Also: holding a physics degree and attending a bootcamp doesn't mean you're a competent programmer. Imagine suggesting that a BS in Physics makes you a competent structural engineer. The fact that you would imply this almost makes my point for me.)


> Once you've become a highly paid software engineer it's very human to try and justify your status by claiming that programming is exceptionally hard and therefore your status/salary is justified.

Salaries for the vast majority of occupations are driven by the supply and demand for employees - its a job market after all. Demand for programmers is increasing. Supply is increasing too, but is generally limited by, among other things, how technically "hard" the job is. "Deserve" isn't even part of the equation.


Writing software is not difficult. Anyone can do it. The hard part is learning to structure your thinking such that the software you will be writing will actually solve a problem as it currently exists in a cost-effective way.

With that skill, you don't even always need to know how to write software programs. Sometimes, you're better off delegating specific tasks to humans.

When someone hands you a problem like "make this dead elephant disappear" other people will still be scratching their heads after the programmer has already figured out

  while( elephant.mass > 0 )
  {
     eater.TakeABite( elephant );
  }
And they think to themselves, "I can vanish an elephant in two lines." Everyone else is still thinking about the problem in terms of tons. The chewing and swallowing is a trivial implementation detail.

(Meanwhile, some other programmer will be at the north pole wondering what happened to the elephant they left in Cairo.)

Some people simply aren't able to deal with problems they have not encountered before, that are too far beyond their domain of comfort. They can learn, but they don't innovate. As long as such people exist, they will have to pay other people to teach them how to cope with changes in their environment. Software engineers get paid well because a lot of them can effectively solve problems without needing to be domain experts in anything.


No real programmer would propose an O(N) solution like that.

Here's O(1):

    elephant.invisible = true;


And now the world is filled with invisible elephant carcasses.


Careful your not over-engineering :)


‘Writing software is not difficult. Anyone can do it’

The drop out rates from programming courses suggest otherwise.


It is unclear whether that is due to lack of aptitude, lack of desire, or incorrect expectations.

The qualities of those people who have ever successfully written software programs suggest that there is no magical determinant that would prevent any motivated person from doing it.

Apply the construction from the Pixar film Ratatouille. "Anyone can cook" does not mean that everyone can, just that there's no one who couldn't.

I suppose some kinds of brain defect or brain damage could prevent it, if you really want to pick nits. But in that case the condition would likely also prevent that person from doing much of anything else.


Sure, but how much time does one need to invest to handle the constant loss at a retirement home.

I often get in trouble for saying things are easy or hard. For instance, building a website can be easy but costly. So what language would help here?


Not only is it hard, but the landscape changes frequently. You wouldn't design a system like you designed it pre-mobile, and you wouldn't design a system pre-mobile like you designed it pre-internet, and those are just the big shifts. Cloud is another big shift. A lot of people read how so and so design a system. So and so is successful, so I will design my systems that way. That's rarely ideal. Also, designs can change company to company, depending on what the company structure is, who they serve, etc. Designs can change when a company changes, so hopefully your software can change with it.

Sometimes you inherit a bad system, so how do you fix it while keeping your releases in stride. That's not easy, especially when then original designers aren't there anymore. Speaking of which, what's the best release stride for this company? You might have to adjust design for that too. Was this weird code done on purpose, is it a bug, or were they trying to hack around a mistake somewhere else? Time to roll the dice, because you need to change it. How do you minimize the collateral damage if you are wrong?

You also need to consider your limitations like network and persistence storage. That's a huge part that many haven't even considered yet. How are networks designed today? How is data persistence designed today? What are my options and what are my limitations with this company? What type of reports does this company need? That's a big one. How about failover, what does your system do when the network or database quits? Do you lose any data? Are you sure? How important is it to not lose data? It's not that bad if Facebook loses a post, but it sure is bad if a bank loses half of a transaction.

Programming has a lot of levels that we don't even realize until we hit a new one. Turning good specs into working code is level 1. It takes a hell of a lot of brainpower and abstract thinking to just do that.


Whats this thing you call "good specs"?


What are "specs"? The most I get is a shout from the marketing director, "I NEEEEEEED X! Project Manager ok'd it 3 days ago!"


Bad specs bumps you to level 2.


Very small pebbles


> One (semi-pedantic) quibble with the article: there absolutely are barriers to entry for programming. Programming is hard! These barriers may not be artificial, but they are real.

Barriers don’t refer to how hard a discipline is skill-wise, they refer to how hard it is to enter the discipline. Law and medicine are also hard disciplines, but they have actual barriers to entry that cannot be surmounted by self-study. In this sense (which is the sense that the article means), programming does not have those barriers, no.

Considering that, unless you’re going to mount an argument that programming is objectively harder than those other fields skill-wise, it doesn’t seem productive to talk about an orthogonal “barrier” to entry that the other two also share. They are all difficult, so we end up in the same position.

Your comment here has spawned a large thread of people talking about how hard programming is (which frankly seems a bit self-congratulatory for this community, to be honest), but that’s completely separate from the core point being forwarded in the article; vis-a-vis, that programming is interesting and unique precisely because it has such a high compensation for a field without a central body limiting the supply (among other things). Law and medicine are also hard fields, and lawyers and doctors would be happy to explain why they’re difficult and have their own “skill-based” barriers aside from the licensing ones.


I've seen a few variants of this comment, so I wanted to address it.

I don't think we disagree much here.

I agree that medicine in particular is hard on its own. I'm not entirely sure about law, because the legal profession has only become highly-credentialed (in the US at least, which is the subject of this article) relatively recently. Regardless, to not make the trap of my b-school friend, I don't know enough to dispute whether law is super hard. I suspect it's not easy.

(Just as an aside, I'll note that from what I do know about medicine and law, both professions also require an extremely logical approach. I suspect certain specialties in medicine like surgery or anesthesiology or oncology are much harder than programming for various reasons. From cursory web searches, these specialties appear to earn much more than programmers do, and even much more than other physicians.)

Thus, assuming that medicine and law are also very hard (on the same order of difficulty as programming), we can likely say that even without licensing and credentialing requirements, entering the medical or legal professions would be hard.

I suspect we have slightly different ideas when using the term "barriers to entry". Indeed, I might have made a better argument if I had said programming has "high" barriers to entry, since what I'm talking about is clearly a continuum and not a boolean. C'est la vie. When I use "barriers to entry" as a concept, I'm using it broadly. To me, it encapsulates not only legal or political costs, but any cost, which is why I mentioned building a power plant or a semiconductor fab. I am using it the same way I see it used in the various economics literature. In this case, I suspect the cost is that most people seem to feel uncomfortable thinking abstractly and logically, and haven't refined those skills over time. Alternatively, high capital costs are a common contributor to barriers to entry in economic analysis. "Human capital" (another econ term) is exactly how I'd categorize the learning required to practice programming, whether it is acquired through formal training or self-direction.

As far as the self-congratulation, I agree, although that was not my intention. As long as I stay a few standard deviations from Erik Meijer[1] (whom I otherwise deeply respect), I'll consider it a success. ;)

[1] https://vimeo.com/110554082


Sure, programming is hard, but so is any job that pays more than the median wage. Hence why they pay more than the median wage. No one refers to "shit is hard" as a barrier-to-entry, because this "barrier" is so ubiquitous, it doesn't even need to be mentioned.

Artificial barriers-to-entry though, such as the licensing requirements for doctors/lawyers, are unique to some specific professions. Hence why they are worth highlighting.


I studied Electrical Engineering in college and I've been a professional programmer for 10 years. EE is much harder.


This isn't popular with the "everyone can learn to code" crowd but one significant barrier to becoming a proficient programmer is intelligence.

Maybe intelligence isn't the right word (after all how smart is it really to sit in front of a computer all day shuffling bits around?), a certain way of thinking or aptitude might be better. Education doesn't overcome this, training only partially overcomes this, experience doesn't necessarily overcome this. I bet most of us in the field have come across individuals with high levels of training, perhaps even very "intelligent" individuals who simply fail to fit concepts together in a useful way. Who get the pieces, who can answer quiz questions, who know facts and trivia, but simply cannot bring it all together into a useful, coherent, maintainable whole in a reasonable time frame. And I don't see this barrier being broken.

Anything that can be taught by rote memorization can be automated. Anything that requires higher levels of abstract thinking may never be automated.


Lack of knowledge doesn't neccesarily stop one from programming. There's nothing stopping you from calling yourself a programmer, or applying for programming jobs, and so on. Whereas to be a lawyer or a doctor you usually have to be licensed by some sort of government authority.


"I once had a top-tier business school grad friend claim that programming really isn't that hard and that we're all whiners."

It truly is amazing how people outside of a field always seem to have the best idea of how long something in that field takes to do.



Programming is easy. I taught myself. It just took 5-10 years.


Actually, I think that if someone has got to the point where they are dealing with the details of CPU and OS then they’re well along the learning curve.

Many, perhaps most, people have trouble with the basics of programming. Pointers, functions, even basic iteration are concepts that cause a lot of people to flunk out of introductory programming.


> These barriers may not be artificial, but they are real.

Real and non-artificial? Could it be?! :P


Yes, it is. And the example used in the article of chemical engineering reinforces the point. It ties into computer science quite nicely.

To become a chemical engineer, you first have to complete the course work for a degree in chemistry. Chemistry as chemistry is an extremely modular subject matter; you can solve most problems in discrete steps in isolation. In a computer science sense, chemistry is about pure functions. Very easy to analyze, as material side effects (like spontaneous detonation) are rare.

Chemical engineering, on the other hand, is about analyzing systems that leak their state everywhere and have effects that feedback into other parts of the system. But it needs to be extremely efficient nonetheless. There is no isolation because it doesn't exist in real-world complex systems. I have seen excellent chemists absolutely fail to grok chemical engineering even though it is literally the same subject matter. The only difference is that chemical engineers are required to reason about complex distributed systems; as with computer science, only a minority of practitioners ever seem to grok it despite their best efforts. Same problem, different domain. And chemical engineers are paid on a different scale than chemists as a result.

In engineering, bimodal distributions are the sorting of people that naturally have the ability to easily reason about complex distributed systems with many concurrent moving parts and people that cannot. Increasingly, the market is discriminating on this characteristic and it is reflected in wages.

Anecdotally, it is somewhat well-known that people competent at chemical engineering find advanced software engineering to be intuitive; it is a very easy second "language" to pick up. An inordinate number of chemical engineers end up in high paying software engineering careers -- it comes very naturally and lends itself to the abstract analytical toolset you develop as a chemical engineer.


>To become a chemical engineer, you first have to complete the course work for a degree in chemistry.

That is incorrect.

Look at the programme of study for a chemical engineering undergraduate degree [1]. It doesn't cover anywhere near the same content as an undergraduate chemistry degree [2].

[1]: http://www.imperial.ac.uk/study/ug/courses/chemical-engineer...

[2]: https://www.imperial.ac.uk/study/ug/courses/chemistry-depart...


I was typing a similar response. I did a 4-year MEng in ChemEng and there were only a few non-elective courses in organic and physical chemistry. The bulk of the content is fluid mechanics, thermodynamics, vessel design, safety, control systems, mathematics etc.


To quote a Chem eng friend, "I don't know chemistry, all I know are flow rates."


I probably over-generalized from my own experience. The only chemistry degree coursework we could avoid was a class about lab operations, basically safety/hazard management.

This turned it into a de facto 5-year degree even though they stripped most of the non-related coursework to a bare minimum; you still had two years of coursework for the engineering program after the chemistry. People that lost their appetite for chemical engineering after compressing all their chemistry into three years could switch to chemistry, which meant they spent their last year taking the filler non-technical courses that the engineers were allowed to avoid.


It was nearly correct in my case: While getting a BS in ChemE at CU Boulder, I also earned a got a minor in chemistry and biochemistry (and inorganic chemistry, but I was only allowed two minors for whatever reason).


Yep.

My classmates from Chem.E had more classes in common with us mechanical engineers than any other branch.

Thermo, fluid dynamics, CFD and heat transfer is where it is at.


There are huge overlaps between the different kinds of engineering - not quite enough to support a single unified core curriculum, but enough to make it obvious that there's a lot of similar math across all the disciplines, and only the emphasis varies.

The big problem with engineering isn't the specialisms, it's the name. Outsiders still think engineers are people who wear oil-covered overalls and are essentially mechanics.

Not one person in fifty understands that the job is mostly mathematical modelling of complex systems.


I completely feel you. I had EE friends being asked to fix light bulbs and MechE being asked to fix cars.


Way to miss the forest for the trees...


> In engineering, bimodal distributions are the sorting of people that naturally have the ability to easily reason about complex distributed systems with many concurrent moving parts and people that cannot. Increasingly, the market is discriminating on this characteristic and it is reflected in wages.

What faith in the system :). The truth I think is "it's who you know" more than "what you know". The best paid engineers are ones who spend a lot of time positioning themselves to get well paid. Why that is bi-modal I can't be sure - but my guess is that once you hit a certain network effect you start to make a lot more.


It's both. You have to know people of whom you impress with your ability.


Sure, but I don't think the differentiator in the bimodal distribution is technical ability.


I would guess being good hits the first mark, being good and knowing someone who can pay a lot that knows you're good hits the second mark.

Perhaps the second mark not only includes being good and knowing someone, but being good and providing a larger value, like being able to analyze and communicate with a company and quantitatively save them money through business process automation.


And yet the primary indicator of a programmer's ability through job interviews are tiny-scale optimizations and brain teasers.


Tbt, I haven't seen that much evidence that correlates developer ability with salary. For example, developers living in the Silicon Valley are paid the most. Not because they are the best, but because they are living in the Silicon Valley. Geographical factors play a much bigger role in compensation than developer ability.


But that 'greater' SV salary for a junior developer can give you less purchasing power than a 'lower' salary for a senior somewhere in Europe, due to cost of living.

Granted, money is 'absolute' if you use it to e.g travel around the world, but most people don't do that. In general money is 'relative' to one's environment.


Not really. I did the math in the past because I seriously considered moving to the US cuz I got an offer there. In my estimates, you would end up spending the same % of your salary in surviving, but of course the remaining let's say 30%, is simply a lot. Also a lot of things are not really that expensive (most things that are not housing, or maybe eating out.) And when you get out of the Junior level, I think the difference between SV and Europe becomes abysmal.

Also, "Europe" means many things. I am talking about Berlin here. I also know other places, like Madrid, where you just simply earn pennies in comparison so the difference becomes even higher (Madrid is more expensive than Berlin, earn less)

I still decided to stay here though (because of quality of living, work culture, music and partying, politics).


Get a remote US job ? Harder since you compete with many people but doable.


Most US-based companies are vary of hiring remotely from Europe. As a worker, I'm not sure I'd want to work from 4pm till midnight. The timezone difference makes collaboration difficult. South America seems to be in a much better position here.

Obviously, there are also US-based companies with globally distributed remote workforce, but those are a minority.


Yeah, but still many with "work on your own timezone and just meeting at 4pm".


Not true. If you're making 120k in SF, after taxes and pay 4k/month on rent, your remaining salary is still greater than most junior engineers gross pay in the UK.


Yes very few developers in London earn as much as the train driver who drives the train the developer catches to work (60k for a 4 day week 80k per year after OT )


I was comparing Junior USA vs. Senior Europe


Have you investigated the correlation between developer location and developer ability?

Do you think developers who are very good want to work with the best, thinking the best are in SV, then move to SV? Or perhaps they think they'll get the best return on their effort if they're working on software with big impact, and software with the biggest consumer impact is mostly written in SV?


I didn't know the United States had unrestricted immigration. :) You're probably right that Silicon Valley developers on average are a little bit sharper than most everyone else. But not by that much. People have other priorities than getting the best colleagues, such as living close to family and in places that feel like home.


> People have other priorities than getting the best colleagues, such as living close to family and in places that feel like home.

Yes: people who don't prioritize excellence in development. And it does require compromises in your life choices. You generally need to move to where the most interesting jobs are, where the cutting edge tech is being developed. It's a virtuous cycle: SV attracts the next generation of high quality developers because it's the place that already has the highest concentration of good developers.

> I didn't know the United States had unrestricted immigration.

FWIW, even though I got my H-1B visa, I stayed in London. It would definitely have been a better career move to follow through and emigrate. I have zero doubt it has cost me in career prospects and quality of opportunities.

Living in London is already a compromise in my quality of life.


For your dream scenario to become true, you not only have to live and work in the Silicon Valley. You also have to work on interesting problems at interesting companies. Google may employ 10k engineers, but only 100 or so work on the really interesting stuff.

My passion is research and free software, so yes I do "prioritize excellence in development." I don't have to move to the Silicon Valley nor the United States to take part in that.


It is not practical to compare research or open source development to working at Google.

You can definitely prioritize excellence in development, but only within the scale of a few humans. You cannot research what it is like to work at scale.

Scale of hosts, requests, code, people, money. It's an experience to itself.

It's always funny to "break" open source tools people rave about. Most recently elasticsearch is barely coping with some of my teams volumes and we have to do some really tricky distributed computing stuff to workaround and keep it happy. Mind you, like a Honda Civic, it is an amazing tool, and works brilliantly for most almost all uses, but at certain scale you need a Ferrari and that isn't something you can get anywhere but big companies. And when you learn by designing and debugging a Ferrari, everything else becomes trivial very quickly.


This is highly dependent on personality. As an anecdote, I know a developer that does not like working with "the best" because they make him look bad (even though he's not a terrible developer).

Given, he works at a company with stack ranking so I guess that company is self-selecting for developers like him.


Relevant to your username - people who don't challenge themselves are self-limiting. To grow, you need to go outside your comfort zone, you need to take some risks. And "not terrible" certainly doesn't sound like top 1-5% material.


So you're pointing to the ability to manage complexity? I had not heard it put that way before but it feels right to me. From TFA the author said

"How is it possible that programmers are paid so well without these other barriers to entry that similarly remunerative fields have? "

My initial thought was that there are people who get it those that don't. But you can teach many people the tools of programming. It's using those tools to do something interesting that seems to be the challenge. By interesting I suppose I mean something exceeding some level of complexity.

This makes sense, I don't see our schools teaching anything too complex - it tends to be compartmentalized.


Also, because software developers are like soldiers or litigation lawyers. The more other people have, the more you will need.

If company X is your competitor, and they employ 10 software developers, sooner or later, whatever it is they're working on will release, and that might provide X with a massive competitive advantage over you. So you have to hire your own people to keep up with your side of the arms race. And sometimes, a brand new person comes along with a bunch of software folks to create company Y, and they devastate both you and X within their first 5 years.


> Anecdotally, it is somewhat well-known that people competent at chemical engineering find advanced software engineering to be intuitive; it is a very easy second "language" to pick up. An inordinate number of chemical engineers end up in high paying software engineering careers -- it comes very naturally and lends itself to the abstract analytical toolset you develop as a chemical engineer.

As someone trained as a chemical engineer who now is a Data Engineer (SQL & Python pipe fitter), feel free to add me to your anec-data :-)


I thought it was just because the GAFA tech giants are currently in a bidding war for programmers in a very expensive part of the country. I've met and worked with many very talented engineers, fully capable of grokking complex systems, not working in Silicon Valley.


I'd definitely call that the best explanation. You spend a few years working at a GAFAM, and now you've got a hugely prestigious resume from an expensive, high-cost-of-living area that other companies will shell out for, big time. You spend any time outside that cluster, even doing excellent and difficult work, and you just don't have the prestige.

It's also a matter of scale: the GAFAMs just ship more units in terms of revenue per employee. Sure, that's largely because of monopoly and network effects, but hey.


Fascinating argument, which fits me well (PhD ChemE who learned software and is now SWE at large tech firm).

Allow me to take an alternative argument: Highly-driven students, especially those driven by money, became ChemEs to earn a lot of money and prestige. They looked up highest paying majors and chose ChemE for these reasons. I think it is now obvious SWE is very high paying and prestigious -- perhaps more so than ChemE -- so these highly-driven people switched. It had nothing to do with the topics intrinsically, but rather ChemE was largely perceived as the hardest/most-prestigious field and now SWE is.


I like your analogy.

To offer my own anecdote: In pure/theoretical Chemistry you conveniently ignore in-situ solvation effects to think about mechanisms of the organic reaction.

Then in the real world, you can't replicate someone else's paper because of humidity differences between your lab and the author's.


> as material side effects (like spontaneous detonation) are rare.

My father has been responsible for every chemical (including, explicitly, explosives) factory in the entire country (Hungary, 80s) and later for just one pharmaceutical company for those "side effects" to stay rare. They do not stay rare without some very stern rules.


The OP was explicitly referring to the difference between chemistry in the lab (when you can conduct perfectly isolated, small scale experiments -> very low risks) and chemistry in industry (which is what you're referring to), where risks are much higher.


>Chemical engineering, on the other hand, is about analyzing systems that leak their state everywhere and have effects that feedback into other parts of the system. But it needs to be extremely efficient nonetheless. There is no isolation because it doesn't exist in real-world complex systems.

Is it not possible to engineer in isolation on real world complex chemical engineering system?

I try to do that with software, and most software can certainly benefit from stricter isolation (e.g. looser coupling), but most software teams - even well paid ones - often have an in-built bias against investing in less tangible work which means that you ultimately end up with these complex systems are that hard to reason about.

Not that I feel like I should be complaining about this if it is indeed the reason I'm paid well.


Boss studied chemical engineering, he's not remotely a techie but is ridiculously smart and he assimilates stuff at a speed I've rarely met.


And also chemical engineering also requires skills in mech /fluids engineering doing a reaction in a lab vs at scale is a completely different thing.


Just anecdotal but all of my friends who majored in chemical engineering are somehow software engineers now..


Almost all professional and semi-professional salaries are becoming bimodal.

I'm too tired at the moment to look this up, but the NY Times had a piece sometime in the last couple of years where they were discussing income distributions, and had an interactive, and what they looked like, almost across the board, was a bigger lower mode, and then a second, smaller, more spiked mode much higher.

What struck me about that piece was that it was framed in terms of skewed incomes, but the bimodality of it didn't get discussed much at all, nor the fact it was so widespread across different disciplines.

To me it was very disturbing, because it suggested that there was a growth, across disciplines, of two "classes", one established, with a relatively large income, and another, larger class, with a much smaller income.

I was very curious about this, and have wondered what the groups are--if it's because of older, senior individuals and younger, junior individuals. Maybe the latter are trainees? Maybe the latter came into the labor market at a less favorable time? Maybe there's just a kind of winner-takes-all sort of phenomenon?

It was really disturbing to me, and seems difficult to explain in terms of any specific features of any field, because it was so, so widespread across labor areas. It was partially disturbing that it was sitting right here in these graphs at a major news outlet about income distributions, and was not being acknowledged even then. It was probably more disturbing to me than the general long-tailed skewed income distribution that gets discussed, because it suggested (at least to me) very unnatural about how incomes were being allocated, even more so than the stereotypical long-tailed but unimodal curve.


I can imagine a simple explanation where one mode of gratification aims to pay as low as possible to keep the workforce willing to work at all, and another mode is to use pay amount to avoid talent from going away. Pay is thought about and used differently in both modes, and it's a simple enough management pattern that it could translate to every field. This is an over simplistic hypothesis and it would need more info to confirm but it seems potentially reasonable to me.


I think that's true from the management side. I also think it reflects personalities on the employee side: you have to be able to risk rejection and possibly worse to ask for a significant raise which means you either need to be very risk tolerant or in a situation where you can afford to fail.


>Another possibility is that U.S. immigration laws act as a protectionist barrier to prop up programmer compensation. It seems impossible for this to last (why shouldn’t there by really valuable non-U.S. companies), but it does appear to be somewhat true for now.

I feel like this is the real issue here. The reason that the US has great companies is simply from the availability of large amounts of capital. And if the millions and millions of Indian, Chinese, and Eastern European programmers who are inifinitely more talented/driven/intelligent/educated than myself were able to simply move here and seek employment with no immigration restraints, I know that I would be out of a job instantly. In that sense it feels perversly exploitative and priveleged to make so much more money than practically anyone else on earth due to nothing but the physical location I was born.


> In that sense it feels perversly exploitative and priveleged to make so much more money than practically anyone else on earth due to nothing but the physical location I was born.

Is it perverse to go swimming because you were born near a beach? Is it perverse to visit the Louvre if you are Parisian? Is it perverse to go to a good university because the universities in Elbonia aren't good?

You're not entirely wrong, but that's a very limited view on how the world works. It's not all random. We're not all rolling dice and separating into "haves" and "haven'ts".

Once upon a time: Somebody's parents moved to the coast. Somebody's predecessors funded and built the Louvre (and managed to keep priceless things safe despite war, disease, famine, etc.). Various parties spent decades (or centuries!) of history recruiting and utilizing world-class talent, raising world-class capital reserves, and building world-class facilities for their universities.


> Is it perverse to go swimming because you were born near a beach? Is it perverse to visit the Louvre if you are Parisian? Is it perverse to go to a good university because the universities in Elbonia aren't good?

If you actively promote or passively allow politicians and legislation that bars other people from having a shot at earning those things themselves, then yes.


> bars other people from having a shot at earning those things themselves

Restricting immigration doesn't 'bar' people from making their own country better...

Have you never visited a place that has had it's beauty or charm ruined by the sheer number of visitors it receives?


Can't activelt promote legislation in a dictatorship


This is why people don't like the concept of privilege, it seems almost built to shame people for having more due to circumstances.


If people don't like the concept, they don't really understand it. The way the word is often used and even the word itself, absolutely that ruffles some feathers and rightly so.

They do studies, if people are given massive advantages (e.g. rolling two dice instead of one in monopoly and starting with double the cash) that are obvious and explicit, people will still believe they deserved to win, they earned their victory.

Recognizing a lot of your success is because of dumb luck (yes you worked hard, but millions of others worked just as hard or harder and weren't lucky) is a good way to stay humble, and to remind yourself to stop pretending you "deserve" what you have -- we all live in a fundamentally (intentionally) unjust economic system where "desert" has no meaning but we try to superimpose it on our lives because of a need to believe things are fair. Privilege is a word that can be a good way to remember that.

It can also be used as a rhetorical weapon to bludgeon people.

The word itself is terrible and I hate it: it is not a "privilege" in my view to be treated decently, to have a chance at success, to not be discriminated against or assaulted by police or have to face anything that the poor, minorities, women face. It is a right. Everyone has the right to be treated the way straight rich white men are and have been for centuries and using the word "privilege" conjures up this notion that they are getting something they do not deserve: rather, they should be viewed as the model, the goal, they are getting something that we all deserve to have as well alongside them.


I think “privilege” because the right is not the norm. Like “black lives matter (, too!)” because being black and having respect for your life and freedom is not the norm, at all.

In a situation where not being exposed to massive dangers and obstacles is a rare occasion, I think it is fair to classify that as a privilege.

White / wealthy / male / educated / citizen of the US, all indicate the top parts of pyramids of oppression and massive obstacles.

The blind acceptance of these structures by the ones standing on top of them, is the actionable part. We (I am definitely amongst the privileged) can’t easily see the nature of the structures, the way we don’t choke on clean air.

But once we’re aware of them, our responsibility kicks in. Not taking actions to actively challenge these structures makes us complicit and defines where we stand.

The anger of the ones living life on “extra hard” so that we can live ours on “quite/super easy” or even “normal”, is fully justified. We are passive perpetrators, there’s no way around it.

Very uncomfortable.


There's a good reason many of us dislike current usage of word "privilege", and to your credit, you avoided it. Lots of times the word "white privilege" is thrown around by relatively well-off people in urban areas, and that usage is extremely hurtful and frankly stunning if you're a poor white person living in a small town in say, W. Virginia. You work multiple minimum wage jobs and still barely scrap by, watch friends and family succumb to desperation and opiates, and look around your town as it crumbles in neglect. And you don't feel like you're very "privileged" in spite of being white.

The term is particularly bewildering to rural and small town poor whites when it's tossed out by a 20-something-year old professional in some big city who's making a $200,000/year salary, or by a trust-fund kid protesting in a university where tuition costs more money a semester than your whole extended family makes in a year.

I realize that many people who use the term "white privilege" may not be targeting such people with the term (although many clearly are). However, when the only qualifier someone uses is "white", it's hard to draw that conclusion.

Again, to your credit, you used the term "straight rich white men". But most people fail to make this distinction.

I also strongly agree with your final paragraph. What we call "privilege" is something that all people should have. Instead of working to destroy privilege, we should work to ensure that all people have that same privilege.


Being poor and white is still an advantage over poor and Latino/Black. Look at conviction rates at criminal trials for example.

Now, it's not the kind of advantage that feels meaningful, but it really adds up over a lifetime.

Even +/- 1% sales can make or break a small business for example.


> Being poor and white is still an advantage over poor and Latino/Black. Look at conviction rates at criminal trials for example.

No argument, but is that really justification for wealthy urban whites to go around shouting about "white privilege" to poor rural whites? I mean, if you feel that way, continue, but I can guarantee you it won't be a net positive for our country, black or white.


A poor white man is less likely to be convicted than a rich black man. So, the racial devise is larger than the economic one.

I don't think the term white privilege is great, but it is a massive injustice that's IMO worth talking about.


> Being poor and white is still an advantage over poor and Latino/Black. Look at conviction rates at criminal trials for example.

Are there stats for convictions of poor white people vs poor black latino/black, or just all white vs all latino/black? I don't think the latter stats would be particularly helpful here.


Yes, it's so bad: Poor white kids are less likely to go to prison than rich black kids "https://www.google.com/amp/s/www.washingtonpost.com/amphtml/...

"One in ten Black males in their thirties is in prison or jail in the United States." That's insane.


Very interesting.

However, one thing that I fail to see addressed here is reason for the incarceration gap. The way I see it, it can be partially because black kids are prosecuted more (the "white privilege" argument) and partially perhaps because, for whatever reason, rich black kids just commit crimes more often.


I don't buy the argument that rich black kids commit crimes at higher rates. White and black people smoke weed at roughly the same rates, yet black people are far, far, far more likely to be prosecuted for it.


It's not an argument, merely an unknown. Considering that black people have elements of their own culture that are anti-hard work ("acting white") and pro-crime ("gangsta rap"), I wouldn't be suprised if this culture managed to spoil even the kids from the good homes to some degree.

BTW how do you know that white and black people smoke weed at roughly the same rates?


There have been studies on that very thing. https://www.washingtonpost.com/news/wonk/wp/2013/06/04/the-b...

If you look, Figures 21 and 22 show usage rates to be about the same. However, if you look down at Figure 10, you'll see a huge disparity in arrest rates.


I think white privilege is in contrast to being not white. Statistically, you can think of it as a, for example, 1% effect that gets added to another 1% effect that gets added to another 1% effect and so on. Add enough of these effects and you have a pretty big impact.

Even accounting for the racial makeup of those states, I know far more white people than non-white people from poor states who are now making great money.


> we should work to ensure that all people have that same privilege

That is working to destroy privilege.


The reason people refer to these things as privileges is because they are unavailable to the majority of the population.

It's a very privileged perspective to live in a world where these things are considered normal.

Privilege has to do with the idea that these things are so far from being a reality for so many people that it's evident to them that the world does not consider this to be their right.


And I think realizing these differences is maybe helpful somehow, but here is the reality:

> In that sense it feels perversly exploitative and priveleged to make so much more money ...

It seems to be more useful for shaming people.

> ... that the world does not consider this to be their right.

This seems to imply that those with privilege think their privilege is a right.


> It seems to be more useful for shaming people.

It is sometimes used that way, but is (I think more) often used in a much more analytically useful sense: as a means of indexing passive/automatic advantages that some people benefit from, and as a lens into the ways that advantage might be extended to others.

> This seems to imply that those with privilege think their privilege is a right.

That doesn't follow logically (if group A is bothered that the advantages of group B are not considered to be group A's right, it does not follow that group B considers those advantages to be group B's right), or textually (GP referred to "the world" as the thing not considering privilege a right for some people, which I interpreted as a reference to the context/emergent behavior/power structures that confer advantages; not specific people).


So privilege is useful primarily for charity?

> "...a reality for so many people that it's evident to them that the world does not..."

The dichotomy is those with privilege, and those without.


> If people don't like the concept, they don't really understand it.

I think plenty of people understand it, they just don't agree with it. Why wouldn't humans use every advantage available to them to succeed? It's a tough world out there and people want to thrive and survive, they'd also like to pass along the fruits of their labor to their offspring. That's how nature works.

There will always be a will to be the best, it doesn't matter if the demographics of people with economic advantages shift. I don't imagine we'll ever see people willfully make their lives more difficult and we shouldn't expect them to.


Generally, people don't say you should refuse to take advantage of them, but that you recognize them. That is, right now, you're misunderstanding privilege.


Recognize them then do what? Humans are complex and I see no value in using a one dimensional, subjective metric to make any sort of decision or guide a personal philosophy.


Privilege is a lens through which you look at the world and analyze things. It's more or less an analytical tool developed as a response to various flavors of social darwinism.

The idea behind privilege theory is to say that, when you compare people, you don't say "the more successful one is more successful because they are better", but instead "there are a number of factors, many of which are difficult to quantify, that contribute to the varying levels of success between two people (or especially groups)".

It's not one dimensional, and there's no objective way to measure or compare things as generic as "success". Privilege theory being explicit about this makes it superior to many of the alternatives.

"Do what" is such a broad question that I can't really answer it. Are you an academic, or a company or a government or something else? The answer depends on that. It's a malformed question, like asking "What do you do with Kantianism?" or something. The best answer I can give is "use it as an analytical lens to guide your decision making", which is a bad answer precisely because its a bad question.

A better one might be "What value does analyzing situations/systems via the lens that privilege provides give?" Which is incidentally also a pretty good question to ask about Kantianism.

The answer to that question also depends on exactly who you are and what you're doing, but at least it makes sense. For example, for me personally, I think that looking at things via a lens of privilege helps me to be a more empathetic person, on the whole.

For an academic, it might help you decide whether or not you are asking the right questions in an experiment.

As a very straightforward historical example, for many years in the US, there was explicit bias against African Americans in segregated schools. This was justified in many cases, through a social darwinistic lens: black people are less intelligent, the proof is that they perform worse, and so we should devote fewer resources to their education.

Looking at the same data through a lens of privilege though, one might instead conclude that segregated schools performed worse because they had fewer resources. In other words, the same correlation is explained in two vastly different ways.

I use that example specifically because today the same thing still happens, as a result of most school systems getting funding based on property taxes, and historical reasons so you still have a world where, in practice, predominantly black schools have much less funding. Ostensibly, this is "fair", since you use the same rule to fund everyone, but clearly it isn't actually. Privilege is one way of accounting for how things that are ostensibly fair may not be in practice.

As an aside, in a much more mathematical sense, I think that privilege theory is all about picking the right bayesian priors when doing an analysis.


I think this is a very well reasoned argument that makes sense within your logical and philosophical framework.

What it doesn't take into account is different meanings to the term "fair" or the morality of a system based on staunch individualism.

> Ostensibly, this is "fair", since you use the same rule to fund everyone, but clearly it isn't actually.

I actually find the situation you outlined extremely fair and would find it quite unfair to apply different funding principals to different schools based on demographics.

I suppose one of the problems I have with the concept of privilege is that I find it promotes a very dangerous mindset. Having grown up poor and non-white and achieved success through hard work, more often than not I saw people being held back by their own sense of victimization than any sort of systematic oppression. The concept of privilege exacerbates that and thus is counter productive.


>I actually find the situation you outlined extremely fair and would find it quite unfair to apply different funding principals to different schools based on demographics.

But that "fair" method isn't independent of demographic. And that's what privilege tries to highlight. It's almost always possible to dress up policies that are de-facto prejudicial as independent of the thing that they're supposedly prejudiced against.

If you want to discriminate against women without making it obvious, you can add an unnecessary height requirement. It's only when you take a look at the correlations between those variables, when you realize that women are inches shorter than men that something seems off. (and to be clear I'm talking about an abstract situation where height doesn't matter for whatever it is we're doing). When you take into account the correlations, the non-discriminatory rules suddenly feel a lot less non-discriminatory.

If you really supported a funding principle that was independent of demographics, you should support a system that grants funding solely based on headcount. Otherwise you're implicitly admitting that rich people deserve better education solely because they are rich, which seems discriminatory to me.

Granted, there are flaws to that system too, but what it doesn't do is further disadvantage the already disadvantaged. Your "fair" system leads to the poorest areas (and the least-white areas, and a few other similar things) getting the worst education. The result of this is that I, as an individual, receive a worse education do to things that are totally out of my control. That doesn't seem particularly fair to me.

(And that's ignoring other arguments that there are probably very compelling reasons to fund the least well off schools more, much like a progressive tax system favors those at the bottom. And as an extension of this, I'm curious if you favor a progressive tax system, or something else).

Another user mentioned this study[1], which unfortunately I can't find the paper for, but the video is still worth watching. I'll quote an important bit:

>As a person's levels of wealth increase, their feelings of compassion and empathy go down, and their feelings of entitlement and deservingness...increases.

The crux of this is that while you may disagree, its possible, and even perhaps likely, that your success is less "yours" than you believe, and that your mind is rewriting history, so to speak, to make you feel more in control of your outcomes than you actually were. This is by no means your fault or anything, and there are probably good evolutionary reasons for our brains doing this (I say probably only because I'm not an evolutionary psychologist, I can make some pretty good arguments for why this would be evolutionarily good). And there are times when it's probably a good idea to ignore that fact and feel like you're to blame for your outcomes, but there are also times where it isn't.

In any case, I hope you understand that there's more to it than just fake-victimhood and an attempt to make successful people feel bad. And that while you may disagree with the theory, its at least not total SJW nonsense :P

[1]:https://www.ted.com/talks/paul_piff_does_money_make_you_mean


> I'm curious if you favor a progressive tax system

I favor a flat tax if we must pay tax at all.

> The crux of this is that while you may disagree, its possible, and even perhaps likely, that your success is less "yours" than you believe, and that your mind is rewriting history, so to speak, to make you feel more in control of your outcomes than you actually were. This is by no means your fault or anything, and there are probably good evolutionary reasons for our brains doing this (I say probably only because I'm not an evolutionary psychologist, I can make some pretty good arguments for why this would be evolutionarily good). And there are times when it's probably a good idea to ignore that fact and feel like you're to blame for your outcomes, but there are also times where it isn't.

This is the crux of why I think the concept of privilege is extremely dangerous. You have no idea who I am and I've already stated that I fit some of the demographics that you deem underprivileged. Yet instead of listening to what I had to say (which is a quite simple explanation -- work smart/hard == do good) you fit a very elaborate psychological explanation over my experiences (of which you know nothing about).

Do you believe that poor people cannot succeed without help? If the answer is yes, then why would you question someone telling you that's what happened? If the answer is no, then I think you need to reexamine your philosophy as it's fairly dehumanizing to be told that you're not capable of success.

I also find it somewhat amusing that I've seen this pattern repeated over and over. Poor people claim to know what's hold them back. Rich people claim to know what's holding poor people back. Poor people who became wealthy are told they're experience is invalid, an outlier, not useful. Really shouldn't they (we) be the ones that have the most valuable opinion since we've proven it can work?

I'm not just talking about this exchange or my own experiences. You'll see this conversation happen over and over when someone who is self-made tries to discuss how they did it.


>This is the crux of why I think the concept of privilege is extremely dangerous. You have no idea who I am and I've already stated that I fit some of the demographics that you deem underprivileged. Yet instead of listening to what I had to say (which is a quite simple explanation -- work smart/hard == do good) you fit a very elaborate psychological explanation over my experiences (of which you know nothing about).

It doesn't really matter who you are, it's unlikely that you're immune to bias. I absolutely listened to what you said, it's just orthogonal to the point I made, which is that no matter your experience, how your brain works is probably not unique. You're almost certainly subject to the psychological quirks as everyone else. Do you want me to give your experiences special deference because you come from an underprivileged background? I thought that's explicitly what you were arguing against.

>Do you believe that poor people cannot succeed without help? If the answer is yes, then why would you question someone telling you that's what happened? If the answer is no, then I think you need to reexamine your philosophy as it's fairly dehumanizing to be told that you're not capable of success.

No. And I don't think I've ever said that poor people cannot succeed without help. I've said it's more difficult for poor people to achieve the same success as rich people, all else equal, but I don't see anything dehumanizing about that. I'd ask that you take another look at what I'm actually saying, because you're turning my words into something that they very much aren't.

>Poor people who became wealthy are told they're experience is invalid, an outlier, not useful. Really shouldn't they (we) be the ones that have the most valuable opinion since we've proven it can work?

No. Not at all! For the same reason that I wouldn't ask Jeff Bezos for life advice. Its survivorship bias, plain and simple. For every person with your story, there's someone else who had a similar background, worked just as hard, and isn't successful.

The common explanation for this is that a lot of successful people say that a good things is to take risks. They all have this in common. They took risks. But so did tons of other people who ended up broke or bankrupt or otherwise unsuccessful. Only listening to successful people will result in exactly what you're doing now: thinking that [hard work/risk taking/keeping a strict schedule/buddhist minimalism] is enough to do succeed, ignoring the fact that there are many people who did exactly the same thing who have failed.

Just to be clear, are you arguing that you worked harder/smarter than every person from your hometown who has seen less success than you? Because I'd find that highly unlikely. It certainly wasn't true for me.


> Just to be clear, are you arguing that you worked harder/smarter than every person from your hometown who has seen less success than you?

Yeah I'm arguing that. I used to try to help these people. I spent a lot of time doing it in fact. I would try to teach people in my town about computers but was told it was "geek stuff". I would try to get them to read books but again...that's for the nerds. I'd try to tell them there's more to life than football (was told there wasn't). I would tell them that maybe it wasn't a great idea to use crystal meth (this was before they all got hooked on opiods). I'd tell them that joining the military wasn't a path to success. I would tell them that they shouldn't be afraid of people from other cultures and that maybe they could learn from them and teach what was unique to their culture.

It all fell on deaf ears or was met with overt hostility. Even when I started to become successful and it looked like maybe some of this geeky stuff was actually valuable, all I got was anger for "abandoning" my roots. So at some point I just said fuck it. They don't want help. They are lazy and afraid and if you try to help them they will bring you down too.

Fast forward 20 some years and I see very privileged, successful people (such as yourself) making very well meaning but very misguided arguments about how to help underprivileged people. Do they, I and nearly everyone else face some systematic biases? Yes!! I've hit multiple glass ceilings and currently reside at one I don't have the energy to break through. That's not the main problem though. By far the biggest thing holding people back is their own fear of trying to succeed and the lack of strength to stand up to their own community who holds them back.

I don't know your background, but if it were practical I'd suggest actually going to live with some poor people. I think you'll find it's not the "myth of meritocracy" or the "patriarchy" holding them back. It's for the most part their own bad habits. I think most people who have escaped poverty would agree.


>Yeah I'm arguing that. I used to try to help these people. I spent a lot of time doing it in fact. I would try to teach people in my town about computers but was told it was "geek stuff". I would try to get them to read books but again...that's for the nerds. I'd try to tell them there's more to life than football (was told there wasn't). I would tell them that maybe it wasn't a great idea to use crystal meth (this was before they all got hooked on opiods). I'd tell them that joining the military wasn't a path to success. I would tell them that they shouldn't be afraid of people from other cultures and that maybe they could learn from them and teach what was unique to their culture.

And every person in your town was like this? You were the valedictorian of your high school and worked jobs on the side to make money because your parents didn't but you needed to be able to take care of your sister and keep the lights on anyway.

>I don't know your background, but if it were practical I'd suggest actually going to live with some poor people.

Aren't you the one assuming things now? I've lived with and interacted with some very-not-well-off people, more similar to the crystal meth hooked in-and-out of jail people you describe than you might at first think. Some of them are even relatively successful now. And yeah it absolutely took hard work and determination and grit in every case. But that's not all it took, for any of them. They all got lucky breaks, and they mostly admit that readily. I'm not as naive about this as you want to believe.

I mean, to be clear here, you appear to have had reliable access to computers 20+ years ago. That's a huge advantage over many people. And don't get me wrong, I don't mean to belittle your success, success is a good thing. But you seem resistant to recognizing your biases. Biases that everyone has and that are well documented. I don't really know why that is, but the fact that you picked that specific line to target, and ignored everything else I said is revealing. That you think hard work is all it takes is, if nothing else, naive.


Yes, my town was a hellhole and very, very small. I'm the only person who has achieved professional success. Most are dead, in jail or hooked on drugs. My relatives included.

> You were the valedictorian of your high school

No, I was a very poor student as I knew back then that school had little to do with success.

> worked jobs on the side to make money

There were no jobs in my town.

I admit I'm making some assumptions about you since I've literally never heard a poor person say the things you're saying but many, many middle-upper middle class people say them. I could be very wrong though.

> you appear to have had reliable access to computers 20+ years ago

My school had some very dated Apple IIes. The rest I got from magazines and library books. If there was a privilege there it was that I was alive at a time that booting up a machine dumped you into BASIC.

I'm 100% sure I'm biased. Everyone is, including yourself. Our conversation has drifted far from the original topic but I do appreciate you taking the time to have it. I don't think we could ever agree on many of these issues but its interesting to see them juxtaposed.


>No, I was a very poor student as I knew back then that school had little to do with success.

See, this is the kind of thing I mean. This is essentially a post-hoc justification of your success. Why did you "know that school had little to do with success". Why didn't your classmates? Did the valedictorian also end up on drugs and in jail? Or did they just end up less successful, despite working hard?

I mean I can actually take this same argument and apply it to some absolutely terrible choices: "I knew school had very little to do with success, so I decided to forgo school and start hustling and selling drugs at a young age, and here I am now an upper ranking member of a street gang, by many measures a fairly successful person". It's not like everyone who does the first does the second. A lot of them end up dead or in jail. But given what you've said so far, you would believe that individuals should follow that advice.

And if that's not the case, I ask what the difference between

> Take my advice, ignore your schoolwork and work with computers instead, you could become a millionaire, just look at Bill Gates!

and

> Take my advice, ignore your schoolwork and start selling drugs instead, you could become a millionaire, just look at [insert local gang leader or dealer]!

I could be wrong, but it really sounds like you're looking at your past through rose colored glasses. And as a result of this, you ascribe your success more to the "smart choices" you made than to the "lucky choices" or "lucky breaks" or "random opportunities" you got. I'd suggest you go out and look for people from similar backgrounds who made similar choices to you, I think you'll find it will be sobering how many of them didn't find success, despite the hard work, and that you're luckier than you think. Heck, I think if you really try and take an objective look, you'll find that some of the people who you feel like made worse choices than you were more similar to you thank you think, but didn't get the same lucky break.

Just in general, I think it's a good idea spending more time listening to unsuccessful people. It reminds me how they're not so different from me, and that's why I think privilege theory is both important and often correct. I hope you take the time to do that too.

Edit: I also think you're misunderstanding my use of the word bias in this context. I mean "evolutionarily hardwired to view things through a certain, objectively wrong, lens". See my earlier citations for how that reveals itself, but the result is that you, like everyone, are likely to take more credit for your achievements than you objectively deserve. This isn't unique to you, but it means that I basically have to take your entire description of your success and everyone else's failures with a grain of salt.


Your assumptions about me are pretty off base and that’s the problem. You’ll never be rhetorically successful by invalidating people’s personal experience. I have a lifetime of making decisions and viewing their outcomes to draw from. You have theory. I can look at what works for me, do more of it and see it pay off. I can see people do the opposite and fail.

This is why I think the concept of privilege will never grow beyond the people who already believe in it. It’s just too smug at its core.


>I can look at what works for me, do more of it and see it pay off. I can see people do the opposite and fail.

And this is the fallacy in your thinking. I can find people who made terrible choices and became more successful than you. I can find people who made similar choices to you and are much less successful.

If that's all you do, then plain and simple, your experiences are invalid. They don't matter. They're not data. And anyway, you're already successful now, so your choices practically don't matter anymore. Success begets success.

To put it simply, you need to accept that there are people who made good choices as you did, and aren't successful despite their hard work and good choices. Because that's fact. That's the world we live in. That's not smug. It's a hard pill to swallow, sure and I don't really blame you for refusing to. But there's nothing smug about it.


Do you really believe that nothing we do matters? That it’s all a roll of the dice or uncontrollably riding the waves of systematic oppression and privilege?

I don’t see how that’s useful. Yeah, life is not always fair but if you don’t believe in free will or that you can actually have some impact on your own existence, then what’s the point of even living it?

And let’s be real, if you’re good at what you do, you’ll be fine. Every good developer can get a job. That’s the economic reality we live in. People are capable of achieving that with hard work.

Like you said though, it doesn’t matter. It worked for me and it worked for millions of other people so whether you think that was luck, privilege or something else it doesn’t impact my success. What you may accomplish is encouraging people who could help themselves to not do so. Probably not even that though because the kind of people who can help themselves are already used to ignoring the naysayers.


>Do you really believe that nothing we do matters? That it’s all a roll of the dice or uncontrollably riding the waves of systematic oppression and privilege?

No, and this is the second time now that you've made a ridiculous strawman out of my statements. I'm saying systematic oppression and privilege matter and have an impact. This is opposed to what you said which, if I understand correctly is "work hard and you'll be successful, no matter the situation". When I say "no the situation matters too", you manage to interpret this as some kind of fatalistic "everything is predetermined" argument, which it is not.

To be clear, I'm not saying that privilege is the only component of success. I'm saying that hard work is not the only component of success. So far you seem to be interpreting the second as the first.

Perhaps if you actually tried to understand what I was actually saying, instead of going out of your way to misinterpret it, you would realize that it wasn't as much nonsense as you think.

>And let’s be real, if you’re good at what you do, you’ll be fine. Every good developer can get a job. That’s the economic reality we live in. People are capable of achieving that with hard work.

There are a lot of people that don't have the means to "become a good developer". I'll agree that good developers can get a good job, but for a lot of people, there aren't enough hours in the day to do what you handwave away as a given.

>the naysayers.

What, specifically, am I doing that is naysaying? Is saying "your success is a product of both your hard work and your circumstances" naysaying? Really?


You say this:

> To put it simply, you need to accept that there are people who made good choices as you did, and aren't successful despite their hard work and good choices.

I 100% disagree. If you make good decisions and work hard you'll be more successful than you would have been without doing that. If you study something with economic value, you'll get to participate in that value (if you're good).

I've never seen someone who is actually good at what they do (if it's something that's valued economically -- I've seen plenty of poor but skilled musicians for instance) live in destitution. Not once.

> There are a lot of people that don't have the means to "become a good developer".

There are people who don't have the mental capacity to do it yes, but I accept that and have no problem with it. We can't all be successful, utopias are a fantasy. I'm talking about the people with the capability to be successful. They should work hard and not give a moment's thought to anyone telling them to "check their privilege". It's a pointless exercise, you don't owe anyone an apology for doing well.


>If you make good decisions and work hard you'll be more successful than you would have been without doing that.

Sure, but relative success is not particularly relevant to what we've been discussing. I'm sure that many people from your hometown are relatively more successful than others. But you've already said that they aren't successful in a concrete sense.

My point is that

>study something with economic value

>someone who is actually good at what they do

is not an opportunity available to everyone. The opportunity to study something with economic value is a privilege. There are many people who don't have that privilege either due to economic or time constraints. If you're argument is that "people who had the opportunity to study something of economic value are able to be successful with only hard work", then I'd agree.

But those people already got lucky/privileged/an opportunity that isn't available to everyone when they had the ability to spend time and study something of economic value.

You can't "work hard and study something of economic value" if you have to work two jobs to keep the lights on. There aren't enough hours. It doesn't matter what your mental capacity is. Your physical capacity is too small.

>you don't owe anyone an apology for doing well.

And I never said you did. Please, again, listen to what I'm actually saying, and don't continue to make things up. I get that you disagree with me, but that means that you should be careful to read what I'm actually saying, not be biased by your predispositions. Remember that this conversation began because I said you misunderstood what privilege was. Responses like this make it look like you're not engaging in good faith and simply want to argue against privilege because you've been told you should disagree with it, and that you're unwilling to learn what it actually is.

Edit:

>I'm talking about the people with the capability to be successful.

Right, and I'm simply saying that the capability to be successful is not solely your innate intelligence or whatever, but also your in part your circumstances.

To give a simple example, which is more likely: that your children will get accepted into Harvard Law, or that Malia Obama's eventual children will?


> it seems almost built to shame people for having more due to circumstances

That's quite literally what it is. I'm not particularly Christian, but at least it doesn't make me pay for the sins of the father unlike whatever this new orthodoxy is.


Some people use it as a shaming device, which is rarely constructive.

Many, many others simply use it as a means of gaining a better (more compassionate) ethical understanding of the world. Unless you subscribe to a Rand-ish "altruism = bad" ideology, it's perfectly possible to understand contextual factors that you benefit from, understand that others do not, and--even if you don't actively spend resources to improve that system--at least keep its existence in mind when interacting with others and understanding the world. None of that requires you to feel shame.

It's like going up to a random person at an international airport: knowledge of the existence of other languages means you don't automatically assume that person speaks English. You don't have to be ashamed of speaking English, or learn their language, but knowing why they might not understand what you say to them can sure help you avoid being an ass.


What about original sin?


The difference is that others' lack of access to the Louvre or the beach isn't preventing them from feeding their families.

To a degree, we should feel bad for having access to capital when there are far greater needs for this capital elsewhere. Most of us don't have any real power to change the situation unfortunately. But it is definitely something to be conscious of and you should reflect on what you can do to help turn the tide for those less fortunate.


How bad should I feel exactly? Is this equivalent to murder? Had we foregone some luxury many could be saved from starvation.

I don't even really disagree, but the weight of the burden you assume responsibility over is very great. Why not devote your entire life to helping others if you are responsible for them, consume no luxuries, or anything but the most basic of needs.

I'm sure you could save thousands.


That is my end goal. My best chance at having a lasting impact on society and this world requires me to first accumulate more capital before I can help. If I spend everything helping others now, then I won't have done all that much, and chances are it won't be a lasting change.

It is important to be aware of your place in society. I am a 28 year old white male with only a handful of years of professional experience. I am benefiting from the past and present exploitation of others. But within this privileged class I am not so high up on the totem pole.

By working my way up the totem pole, and always looking for ways to help, I will find myself in a position to make a real impact. And if not myself, then hopefully my children.

It makes sense to enjoy your prosperity to the extent that it allows you to continue progressing toward this goal. In order to climb the totem pole, you have to spend money on luxuries. You have to wear expensive suits and go to exclusive parties.

At the same time, there are always things you can do to help right now. For example, I tip service workers well as they need the money more than I do. I give change to beggars and those who find themselves in tough spots. I also make an effort to spread the perspectives of those less privileged than myself as I've found that straight white males pay more attention to other straight white males.


Are you saying that you think you will be able to climb faster than everyone else and when finished (when are you rich enough btw?) be better at making an impact than all the other efforts trying to change the world?

At least be honest. It's not that it's the most efficient way to spend your money; you simply want to be the hero. While letting your spare coins trickle down to those below. And it's ok cause you'll pay back later. Maybe through the next generation even.

But perhaps it was I who missed the irony?


I don't have to climb faster than others, but I would like to peak in wealth and influence before I come up with my own ultimate plans. That will likely be around the age of 50 or 60.

We must all do our part to look out for others. I give away whatever I can afford to friends and family who are short on money. I accumulate relatively little compared to my earning potential. But I am also laying the groundwork to help others further down the road.

My influence comes from being born a straight white male to a wealthy family in a wealthy nation. I am educated and practice an in-demand vocation. I command a high wage on the labour market, and this allows me to accumulate capital faster than most people. A factory worker makes less than a third of what I do per hour. So I can make a larger impact than them.

Most people do not earn enough to accumulate any meaningful capital in their lifetime. I am more privileged than most, and of course, less privileged than others.


> But I am also laying the groundwork to help others further down the road. > I command a high wage > [I] accumulate capital faster than most people > A factory worker makes less than a third of what I do > I can make a larger impact than them > Most people do not earn enough to accumulate any meaningful capital in their lifetime

You are presenting pretty much every argument i can think of for why it's a problem that wealth generates wealth. That the very fact that you earn more than others is what prevents them from accumulating meaningful capital. Yet i don't see you fighting for wealth redistribution, which is a proven way of making an impact.

If you had said: "i believe i earn more than i deserve", "i have mostly been lucky", "hard working factory workers should earn more", or "free healthcare and education!", i might have believed that you planned to fight for making people who are rich like you at 60 slightly less rich (relatively). But you didn't. So i maintain my position that you should at least be honest.


I think it's kinda pointless to "feel bad" about something we have no control over (while we could not take the job, we definitely can't give someone else our seat). It's mostly just unhealthy.

Much better to support political movements trying to help spread the wealth and donating money to things that advance the public good in the mean time.


It is useful to feel bad so that one can change what it is they can about their situation that causes those feelings. But to continue to feel bad beyond that, yes I completely agree, it is of no use.


I don't understand the self-loathing that is so popular these days. Somehow we've convinced a generation of perfectly decent human beings that they are "exploiting" the weak and that their "privilege" is oppressing the rest of the world, just by going about their business.

You're a programmer. Maybe you're decent, maybe you're not. It is VERY unlikely that the "millions and millions" of "infinitely more talented" Eastern European/Indian/Chinese programmers you mention actually exist. And even if they did, there are many societal and economic reasons besides "US Immigration Laws" that would prevent them from coming here and taking your job for an order of magnitude less money.


Truth be told, most software development doesn't require a high amount of intelligence, skill, or innate talent.

I'm not afraid of a superior person taking my job. They would be no better at it than I am. I would probably be more productive if I were less intelligent (or on booze, but employers frown on that).


I don't know what type of code you write, or where you went to school, but I had a professor who actually put the exam score distribution on the whiteboard after each test in a second level CS class, and the bimodal distribution was stark. And these are people motivated or interested enough to spend their academic career pursuing it beyond intro level washout.


This is wrong. Even simple software requires a radically different way of thinking than the way most are trained. I've taught 6th graders how to code and it is clear that the way of approaching problems and creating solutions (i.e. creative thinking, intellectual curiosity, and willingness to collaborate and ask questions) really separates the students from who "get it" and thse who don't. Don't sell it short because the industry has made tools and languages that abstract over some of the simpler concepts for entry-level tasks.


Perhaps he means in relation to other careers? As someone who is both a software developer and a farmer, software isn't exactly easy, but in comparison to the knowledge and skill required to farm successfully, it is a breeze.


This is quite interesting - I'm actually quite curious about what makes farming more intellectually challenging and difficult than programming, especially from somebody who does both. (Honest curiosity!)


I would imagine it's the constant problem-solving with real-world, "dirty" problems. You can't take the fact that your crops are failing through a debugger and reason about it line-by-line. You can't quickly run another simulation. You can't insert a single solution at one point and know that it won't affect the rest of the application.

Your answers are always based on fuzzy data, experience, and intuition. Your solutions will always affect the local ecosystem of the crops, and cause hard-to-predict chain reactions.

...but I'm not a farmer, so I'm just guessing.


I suspect it's that and so much more! There's a huge science aspect to it now; and every year there's new pesticides, new seed varieties, crop-rations, yield techniques, etc. Not to mention the huge complicated business and tax bureaucracy that is modern farming. I'm sure this is only a small slice which is why it would be great to see more.

What I don't have even a sense of is how much of a daily concern a lot of this is or if it's a once-a-year kind of thing, or how much of it impacts somebody who "only" farms to support his family and may only have 1-2 workers versus hundreds.


That is a good question. I'm not sure how well I will be able to put it into words, but I'll give it a go! For what it is worth, I have a grain farm, so my perspective comes from that type of operation.

A big one is simply the breadth of the subject matter. To me it feels like learning to program, forgetting everything, and repeating several more times. You have to know about plants, chemicals, machinery, computer technology, business, just to name a few. I don't think you need to be a expert in any of those things, but it seems to me like the most successful farmers approach being that.

Every year is different. If you've built one CRUD app, every CRUD app is going to come with a similar set of problems. If you've grown one field of corn, who knows what next year will bring? I've been farming for more than a decade now and I still encounter situations that I've never seen before. Luckily, which makes it much less of a challenge, but might be interesting being that I'm the sixth generation to work my family's farm, I can ask family for advice and you get the "Well, back in '72 it was like this and we did that." Still, there is lots of problem solving to do. In that respect, it is a lot like programming.

What is not not like programming is an answer for everything on the internet. I truly miss that. While programming, if I have any kind of mental block, a few minutes on Google will turn me right around. On the farm, family is an amazing resource, and there are plenty of academic and other professionals available to be contacted, but it's not the same. Programmers are incredibly fortunate!

I'll just throw in that farming constantly makes me feel dumb. Still, after a decade at it. Not very quantitate, I know, but it's a feeling I have never experienced in the same way as a programmer. I'm sure I could go on, but I have to move on to other engagements. I hope you found this interesting.


Thank you very much for the thoughtful response! The parallels are interesting. Farming sounds a lot like writing assembly! Start over every time, have to know about wildly arcane and disparate concepts, hard to get help except from somebody who has encountered something very similar perhaps a long time ago, and takes many years to feel productive.


My grandfather was a farmer. By necessity he was also forced to become a competent mechanic, carpenter, electrician, and plumber (did I miss any?).

Farmers are the most self-sufficient people you'll ever meet.


They've always been (incorrectly) characterized in what I've seen in media/pop-culture as hardworking but relatively simple. The more I learn about the difficulties of modern farming and what it takes to succeed, the more respect I have. I'd love read a blog from somebody with career-level experience in both software-engineering and farming. I'm sure I/we could learn a lot.


Business person, maybe economist when you take into account prices for crops and deciding what to grow.


I disagree, GP is absolutely correct. The reason people think that programming or software engineering is hard is because they were told that it is hard. US and the West in general has this strange culture where those that are supposed to know (teachers, parents, professors) like to tell those who are learning (students, children, etc) that whatever is done is hard. Math, apparently, is hard. Algebra is hard. Trigonometry is hard. Geography is hard. Physics is hard. It does not matter what it is - if it is worth doing it is all "hard".

Students that "get it" are the ones who managed to ignore the "hard" label. That's it.

In the industry I keep hearing that everything is hard:

Dev: "Logging is a solved problem at the rate we are looking at - it is what, 100 messages per second?" VP of Eng: "I dont know man. Logging is hard. We should outsource it."

SRE: "Just build images and spin them up" CTO: "That's hard. We should outsource it"

Dev: "Lets fix this reliability issue. We keep getting disconnects and it does something wacky to our API" CTO/VP Eng: "That's hard. Lets just see if we can spin up enough instances not to notice"

Most of stuff that we do is not hard.


Algebra is hard - it's an abstract problem-space. It takes learning problem-solving! I've seen brilliant middle-school kids struggle with it because it's a way of thinking that has to be learned. Don't cut yourself or others short by saying these things you think are easy are easy by their very nature.

Doing any of those things you describe with effectively in a mid/large-scale engineering organization with many competing tech priorities is not something an amateur or simpleton could do with any real success. I can put seeds in the ground, but that doesn't make me a farmer.

But also - maybe larger point - many of the things that are not coding/math/science are also quite hard. My father fixed auto-bodies for a living and he made some incredibly difficult, detail-oriented, craftsmanship tasks look dumb-simple. He asked me to tape off a car once so it could be painted - something he thought a 13 year old should be able to do because it was "so easy" was a complete disaster. He forgot how second-nature it had become to him.

So..just because you think it's easy doesn't mean it is. And just because it's hard doesn't mean it's fairly characterized in popular-opinion as being as hard as it actually is.


I completely disagree. Every single subject I've ever struggled with in a school setting was described to me as "No don't worry, it's actually really easy" which was a problem.

If I'm struggling to understand something that is so easy, maybe I'm just dumb.


I think software development is hard, but not because the subject matter is intrinsically difficult. (Sometimes it is, but usually that's not the primary reason.) It's hard because we've invented a mountain of little annoying problems with little annoying workarounds and it takes decades to learn most of them in any particular domain.


Does it have to be though? I'm sure reading/writing were thought the same for women/blacks/etc.. at some point in history.


I suspect I'm ideologically closer to you than to some of the more libertarian commenters on this thread, but that comment is both a false comparison, intensely reductive, and, I think, needlessly divisive.

No-one is arguing that certain groups have greater aptitude or learning ability for programming; they're arguing that certain individuals might differ.


Seriously. A lot of comments in here are "Well it's hard so we deserve it!".

There are thousands of developers making fractions of what their equally talented counterparts make in the US.


Offshore developed code is not usually the same quality. Not that we all deserve huge salaries, but code quality important.


Let's ignore the fact that this may or may not be true (offshore code quality is bad) and just assume it's true...

Why is offshore-developed code not the same quality? What is it about living (growing up?) in the US that has developers producing higher-quality code?

I highly suspect that it's merely selection bias. US companies outsource offshore to save money and when your goal is to save money you've already decided that "the best" isn't really what you're going for. So the code we--as US-based developers--see from offshore development often looks like barely-working garbage.

Yet if we look at open source code written by offshore developers it's often of high quality (i.e. higher quality than the crap we see in the world of Enterprise software). Why doesn't it match our experiences with commercial software development?

It probably has a lot to do with incentives. Open source software is often developed for pleasure or as a learning experience whereas US companies outsourcing software development aren't exactly "driving excellence."


I would imagine among most companies the cheapest option is not the one they go with. It's not a new business concept, cheapest thing is not usually what you want.

I would also be curious what the relative salaries are, e.g. food and shelter are usually much cheaper in foreign countries.


"Offshore developed code is not usually the same quality."

American exceptionalism and absolutely wrong.


Outsourcing creates all sorts of new project planning and communication challenges that most companies are not accustomed to managing. Add in significant timezone offsets, language and cultural barriers, lower communication fidelity and often a tinge of resentment and you've got a recipe for low quality if the project is completed at all.

I don't think this has to be American to be true.


I think, for many of us, our only experience with offshore code is with the bottom dollar coding sweatshops, which are universally shitty.

I have no idea what % of offshore code work that represents compared to just a regular consulting firm that happens to be located overseas, or a branch office of a company located in another country.


I speak primarily from experience.


As an "offshore developer", I have worked on multiple US projects with low quality code written by US developers.

Should I assume that American code is usually low quality?


Not at all denying the existence of low quality programmers in the US, but generally it seems like there is a focus on quality that does not exist for the majority of offshore developers, just about churning out code as fast as possible.


I feel like I miss a part the meaning of "offshore" here, and I suspect it's more cultural than a linguistic problem. I mean, technically, German or Japanese developers working for US companies are "offshore" too, but I don't believe you're accusing them of "churning code without regard to code quality"?

Oh, and also, both the previous paragraph and your comments in the thread are (edited:)nationalist[1]. Not that it's not fun to use stereotypes and a few anecdotes to form an opinion, so don't mind me, just noting.

[1] Not sure if it's the correct word, I mean discrimination by ethnicity and nationality.


It is not, shockingly, racism does need to involve race.

Nor do I think my nation is the greatest, and all the others suck. So I don't think it counts as nationalism.


Yeah, sorry, I'm not actually well versed in these matters (of discrimination, never needed to be), I couldn't find the correct word.

Anyway, you do attribute certain characteristics to members of whole nations without any kind of proof (beyond what "everybody [in the field] knows"). I believe you shouldn't, and that it doesn't matter if the characteristics are positive or negative.

In reality, there are both good and bad programmers everywhere. That you ended up working with the bad - or maybe ill-incentivized due to some circumstances - programmers from here or there does not mean that there are no good programmers there or businesses that care for quality. It just means you didn't meet them.


> Yeah, sorry, I'm not actually well versed in these matters ...

Perhaps you should not be accusing others then if you aren't even certain what you're accusing them of.

> Anyway, you do attribute certain characteristics to members of whole nations without any kind of proof

Homogeneous groups of people often share similar attributes, I don't see what is incorrect or wrong about that.

You are correct though, I do not have proof, but it is something that I hear from and discuss with colleagues, as well as have observed myself.


> Perhaps you should not be accusing others

I said I'm sorry, and I edited the comment. This is, however, a detail - that you are unjustly discriminating, only on a basis other than race, I stand by.

> Homogeneous groups of people

Assuming homogeneity of any group of people is almost certainly wrong.

Why don't you substitute "black" or "Hispanic" or "Jewish" for "offshore" in your arguments and see what happens? Would you be able to leisurely write that, in your opinion, "black programmers are sloppy and only churn code as quickly as possible"?


Does this focus exist for the majority of US developers or is it about churning out code as fast as possible?

You can also hire the better part of offshore developers if you'll pay just a bit closer to US rates. I saw the situation "$15/h developer failed everything, help us $35/h developer!" quite a lot in Russian-speaking freelance communities.


this is not true. perhaps just bad luck. i've worked with developers in other countries that are at least as good as any american developers i've worked with.


> Should I assume that American code is usually low quality?

Yes. It usually is.


You could quite simply expand this to The vast majority of code is of very low quality


Are you including Canada in "offshore"? Europe?

That is implied, from the comment you replied to. You may need to rephrase.


The majority of offshore developers I have worked with have been from South America, India, and Eastern Europe.


Anecdotes are not data.


To be honest I thought it was common knowledge, but I assume there exists no such study of code quality between countries.


Offshore developed code, when created using a similar process and for similar cost to US developed code, is usually of comparable quality.

You can get ridiculously poor quality of code by paying bottom dollar and failing to properly communicate with your developers, no matter what country those developers happen to be situated in.


I don't think that the code created for example at Google Warsaw is worse than code created at Google Mountain View (you can even check yourself, people in Warsaw work on Kubernetes, which is open source). And yet, the Warsaw salary is maybe 30-50% of the salary in MV.


Great example, very representative. Largest global tech company vs. your average offshore developer.


I don't know the situation in other countries, but in Poland Google's approach is rather typical. American corporations typically just set up an office here instead of buying services from some shady local offshore company. I don't see much of the latter around (and incidentally, the big ones are American as well - IBM, Accenture etc.)


But wouldn't you live a whole lot better in Warsaw on 50% than in Mountain View on 100% of that relatively high Google salary?


Depends on what do you mean "live better". iPads, cars, plane tickets, electronics and other luxuries aren't cheaper in Poland than they are in US. You might "live better", but you also might never be able to visit Hawaii or drive a Tesla.


By live better parent commenter almost certainly meant make more money.

Even if luxuries are not cheaper, food, shelter, healthcare etc. are, freeing up more monies.


Depends on your living situation. If you want a house in the suburbs with not terrible commute, it's going to cost you $200-400k in Warsaw vs probably three times as much in SV? This (and higher taxes in the US) can probably consume a lot of the salary difference. But, on the other hand, if you're ok with living in a small studio, you're going to make bank in SV.


>Offshore developed code is not usually the same quality. Not that we all deserve huge salaries, but code quality important.

Cheap offshore developed code is usually not the same quality. Pay people the same and it's amazing what you'll get.


Are offshore developers not being payed competitively to their local rates?


I assure you there's plenty of native code that is the same quality.

I write a lot of it professionally.


Quality declines as the gap between customer and devs increases.


This is true. I recently applied for a job in the US and one in the UK. In the US, I got a ridiculously good salary offer. The UK job's compensation was maybe half what the US job offered. My cost of living is also lower than the folks in London, so it's just perverse no matter how you slice it.

I honestly don't think it will last, though. Economically, it just doesn't make sense. My recommendation to any of my fellow US developers: save as much as you can while the money is good.


To be honest, I think if anything the trend will continue and the salaries will go up. There will still be a shortage of highly skilled developers who demand higher salaries. At my company we've been trying to hire a senior frontend developer for the last 6 months; it's hard, especially outside of major tech areas. Most people come unprepared, lie in their resumes, and suffer intensely from the Dunning Kruger effect. I don't see this trend of lying to get the job that pays good money to stop anytime soon. Out the 1.6M programmers employed in the US, I think a large portion still have the job because companies are desperate to hire, but don't know how hire for this industry.


I disagree, but time will tell. I think that at some point companies will realize that it's 2018 and remote work is a (mostly) solved problem. Once that realization hits, the high salaries are going.

I've worked remotely for the past 3 years. If you're open to remote work, the challenge isn't finding qualified employees. The challenge is turning off the firehose of qualified applicants once you post a job listing.


Have you seen the revenues? Have you seen the stock prices? Besides that they obviously can afford to keep raising salaries to compete with each other, they also have to keep raising salaries to compete with the devs. Market entry has such a low barrier, they have to essentially pay every developer to not simply take their knowledge, walk out the door, and set up their own shingle.


US Tech also makes a lot more money than UK tech. Starting with the big ones, ending with the amount of investment funding the area has.


> U.S. immigration laws act as a protectionist barrier to prop up programmer compensation

It's almost impossible to immigrate to England (much harder than the US), yet programmers in SF are far better compensated than those in London.


> It's almost impossible to immigrate to England (much harder than the US), yet programmers in SF are far better compensated than those in London.

Immigration per se may be hard, but working is much easier than the US; I know several Romanians working as programmers in London.


Immigrating to the UK from Romania (or the rest of the EU) is extremely easy.

1) Move there. You can do this even without a job.

2) Book an appointment with the Job Centre (usually used by people seeking work), where you must show your passport.

(Start work if you like. Your employer may ask to see your passport, if you don't yet have the tax number.)

3) Tax number arrives a week or a few later; tell employer.

The process is actually the same for British citizens without a tax number, e.g. a child born abroad who moves "home" to the UK.


Someone in my family has fought for the US in every war since the civil war. They have fought, bled, and died for this country, paid taxes, and helped build it from a weak country to the most powerful civilization in human history. They did it because they wanted their children and grandchildren to have a better life. Why should I feel guilty about this?


Because you did absolutely nothing to earn having good family members?

Most people feel at least sheepish about their own success when faced with others, no less deserving, who experience failure.


This is a quasi-religious reversal of cause and effect. Parents create children. Children aren't assigned parents. People - real flesh and blood people, not abstractions - devote an enormous amount of their resources and waking life to doing the best possible for their next generation.


?

You're the one reversing cause and effect. As though I should feel proud and deserving that my ancestors (who, mind, I had nothing to do with) worked hard, got lucky, and gifted me remarkable advantages.


The point is that millions of people made sacrifices for themselves and their families which cumulatively created the greatest civilization in history. Why should we feel guilty about reaping the benefits of those sacrifices? Why should we feel obligated to hand over our prosperity to those who contributed nothing to it?


Don't feel guilty, but realize that you're not entitled to what you have - you got lucky being born to parents who worked so hard etc. Continue to work as hard as they did and appreciate their work.


The only thing talking about privilege does is create a game of one-upmanship where everyone tries to tear others success down.

I would argue everyone is privileged to some degree. Hell, being born in a first world country makes you way more privileged than most of the world.

And yes, there is luck involved, but hard work plays a massive role in outcomes. To ignore that is folly.


> realize that you're not entitled to what you have

That's ridiculous. The fact that his parents worked hard is what entitled him to the life he has, all the way up the chain to the ones that emigrated to America and earlier. This 'original sin' stuff that people are trying to push just because we are born in the US is crap.


People all over the world work quite hard. Yet, their families don't get anywhere near the benefits that some others do.


They haven't lost them at the expense of those others either, though, nor would the people who have more likely have received it if the people who had to work for them knew that they would be whisked away in large measure to iron out every last inequality.


I'm not super interested in debating this philosophy and your response reads to me as pretty flippant and entitled, so I'll bow out. I hope you receive everything you're entitled to.


I don't understand why you're "bowing out" instead of debating, if you have a strong case to make. What about the GP's post is factually incorrect?


You shouldn't feel guilty. The Privilege argument is a way for people to feel like victims instead of taking responsibility for their own destiny. Life is unfair and it's quite impossible to accurately distinguish all the ways life has been unfair to all the different people. Is a white person's privilege balanced out because they are a cripple? There's not scientific metric to measure any of this, it's the new moral fashion an nothing else.

Bring on the downvotes, I don't give a shit.


Down voting is one of the few powers some downtrodden people have in this world. You won't even afford them the satisfaction of at least pretending they hurt your feelings? ;-)


Ideally not. But then your government unilaterally decided that spreading American values, culture, and products is the best thing to do. And now a lot of people want to come here and experience first hand.


I'm fine with that, as long as they can positively contribute. I'm not fine with bringing in millions of people who immediately go on benefits while US citizens can't afford health care, college, and military vets are living on the street


The reason the US can't afford any of that is because it's not a priority. Every other modern country manages to pay for all that and now they are also putting up with large scale immigration such as with Syrian refugees.


> millions of people who immediately go on benefits

This is difficult in most countries and extremely so in the US. Which benefits? How do they prove entitlement to them? By what process are they entitled to them but the military vets living on the street aren't?

I'm not saying it doesn't happen, but I suspect it happens a lot less often than you think.

(also, you've done the old "Schroedinger's immigrant" thing: at the top of the thread we were talking about jobs, you're talking about benefits now. Who are these people who simultaneously go on benefits while also stealing your job?)


illegal immigrants drive down wages in low skill jobs which depresses wages up the chain because natives have to find more skilled jobs to retain their previous standard of living.

At the same time their children, whether "dreamers" or native born get free education and healthcare the average cost per student in the US is around 15k the highest in the world, which these kids receive for free despite their parents never paying into the system.

The end result is that illegal immigration costs US federal and state governments 85-100 billion a year.

I support highly skilled labor ie top .1% of worldwide talent, not unlimited immigration sponsored by corporations to drive down wages for US citizens, whether that be low skilled manufacturing or software engineering

http://www.politifact.com/truth-o-meter/statements/2016/sep/...

https://fairus.org/issue/publications-resources/fiscal-burde...


Those two issues are orthogonal. It's not people on benefits, immigrant or otherwise, who are causing skyrocketing college tuition.


>Another possibility is that U.S. immigration laws act as a protectionist barrier to prop up programmer compensation. It seems impossible for this to last (why shouldn’t there by really valuable non-U.S. companies), but it does appear to be somewhat true for now.

I find this quote confusing. Historically, the poaching of highly-skilled foreigners has been an important step in developing mere import substitutions into products which can be competitive on a global scale.

The Tudor government (Henry VII-Elizabeth I) kicked off its finished-wool-import-substitution program by poaching skilled weavers and machinists from the low countries (e.g. Flanders, Holland, France). Then, as the export of finished wool goods grew, so did restrictions on the exportation of raw materials and the importation of finished wool. Nearly 100 years later, England had the ability to drive European countries to famine by simply banning the export of raw wool.[0]

In the early 18th century, France started poaching British watchmakers, weavers and metalworkers; Britain responded by outlawing the emigration of skilled workers in 1719.[1]

With that context, I find it odd to hear that U.S. immigration policy has started to work in opposition to the what I believe is the largest benefit of immigration. What incentive is there to keep highly skilled workers, along with their advanced knowledge, out of the U.S.?

[0] - Chang, Ha-Joon. Bad Samaritans: The Myth of Free Trade and the Secret History of Capitalism. New York, NY: Bloomsbury Press, 2008. Print. pg. 40-42

[1] - Chang, Ha-Joon. Bad Samaritans: The Myth of Free Trade and the Secret History of Capitalism. New York, NY: Bloomsbury Press, 2008. Print. pg. 129


> And if the millions and millions of Indian, Chinese, and Eastern European programmers who are inifinitely more talented/driven/intelligent/educated than myself were able to simply move here and seek employment with no immigration restraints, I know that I would be out of a job instantly.

Couldn't you say the same thing about other professions?


Where's all the great Indian, Chinese and Eastern European software? Seriously wondering, because most software I saw from these regions was mediocre at best.

The whole world uses operating systems, browsers and development tools made in western countries.


The best ones are making all the software that western companies use. The US (coast) pays an absurdly average high salary as compared to other countries for CS roles.

Now, the quality of engineering education received at top CS/engg. institutes and a local college is night and day. This means that only a small subset of the graduating engineers get any decent quality of education.

Most of these people, often considered the cream of the crop are poached by the aforementioned western companies or go for graduate studies. Graduate institutes in India are underwhelming, so these students land up in the west as well.

The rest of the cream have to choose between software engineering roles that pay around $15-25k with very little vertical movement and business analyst/ consultancy roles where you might earn a bit more and have a much clearer clearer progression up the ladder. These are often referred to as the MBA crowd.

Look at people like Sanjay Ghemawat, whose achievements are as noteworthy as Jeff Dean, having been a fundamental part of developing MapReduce, BigTable, Tensorflow, GFS and Spanner.

It is actually a very ironic situation. One one hand the US is complaining about negative intellectual biases against Asian immigrants, while both the Indian and Chinese govt. are lamenting how they are losing the cream of the crop to the US as well.

If both are the be believed, India and China's best are leaving the countries, but the US is not getting competent people from these countries. So, I guess these people have vanished into thin air. In the mean time Chinese and Indians increasingly churn out ground breaking papers and research in CS.


My experience is that culturally, places outside of North America and West Europe have lagged in attitudes to software development. Tech is still referred to as "IT" and engineers are still seen as code-monkeys or a cost-centre.

This is very much changing, especially in China, but I presume there is still some lag. The other thing worth bearing in mind is that Chinese products are very insular. They are slow to get localized if ever so unless you have a reason to be going out to download them, you are unlikely to ever be using them.


> places outside of North America and West Europe have lagged in attitudes to software development.

This is right. From my experience working with an offshore team in India, the main problem is cultural. A large majority of the developers in India I've worked with have no interest in furthering their development carrier, but see it simply as a way to transition into management as fast as possible. In practice, this means that you can go from a junior developer to a project manager in the span of 2 years or so. 2 years is not enough time to solidify your knowledge and become the t-shaped programmer that this industry requires. I think one needs at least 5 years of work and experimentation in this field to reach the level where you can contribute positively to a company, without creating huge amounts of technical debt.


And with higher quality will come higher labour costs.


Eh, nginx? All JetBrains IDEs? Yandex still beating Google locally? Ukraine being a huge outsourcing hub for US companies? China having ten clones for every service blocked by GFW?


And where's the great German, English, French, Japanese etc. software? The truth is that the global software market is thoroughly dominated by American companies, probably in large part due to its unique investing environment (lots of VCs willing to take risks on startups).


The job of government is to represent the interests of its citizens. Purposely lowering the standard of living of citizens via unlimited immigration is a great way to get yourself out of office.


I think that’s a touch more complex a problem than you’re making it out to be.

Maybe you were born in the right place for the economical opportunity for someone born “lower” (please be generous with my terms here), but maybe it’s that these others were born “higher” to a place where higher education is easier to accumulate granting them a severe advantage competitively should you have to compete in an economic arena on the same level.

Or do we accept that being born to an economic disadvantage due to whatever factors mean you should be solely relegated to your caste of manual labour, service occupations, or direct servitude?

Second to that problem is what value does higher education really have in application in what are varied circumstances.

My understanding was the founding of the US was quite counter to that idea— and it’s one ideal that many countries have thankfully sought to incorporate.

Though I think you’re on to a problem—one that includes the consideration that current rules don’t exactly line up with the values we might wish to pursue as a (human, global) society. Partly because it might be necessary in what appears to be a period of transition.


Ask the other side of the equation: why don't their countries have well-heeled tech companies attracting capital and ideas with the same investment opportunity so that they can live a comparable lifestyle to you where they come from?


It seems like there should be more arbitrage? Google at least has engineering offices all over the world. If immigration barriers were the main issue, it seems like more companies should be doing the same.


I don't completely disagree with you, but software development as a job is not purely based on how talented of a coder you are. There are many, many other aspects to the job that really have nothing to do with computers/computer science.

Don't discount your other abilities that much.


Instead of worrying about potential foreigners competing for your job, you should wonder why there are so few jobs out there: it's because the rich are hoarding them. The money for them, that is. There is so much work to be done, plenty of work for you and your Indian and Chinese friends to all have well-paying jobs. The reason we all don't have them is that we are just extremely bad at allocating resources: we choose the most inefficient method, market capitalism. We, essentially at random, select a tiny group of elite wealth hoarders who centrally plan and distribute nearly all of the world's wealth without any concern for social good or welfare or anything other than their continued accumulation of wealth and power. Then we beg them to give us jobs, to give us their table scraps and we fight each other for them, terrified at any moment our benefactors might take away our livelihood instead of rolling up our sleeves and getting to work.


I completely agree that the main problem is lack of spending money in the hands of people who actually need it. There's plenty of work to be done, if only the people who need it had money to pay for it.

However, capitalism (in the form of Walmart and its suppliers, for example) does seem quite efficient at supplying material things to poor people. More spending power in the right places would go pretty far to fix the problem, along with boosting the economy.


Walmart's profit primarily comes from abuse of monopoly (which is not efficiency) and from government subsidies (they are the biggest welfare recipients in the world, since their workers require government welfare to survive while working so much for so little).

Their profits come from economic coercion and exploiting public subsidies, not efficiency. Walmart's primary competitive innovation historically was union busting.


"However, capitalism (in the form of Walmart and its suppliers, for example) does seem quite efficient at supplying material things to poor people. "

Does it? I don't know if I'd really agree with that.


https://ourworldindata.org/grapher/declining-global-poverty-...

Like it or not, the greedy evil capitalists are making the world a better place for all of us.


Again, are they? Define "better".


> it's because the rich are hoarding them

The enemy are not foreigners man, the enemy are the rich!

More

Applications are open for YC Winter 2019

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

Search: