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.
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.
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.
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.
> 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
That said, it's often a great resource.
And you're the reason why I have to mop up poor performance because someone decided to use MongoDB for highly-relational data.
 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...
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.
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.
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).
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 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 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.
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.
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. :)
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.
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.
Programming education is totally ad-hoc and you can be a great programmer even with a degree in agriculture.
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.
> 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.
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.
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.
Most professional programmers would put in more hours of hands on programming in a months work.
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...
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 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.
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 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.
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.
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.
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.
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.
> 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.
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.
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).
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.)
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.
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
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.
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.
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 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 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'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.
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.
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
The life of the average programmer certainly does not involve endless burritos or massages, and the compensation is probably below yours.
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.
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.
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 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
I'm sort of mixing apples and oranges but it makes sense in my head :)
Are you saying this as a programmer, or are you saying this as a banker/consultant/lawyer?
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
Hitting major league pitching.
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.
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.
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.
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.
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.
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. )
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.)
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.
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 );
(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.
elephant.invisible = true;
The drop out rates from programming courses suggest otherwise.
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.
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?
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.
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 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 (whom I otherwise deeply respect), I'll consider it a success. ;)
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.
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.
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.
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.
Real and non-artificial? Could it be?! :P
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.
That is incorrect.
Look at the programme of study for a chemical engineering undergraduate degree . It doesn't cover anywhere near the same content as an undergraduate chemistry degree .
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.
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.
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.
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.
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.
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.
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).
Obviously, there are also US-based companies with globally distributed remote workforce, but those are a minority.
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?
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.
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.
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.
Given, he works at a company with stack ranking so I guess that company is self-selecting for developers like him.
"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.
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.
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 :-)
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.
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.
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.
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.
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.
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 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.
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.
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.
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?
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.
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.
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.
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.
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.
I don't think the term white privilege is great, but it is a massive injustice that's IMO worth talking about.
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.
"One in ten Black males in their thirties is in prison or jail in the United States." That's insane.
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.
BTW how do you know that white and black people smoke weed at roughly the same rates?
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.
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.
That is working to destroy privilege.
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.
> 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 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).
> "...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.
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.
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.
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.
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, 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
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.
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.
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.
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.
> 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.
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!
> 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.
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.
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.
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.
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.
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?
> 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.
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.
>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?
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.
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.
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.
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.
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.
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?
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.
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.
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.
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.
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).
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.
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.
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.
Farmers are the most self-sufficient people you'll ever meet.
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.
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.
If I'm struggling to understand something that is so easy, maybe I'm just dumb.
No-one is arguing that certain groups have greater aptitude or learning ability for programming; they're arguing that certain individuals might differ.
There are thousands of developers making fractions of what their equally talented counterparts make in the US.
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 also be curious what the relative salaries are, e.g. food and shelter are usually much cheaper in foreign countries.
American exceptionalism and absolutely wrong.
I don't think this has to be American to be true.
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.
Should I assume that American code is usually low quality?
Oh, and also, both the previous paragraph and your comments in the thread are (edited:)nationalist. Not that it's not fun to use stereotypes and a few anecdotes to form an opinion, so don't mind me, just noting.
 Not sure if it's the correct word, I mean discrimination by ethnicity and nationality.
Nor do I think my nation is the greatest, and all the others suck. So I don't think it counts as nationalism.
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.
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.
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"?
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.
Yes. It usually is.
That is implied, from the comment you replied to. You may need to rephrase.
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.
Even if luxuries are not cheaper, food, shelter, healthcare etc. are, freeing up more monies.
Cheap offshore developed code is usually not the same quality. Pay people the same and it's amazing what you'll get.
I write a lot of it professionally.
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.
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.
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.
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.
Most people feel at least sheepish about their own success when faced with others, no less deserving, who experience failure.
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.
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.
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.
Bring on the downvotes, I don't give a shit.
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?)
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
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.
In the early 18th century, France started poaching British watchmakers, weavers and metalworkers; Britain responded by outlawing the emigration of skilled workers in 1719.
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.?
 - 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
 - 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
Couldn't you say the same thing about other professions?
The whole world uses operating systems, browsers and development tools made in western countries.
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.
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.
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.
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.
Don't discount your other abilities that much.
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.
Their profits come from economic coercion and exploiting public subsidies, not efficiency. Walmart's primary competitive innovation historically was union busting.
Does it? I don't know if I'd really agree with that.
Like it or not, the greedy evil capitalists are making the world a better place for all of us.
The enemy are not foreigners man, the enemy are the rich!