Is developer compensation becoming bimodal?
danluu.com
danluu.com
To use a non-software example, there are barriers to entry to chip manufacturers and power companies even under anarchy. Fabs are tremendously hard to build. Power plants are extremely hard to build. Building up knowledge and skills about computers is also very hard, especially when our genes don't seem to guide us toward thinking highly logically.
And programming is hard because it requires us to understand a bunch of modular systems and then the systems they're built on, all the way down, and in some cases, all the way up. Then, we have to understand the whole integrated system of the individual modules. Not all programming problems require this level of difficulty, but these problems do exist. I've been on teams where I'm the only one who understands what the OS is doing or the CPU is doing or what the network is doing or why some other distributed component might have stopped working. Most of my teammates in these cases seemed to enjoy programming, but didn't care to become overall experts in computers as a whole.
I once had a top-tier business school grad friend claim that programming really isn't that hard and that we're all whiners. He is a genuinely smart person. Today, he himself is trying to code in JavaScript on the client side. He's a friend so I help him, but the problems he has are junior-level or even entry-level. Suffice it to say, I haven't heard much more about how programmers are "whiners" when we say programming is hard.
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.
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.
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.
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
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 :)
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.
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
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.
Programmers have to remember a vast amount of domain knowledge. Consider the basic task of choosing where you are going to store some data, well first you need to know which options exist and there's dozens of them (do you want Postgres, SQLite, Redis, LevelDB, ..?). Then you need to know the strengths and weaknesses of each. And I hope you have been keeping your knowledge up-to-date because the answer in 2018 is very different to the answer in 2008.
The lack of barriers to entry actually makes it harder. There are "law schools" and "med schools" to teach you all the knowledge required to become a lawyer or a doctor. There is no "programming school", every programmer is self-taught. A computer science degree hardly scratches the surface.
While there are specialisms, such as game development or embedded development, most programmers are expected to be generalists. You may find yourself needing to write networking code, and there's a whole bunch of knowledge that goes along with that. Or, many programmers end up having a working knowledge of cryptography.
Sure, almost anybody can learn JavaScript or Python, and write code, but learning a programming language is only 1% of the job.
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.
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.
> The lack of barriers to entry actually makes it harder. There are "law schools" and "med schools" to teach you all the knowledge required to become a lawyer or a doctor. There is no "programming school", every programmer is self-taught. A computer science degree hardly scratches the surface.
+1024
I have said quite a few times that the best CS program is one where you learn how to learn without being spoon fed. In fact, I know a couple great programmers who were _not_ CS (one studied econ; the other, physics), and they similarly learned how to learn without being spoon fed.
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.
That said, it's often a great resource.
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.
And you're the reason why I have to mop up poor performance because someone decided to use MongoDB for highly-relational data.
[1] Well, not me in particular! I know the important things and only use SE for looking up trivial details, of course. But maybe not everyone agrees with me which is which...
I 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.
The reason is that software systems are at another level of complexity.
The Space Shuttle is often given as an example of the most complex machine every built, with more than 2.5 million parts. The Airbus A380 has about 4 million parts.
https://www.quora.com/Whats-the-most-complex-machine-ever-bu...
The Linux Kernel, not necessarily the most complex software ever written, has nearly 10 million lines of executable code, over 12 million with comments, scattered over 36,000+ files.
https://www.quora.com/How-many-lines-of-code-are-in-the-Linu...
Google's back-end cluster and services are frequently given as the most complex software existing.
The full LoC in Debian GNU/Linux has been estimated as 324 million as of 2009. This is the stable archive, which includes somewhere between about 30k to 70k individual software packages (I'd have to do some digging to see what the count was for the stable release as of 2009).
https://unix.stackexchange.com/questions/111281/exploding-am...
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...
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.
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.
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.
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.
> 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.
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.
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.
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.
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.
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. :)
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.
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 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.
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.
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.
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).
> 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.
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.
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.
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.)
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?
With that skill, you don't even always need to know how to write software programs. Sometimes, you're better off delegating specific tasks to humans.
When someone hands you a problem like "make this dead elephant disappear" other people will still be scratching their heads after the programmer has already figured out
while( elephant.mass > 0 )
{
eater.TakeABite( elephant );
}
And they think to themselves, "I can vanish an elephant in two lines." Everyone else is still thinking about the problem in terms of tons. The chewing and swallowing is a trivial implementation detail.(Meanwhile, some other programmer will be at the north pole wondering what happened to the elephant they left in Cairo.)
Some people simply aren't able to deal with problems they have not encountered before, that are too far beyond their domain of comfort. They can learn, but they don't innovate. As long as such people exist, they will have to pay other people to teach them how to cope with changes in their environment. Software engineers get paid well because a lot of them can effectively solve problems without needing to be domain experts in anything.
Here's O(1):
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.
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.
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[1] (whom I otherwise deeply respect), I'll consider it a success. ;)
Real and non-artificial? Could it be?! :P
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.
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.
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.
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?
Given, he works at a company with stack ranking so I guess that company is self-selecting for developers like him.
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.
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.
That is incorrect.
Look at the programme of study for a chemical engineering undergraduate degree [1]. It doesn't cover anywhere near the same content as an undergraduate chemistry degree [2].
[1]: http://www.imperial.ac.uk/study/ug/courses/chemical-engineer...
[2]: https://www.imperial.ac.uk/study/ug/courses/chemistry-depart...
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.
"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.
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.
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.
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.
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 :-)
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.
Allow me to take an alternative argument: Highly-driven students, especially those driven by money, became ChemEs to earn a lot of money and prestige. They looked up highest paying majors and chose ChemE for these reasons. I think it is now obvious SWE is very high paying and prestigious -- perhaps more so than ChemE -- so these highly-driven people switched. It had nothing to do with the topics intrinsically, but rather ChemE was largely perceived as the hardest/most-prestigious field and now SWE is.
I'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.
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).
Farmers are the most self-sufficient people you'll ever meet.
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.
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.
If I'm struggling to understand something that is so easy, maybe I'm just dumb.
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.
No-one is arguing that certain groups have greater aptitude or learning ability for programming; they're arguing that certain individuals might differ.
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.
There are thousands of developers making fractions of what their equally talented counterparts make in the US.
American exceptionalism and absolutely wrong.
Should I assume that American code is usually low quality?
Yes. It usually is.
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.
Oh, and also, both the previous paragraph and your comments in the thread are (edited:)nationalist[1]. Not that it's not fun to use stereotypes and a few anecdotes to form an opinion, so don't mind me, just noting.
[1] Not sure if it's the correct word, I mean discrimination by ethnicity and nationality.
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"?
That is implied, from the comment you replied to. You may need to rephrase.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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[1], which unfortunately I can't find the paper for, but the video is still worth watching. I'll quote an important bit:
>As a person's levels of wealth increase, their feelings of compassion and empathy go down, and their feelings of entitlement and deservingness...increases.
The crux of this is that while you may disagree, its possible, and even perhaps likely, that your success is less "yours" than you believe, and that your mind is rewriting history, so to speak, to make you feel more in control of your outcomes than you actually were. This is by no means your fault or anything, and there are probably good evolutionary reasons for our brains doing this (I say probably only because I'm not an evolutionary psychologist, I can make some pretty good arguments for why this would be evolutionarily good). And there are times when it's probably a good idea to ignore that fact and feel like you're to blame for your outcomes, but there are also times where it isn't.
In any case, I hope you understand that there's more to it than just fake-victimhood and an attempt to make successful people feel bad. And that while you may disagree with the theory, its at least not total SJW nonsense :P
[1]:https://www.ted.com/talks/paul_piff_does_money_make_you_mean
I 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!
and
> Take my advice, ignore your schoolwork and start selling drugs instead, you could become a millionaire, just look at [insert local gang leader or dealer]!
I could be wrong, but it really sounds like you're looking at your past through rose colored glasses. And as a result of this, you ascribe your success more to the "smart choices" you made than to the "lucky choices" or "lucky breaks" or "random opportunities" you got. I'd suggest you go out and look for people from similar backgrounds who made similar choices to you, I think you'll find it will be sobering how many of them didn't find success, despite the hard work, and that you're luckier than you think. Heck, I think if you really try and take an objective look, you'll find that some of the people who you feel like made worse choices than you were more similar to you thank you think, but didn't get the same lucky break.
Just in general, I think it's a good idea spending more time listening to unsuccessful people. It reminds me how they're not so different from me, and that's why I think privilege theory is both important and often correct. I hope you take the time to do that too.
Edit: I also think you're misunderstanding my use of the word bias in this context. I mean "evolutionarily hardwired to view things through a certain, objectively wrong, lens". See my earlier citations for how that reveals itself, but the result is that you, like everyone, are likely to take more credit for your achievements than you objectively deserve. This isn't unique to you, but it means that I basically have to take your entire description of your success and everyone else's failures with a grain of salt.
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.
>the naysayers.
What, specifically, am I doing that is naysaying? Is saying "your success is a product of both your hard work and your circumstances" naysaying? Really?
> 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.
Edit:
>I'm talking about the people with the capability to be successful.
Right, and I'm simply saying that the capability to be successful is not solely your innate intelligence or whatever, but also your in part your circumstances.
To give a simple example, which is more likely: that your children will get accepted into Harvard Law, or that Malia Obama's eventual children will?
This goes back to my early statement about school not teaching valuable skills. I told you I was a poor student, that was because I spent my time learning about computers instead of the curriculum I saw as wasteful of my time. You have to have the strength to make those types of decisions. Was it easy? Absolutely not, I paid all kinds of prices for doing such a thing. I stood by my convictions though, and thus have little sympathy for those who don't.
> You can't "work hard and study something of economic value" if you have to work two jobs to keep the lights on.
As mentioned above, if you're just starting to think about these things when you're old enough to work two jobs, you've already made bad decisions that are going to be very hard to reverse.
> 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 arguing with you (neither of us are convincing each other of anything at this point) because you literally told me that my life was invalid and my philosophy as defined by my experiences are due to my own cognitive bias. You have no idea who I am yet feel totally comfortable saying such a thing.
If you take anything away from this it should be that if you're going to tell someone that their life experience is invalid, you're not going to convince them of anything. In fact they'll just entrench their positions. I'd eliminate that from your rhetorical bag of tricks if I were you.
And with that I'm done. We both learned nothing, and I'm still convinced that the core of your message is routed in smugness. Maybe you'll have better luck if you avoid making assumptions about people you've never met.
I mean, I know people who were working multiple jobs in their early to mid teens. Are you suggesting that middle school is when you really need to be making choices about your career prospects? Its this kind of comment that really convinces me that you had a lot more "privilege" than you want to admit. A roof over your head, a stable home, and access to technology and resources are privileges that you appear to have had, and are not as universal as you seem to believe.
>my life was invalid
What does this mean? I'm absolutely willing to say that its inane to base your entire moral philosophy on a single person's experience. But that doesn't mean that your life or experiences are invalid, just that generalizing them to everyone is ridiculous. That's the entire point though not everyone's circumstances are the same as yours. That's the whole central point of what privilege is about. That doesn't make your life "invalid", again, I don't know what that means. Its real, I'm sure it happened. It worked for you. That's great. That doesn't make it generalizable. But you seem to once again be misinterpreting my statements that your experiences are not generalizable as your experiences not being real. That's completely untrue, and I don't know why you feel the need to so completely misinterpret my words.
I'm not making any assumptions about you beyond that you are a human being, a human being who suffers from the same cognitive biases as every other human being. In the absence of any compelling evidence to the contrary, that absolutely seems like a sane assumption to make.
In a situation where not being exposed to massive dangers and obstacles is a rare occasion, I think it is fair to classify that as a privilege.
White / wealthy / male / educated / citizen of the US, all indicate the top parts of pyramids of oppression and massive obstacles.
The blind acceptance of these structures by the ones standing on top of them, is the actionable part. We (I am definitely amongst the privileged) can’t easily see the nature of the structures, the way we don’t choke on clean air.
But once we’re aware of them, our responsibility kicks in. Not taking actions to actively challenge these structures makes us complicit and defines where we stand.
The anger of the ones living life on “extra hard” so that we can live ours on “quite/super easy” or even “normal”, is fully justified. We are passive perpetrators, there’s no way around it.
Very uncomfortable.
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.
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?
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.
Most people feel at least sheepish about their own success when faced with others, no less deserving, who experience failure.
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.
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.
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
http://www.politifact.com/truth-o-meter/statements/2016/sep/...
https://fairus.org/issue/publications-resources/fiscal-burde...
Bring on the downvotes, I don't give a shit.
You're the one reversing cause and effect. As though I should feel proud and deserving that my ancestors (who, mind, I had nothing to do with) worked hard, got lucky, and gifted me remarkable advantages.
The whole world uses operating systems, browsers and development tools made in western countries.
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.
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.
Couldn't you say the same thing about other professions?
The enemy are not foreigners man, the enemy are the rich!
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.
I find this quote confusing. Historically, the poaching of highly-skilled foreigners has been an important step in developing mere import substitutions into products which can be competitive on a global scale.
The Tudor government (Henry VII-Elizabeth I) kicked off its finished-wool-import-substitution program by poaching skilled weavers and machinists from the low countries (e.g. Flanders, Holland, France). Then, as the export of finished wool goods grew, so did restrictions on the exportation of raw materials and the importation of finished wool. Nearly 100 years later, England had the ability to drive European countries to famine by simply banning the export of raw wool.[0]
In the early 18th century, France started poaching British watchmakers, weavers and metalworkers; Britain responded by outlawing the emigration of skilled workers in 1719.[1]
With that context, I find it odd to hear that U.S. immigration policy has started to work in opposition to the what I believe is the largest benefit of immigration. What incentive is there to keep highly skilled workers, along with their advanced knowledge, out of the U.S.?
[0] - Chang, Ha-Joon. Bad Samaritans: The Myth of Free Trade and the Secret History of Capitalism. New York, NY: Bloomsbury Press, 2008. Print. pg. 40-42
[1] - Chang, Ha-Joon. Bad Samaritans: The Myth of Free Trade and the Secret History of Capitalism. New York, NY: Bloomsbury Press, 2008. Print. pg. 129
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.
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.
Don't discount your other abilities that much.
If software can automate, reduce inefficiencies and generally be the means to accomplish the business goal, then it makes sense for the business side to invest heavily into what is essentially a competitive differentiator.
The bimodal compensation reflects a growing split between software activities that are seen as an necessary operational burden, and those which are the "secret sauce" of the business. That's why fintech has traditionally been the highest paying field, as the return on investment is the most obvious for them.
Edit: typo (thanks tzahola!)
Of course, salaries are largely determined by the industry one is in. If you can position yourself at a place in the economy that attracts large amounts of money (per person) then you will be able to siphon off a relatively large amount for yourself.
As software embeds itself in everything we do, developer earning potential will reflect the industry one is in.
High tech firms like Apple and Google make huge amounts of money per employee, so people that work for them make huge amounts of money too. Not just software developers, but also people in sales and strategy, etc. Same for people in finance.
Google, Facebook, Amazon, and whatever other big name you want to throw in the pot, are competing for developers. However, they are not competing for the same developers as Epic Systems, for example. FAANG (or whatever) are competing for a highly skilled subset of devs that can meet their demanding hiring criteria. Similarly, top law firms are only competing for a subset of all law grads -- those that meet their demanding hiring criteria.
The difference here is that, in law, that criteria is focused around a prestigious degree. Presumably, this is because it is hard to thoroughly test a lawyer's competency as a lawyer in an interview setting. However, in programming, many top companies, apparently, find that a series of intense whiteboard interviews are sufficient to determine whether or not a dev meets their high standard.
However, we also have a shortage of devs across the board, for all companies. If CS enrollment increased by 100%, then presumably the "lower" distribution of salaries would stabilize at a lower number -- probably close to what traditional engineers make nowadays. However, the salaries of the GooBooks of the world will only be affected if a sufficiently high proportion of those grads can meet a very difficult hiring criteria.
Similarly, law schools have seen a dramatic increase in enrollment over the past few decades. Lower salaries have stabilized, since the market is now saturated. However, the salaries for top law firms remain high, because a similarly low number of candidates meet their difficult hiring criteria: Harvard, Yale, and etc. are producing more or less the same number of law grads as before, with respect to demand.
This is why Google can open an office across the street from Epic and yet still pay devs twice as much. This is also why I don't think immigration is a huge factor. Sure, if companies were able to immigrate significantly more workers, then salaries at top companies might drop to a degree. But the real drop would be seen in the salaries of devs at typical companies.
EDIT: grammar
But they all have to pay the same because it's a signal to their clients that they are the best. If they paid less than their clients would consider their firm second tier not top tier.
And Google is hiring the same devs as everyone else. Having worked in a large company and seeing several people move to Google. They got some smart devs who stood out on their team, but they also got mediocre devs. The average dev they poached was definitely better than the average dev who worked there but it was a moderate difference in degree not kind.
You could also argue that maybe Facebook doesn't need devs to be able to independently produce Tarjan's algorithm while standing on their heads, blindfolded. But for some reason, these companies believe that it is essential. Maybe that's well-founded -- maybe not. But it remains the case.
Point being, there are probably lots of factors that combine to make a candidate skilled enough to get hired at Facemazon. It's just that having that combination of skills is rare, so the salary gap persists.
However, I do have to point out that it seems that Epic is trying to become more competitive with regard to that same subset of engineers that Google hires. Presumably, if they're trying to become more competitive, then they're not yet competitive. Either Epic will have to pay some engineers the same as what Google pays (including equity etc.) or they won't remain competitive for that small pool of devs.
Also, worth noting that I'm saying that as someone that was once rejected by Google on a first-round phone screen.
At that time, they were not offering salaries that were even competitive with other companies in Madison. Never mind about Seattle or SV. I had four managers in 2.25 years, because three of them left for higher pay elsewhere almost as soon as they got promoted. I left the fourth for ~20% higher pay.
I would guess that any major tech employer could stroll into town and hire the best 50% from under Epic's feet in less than two weeks, while still saving money on salaries compared to SV. Queen Judy is not taking that company public, and would rather divert her profits to charity than to employees. There won't be options or RSUs. The only reason people might stick around is the cult-like atmosphere.
It might be the case that salaries won't become truly bimodal. It seems like there might be "tiers" of compensation which are based on levels of competition between similar companies. SV startups tend to pay less than Google or FB, but their compensation packages are typically within the same ballpark of each other. Perhaps the bimodality is most notable for new grads, since they typically don't get hired at mid/small companies.
Is this not the lump of labor fallacy?
Chemical/electrical/mechanical engineers can't use their field to automate their field. Doctors and lawyers are almost exclusively service jobs, unlike the manufacturing nature of engineering.
Automation is a force multiplier, and software engineering benefits from being able to create automation, apply automation to others, as well as being able to apply automation to itself.
I think you misunderstood the O-ring explanation by citing that idea as an example. It doesn't mean building AI. It applies to any of those fields you mentioned. Good people in field X work together with other good people in field X in top firms -> multiplicative productivity.
Package managers, that used to be hard to do by hand.
Bundlers and linkers, that stuff used to need skilled engineers.
Many other examples
A mechanical engineer designing a new manufacturing technique or robot is most certainly using their field to automate their field. Most of computing exists because electronic engineers used their field to automate their field. Software is not unique in this respect.
Right, but let's be clear about our terminology here. Automation in mechanical/manufacturing isn't being done by CS grads with skills in RoR employed as software developers. It's being done by MechEng graduates armed with FORTRAN compilers who write a lot of code but don't consider themselves to be developers at all.
How different is a MechEng writing FORTRAN for mechanical engineering from a MechEng writing RoR for trendy widget bean button SV startup?
I'd argue they're both programming, which is sufficient to reap some of the benefits of automation. Software engineering can be described as applying engineering to programming. Any company that benefits from programming would also benefit from the increases in efficiency, reliability, performance, etc. software engineering would bring to programming.
Because in scenario A the main skill being applied is mechanical engineering and in scenario B the main skill being applied is RoR.
If everyone who ever writes a line of code is a "software developer" would you include an Excel VBA 10-liner writer? Probably not, and nor would that person include themselves, they're an accountant (or whatever).
I think of work like FFTW and the Tensor Algebra COmpiler (TACO) as software engineering.
Mechanical engineering didn't have its Lisp. We do.
The steam engine was more of a productivity multiplier than Lisp could ever dream of.
Tool A should modify itself to become Tool B. And Tool B should modify itself to become Tool C and so on...
Most dedicated software engineers exist because this new basic skill hasn’t yet gained widespread adoption as a basic skill in other disciplines. But with time it will, and the number of dedicated software engineers required will decline.
You can create basic good looking iOS or web or android app without all those years and be extremely useful. Many jobs and positions don't require years of study with mentors. Many self taught programmers started like that.
You can do basic data analytics and write selects without years or study too.
There is huge amount of positions that don't require years of study.
We obviously have differing definitions of the word 'useful'.
All of the company's ads (thousands of different line items at any given time) had been entered by hand in to Dart. Things like "make every add weight-based-bulk with weight 100", etc.
I wrote a craptacular Java app using Swing and the Dart API to get a handle on them. I mean - this thing was AWFUL. "Paste your username and password in to this box and type the name of the site you want to work with in that box and click something in this row of 14 buttons" level stuff. They used it to fix their waterfall.
The first month it was an extra 80 grand or so in revenue. The next month I had a new job.
This is based on what I learned in a few months of tinkering as a kid, and a few months of a Java course at Ohlone College in the east bay.
Perhaps you can provide your own, more helpful, definition of useful? Most of what's "useful" is taking something that was a pile of godawful spreadsheets and making it manageable; not something meant for consumers.
An application, in my mind, is truly useful when it not only fulfils a user requirement, but is also dependable, scaleable and maintainable. It's not best practice for a business to base a process around some jury rigged POS that will be thrown away in horror when an experienced developer eventually gets a look at it.
But hey, we can agree to differ on this.
It is ok to throw away things and not everything needs to be scalable.
It is also not best practice to base everything on the idea that everybody must be experienced senior to do anything. Many tasks are suitable for inexperienced juniors, because that is enough and it is small enough to throw it away if it goes bad.
The things that were most useful for people I worked for were not the things that were most difficult to create.
"It's not best practice for a business to base a process around some jury rigged POS "
I suspect you'll find plenty of businesses jury-rig a POS first, and then only fix what needs fixing. Turns out most stuff doesn't need it.
I think programming is on the same trajectory. We might not even recognize many of the tools as “programming” (they might look more like spreadsheets). But I think general up take of programming skill will increase.
So you're contending that few people can fluently read or write their own native language?
Similarly I’m suggesting software engineering will be part of many people’s professional work, but will be the sole professional work of few.
This is absolutely untrue.
There are many many jobs that are effective people doing data analysis in excel spreadsheets.
The people doing this data analysis by hand can greatly improve their ability to do their jobs through simple things like learning how excel macros work. This is programming!
There are tons of low handing fruit in the world, where basic tasks that are being done by hand, could easily be automated by the people doing it, through very simple, easy, "toy" solutions.
The stagnant bog of billing hours to captive (e.g. internal) customers for example does not lend itself very well to a toolmaking microsingularity. Bimodality of pay is at least as much about the task as it about the one one executing.
There is of course still a lot of correlation between ability and high value positions, but that's a natural consequence of matchmaking: both high value positions and high value developers get disproportional choice relative to their lesser peers.
I would love to hear an economist explain why this might or might not lead to higher salaries. My hypothesis is there is an element of human nature: if you're rolling in cash you don't have to be stingy.
If profit per "average" developer is $1 million, then the company is way better off paying $100k extra (i.e. double) to get developers that are 20% more productive than the average - and if the company doesn't do that, then their best people get poached by companies who do.
And while it is impossible to hire the mythical "10x developer", it is not all that hard to find the "1.2x developers" if you are willing to pay double to get them...
Law firms aren't allowed to form C corps, which limits their size and would keep them off that list. I would expect top law firms to be in those ranges in for profit per employee, but they're much smaller so it isn't a fair comparison.
2 of the top 6 in that list are in medicine.
Which is a lot, but not as much when considering that most law grads have mountains of debt plus the opportunity cost of not being the workforce for 3 years. Plus they average 55+ hours per week. And usually cannot work from home.
You're better off doing CS undergrad and working for a Big 10. The hours are on average and can be flexible if you're an efficient worker.
But yes. The debt burden is incredible. I am nine years out of school and - albeit primarily due to working in the public sector - I still have six figures in federal student loan debt. And 55 hours/week is on the low end. Most firms require around 2100 billable hours. If you figure 50 weeks worth of working days, that's 42 hours of real, substantive work per week, which you have to account for in six-minute increments, plus all of your normal basic admin and staff meeting nonsense. During busy times, we were told to aim for as much as 300 hours/month.
There's a reason burnout is so high among lawyers at large firms.
I also think that the software "productivity" is in fact "multiplicative". That is, more software written means more complexity which takes more SW engineers to maintain. I actually think that there might be too much software. This is similar to lawyers, who can generate more work for other lawyers (supply generates its own demand). Weapons also have this property.
That's been the case for at least a century. A lot of people at the coasts with few in the middle.
I am always surprised at the salaries in the USA. I have two bachelor degrees and two master degrees from two well established universities, and earn about 2k euro a month (before 20% tax deduction), which is considered fairly decent for a starter. Even then, many corporations outsource software development to Eastern-European countries.
Collecting that data and adjusting for the fact that contractors have to deal with more taxes and insurance, but less restrictions about vacations, seems impossible.
Thankfully 80 EUR/h is not the upper limit if you can cut out the middleman. Speaking of which, I've heard third-hand horror stories of Polish SAP contractors where the middleman(!) made 65 EUR/h, which was probably more than half of the client paid - ouch.
That's what the person at the (un)employment office said once to me. If you know how to count, count on yourself because most of the insurance contributions simply fall into a black hole.
It's hard to imagine today, but it sure did happen.
Unemployment benefits, as I know, are temporary. You'll face the real-world in 2-3 years when it ends.
Just enough to catch up with nuances between different Angular versions and experiment with all cool newest React stacks... or screw it... pulls out a manual on constructing beehives.
Yup, I know some guys contracting in Germany at 100 EUR/h. I myself received an offer (not in Germany, but in neighbouring country) at 120 EUR/h. The EU contracting market looks pretty healthy to me.
On the other hand, I spent a huge amount of time and effort on my eduation. While I could not do this without financial support from my parents, I also made a lot of sacrifices, and I am a little bit bitter that friends who dropped out as undergraduate make more than I do. Makes you wonder why anybody would like to work in IT at all.
IIRC taxes are slightly lower in Germany too. After putting the maximum amount into a 401(k) (self funded, pre-tax retirement) and paying taxes, I took home around $3500 per month, excluding bonuses.
I have multiple degrees from US schools and zero debt.
Also, most public schools will not hire teachers without a 4-year degree, so saying that those going into low-earning fields like teaching ought-not get a degree is questionable at best.
Hiring credentials is an arms race, so if everyone else is getting a degree you're going to have a bad time if you don't -- even for fiends in which no degree is logically required.
1: http://www.admissions.purdue.edu/costsandfinaid/tuitionfees....
Also: What's mentioned here: https://thehftguy.com/2017/01/23/career-advice-and-salary-ne...
Consider how basecamp works for example
https://m.signalvnoise.com/how-we-pay-people-at-basecamp-f1d...
What does that have to do with what you should be paid?
My degree has provided a small and consistent boost over my career. It didn't make me significantly more valuable as a new starter.
I think Western Europe has a harmful fixation on a persons credentials.
In the time it took you to gain four degrees an American dev could have gained 6-8 years of experience and be operating as a senior.
I would expect that my effort would have at least some positive effect on my starter's income.
> I think Western Europe has a harmful fixation on a persons credentials.
I think so too. At my work I am doing similar stuff as when I started programming at 12. The main difference is that I had significantly more enthusiasm and energy back then.
I did learn a lot during my study, but it is absolutely not required for most of the jobs. Yet, it is required to have at least an undergraduate degree for practically all jobs. There are lots of improvements possible to this system if you ask me.
The only employers (USA) that I’ve seen even care about or ask about degrees are the ones that practice “alumni nepotism” (we only hire Stanford grads, etc.). Nobody else gives a crap.
> At my work I am doing similar stuff as when I started programming at 12
Given the second comment I'm surprised that you have that expectation and I think it's heavily influenced by your culture.
In the states we don't care about effort at all. We care about outcome.
I think this leads to a huge number of efficiency gains.
The first category knows exactly what they're worth and they'll push to get that worth. They know that if their current company won't pay that, they'll easily find another company that will. They end up switching jobs relatively frequently and get a raise each time.
On the flip side, you have the people that simply don't pursue higher salaries. They tend to get a job and stick with it for a long time. They'll take the 2 to 3% COL adjustments and an occasional promotions, but typically they'll stay with a company for years. While they certainly could find a better paying position, they won't. Perhaps because they like the lifestyle, the type of work, or even unaware that other companies are paying significantly better.
Many mid/small corps are paying ~75-120k base with x stock which is of course not worth anything yet.
Most large competitive firms are paying more around 115-150 with 15-75 in stock.
So an explicit divide between the mid/small companies and the large tech giants exists here.
I have two ideas:
1. Lots of technically able people still don’t enjoy plugging their mind into a machine. Its probably hard to believe in the HN community but many people don’t enjoy the work, I’ve met a few. Maybe its too abstract or boring, its a mystery to me.
2. What multiple is the market putting on the ‘tech industry’ vs semiconductors or mineral extraction? We can actually look that up. AMZN 220; MSFT 69; FB 33; SOXX 4.7; XOM 25. Investors are paying more to fund the work of programmers than most other industries.
Large compensations enjoyed by engineers in the AMZN, FB, or MSFT is not derived from "investors paying more to fund their work", as these companies haven't been dependent on investors' capital in a long time.
Anecdote: I worked on a team where gross revenues per FT software engineer were north of $4 million USD.
I don't like, however, my work as a programmer. The tasks are just too mundane. I spend multiple days on a RESTful CRUD controller, just because there are so many (IMO useless and even obfuscating) layers of abstraction. The only challenging aspect is the lack of conventions and documentation.
The fact that you are spending multiple days, rather than hours, building a controller hints to me that you haven't really mastered that work. Perhaps the task might feel less mundane if you developed a tool/framework to simplify the task itself.
Let me elaborate on what it took me to implement a CRUD controller.
I had to implement a repository interface, a respository a context, a service interface, and a controller. Then I had to understand how to write the swagger documentation. Then there is a convention of wrapping every result and exception in some kind of wrapper, which is not documented so I had to figure this out from looking at other controllers.
Then I saw a execution path for another CRUD controller which could throw an error which was not in this wrapper, so I had to discuss this with someone from the team. Sure enough, he is in another country, and takes a while to respond. I was lucky it was still morning, or he would have gone home already (there's a 4 hour time difference). Sure enough, this was a bug in the other controller.
Then, there is a logging and a monitoring service I had to understand and implement. Undocumented, of course. The controller I used as a reference was inconsistent in monitoring, so I had to discuss this. Then, the requirements for the controller are not clear. The RESTful way of responding to a GET request for a nonexisting resource would be a 404, but the wrapper does not allow this. The reference controller returns 200 OK, but with a null value. So I had to check if this is indeed what's intended.
Then I had to figure out how the unit testing framework works and I had to write tests for each method. OK, good practice, but it feels a bit weird, since the unit tests should not use the database while the entire purpose of the CRUD controller is to use the database. So much of the logic I'm supposed to test is mocked. So, I had to learn how the mocking framework works. Then I wanted to write unit tests for the repository, but entity framework crashes when I use an in-memory database. The other developers had a look, but didn't understand this either. The other repository implementations are not tested anyway, so I skipped this.
Additionally, visual studio crashed, corrupted my git repository, and I ended up deleting and cloning the whole repo again. Then, I had to configure the project again before it would build, which involves opening the project in an older version of visual studio, then opening the same project in the latest version (some errors magically disappear), and adjusting the IIS settings (which are a mystery to me).
I also had a long meeting to attend, and the person who's supposed to get me started didn't have time to help me. In the end, I'm still not quite happy with the actual logic in the controller (it has inconsistencies similar to the controller I used as a reference), but I refuse to spend more time on it.
About the documentation, maybe you’re the one to take initiative and spin up a wiki? Maybe you’re the person that consolidates logging into a reusable internal library?
Related to the topic, maybe this is not what you should be doing. There is good work out there, but as cliche as it sounds, you have to show passion for them to find you.
But it does also sound like there are some problematic inefficiencies in the way your company's software stack is set up. Common tasks like logging, caching and error handling should be abstracted away to a separate layer so that you get it for free whenever you implement a new service or endpoint. Don't know if this is old news to you, but check out e.g. [1].
This part about abstracting away rote work and optimizing a stack to be less maintenance-heavy is a learnable skill. The problematic part is that your working environment needs to have it in its culture. It needs to be okay for staff to spend a week here and there tuning a process that's used again and again. This is a big force multiplier which needs to be appreciated by management.
I'm in an online banking company with an 18-year history and all the cruft that entails, and we're in aggregate spending multiple full-time positions continually upgrading our infrastructure and practices. Releases used to be one-week affairs that were performed twice a year. Now they're done in half an hour, most of which is verification and monitoring. Etc, etc.
[1]: https://msdn.microsoft.com/en-us/library/dn223671(v=pandp.30...
There's always been some push-back against over-abstraction, from Rails' "FU Java" spirit to the whole Go ecosystem. It's just that these jobs are much harder to find than the typical Java EE hellscape.
And the market is severely hit driven, so you could be working 6 months to 2+ years on a project only to see it land like a thud in the marketplace, possibly due to nothing more than a couple reviewers that clearly barely played your game before writing a scathing review, or you just picked a bad week and get completely overshadowed by other games.
I worked on 7 games for three different companies, and all of those games failed to find and retain an audience, for various reasons. You spend 4 years of your life working on projects that may as well not have existed, except for your own personal development, and the industry starts to look less appealing.
I'm working on software I have much less passion for right now, outside of the game industry, but at least it gets used on a daily basis by thousands of people (not always, I've worked on projects that have gotten binned because clients have backed out or contracts never got signed, or the lead developer quit and the manager decided to outsource the project, in this industry as well). And at least I'm getting paid quite a bit more than I would in the game industry.
Well, don't forget the challenge of coming up with new, creative answers to why isn't it done yet and why aren't you working faster and what do you mean "reading the documentation", just program, that's what you're paid to do!
I think for a while you pretend to yourself it's going to get better, then it never does. Code is a always messy, confusing, etc. There's never time to really fix it.
Switching every 2 years helps you pretend that's not the case, at the new place it'll be better and you'll definitely have an impact on this code base this time.
The real money appears to be in people management which is tougher to break into.
It will depend on the company/team/* of course, but don't think that because your manager isn't visibly grinding through programming tasks that she/he isn't just as intellectually competent or taxed as you. You may just not be mature-enough in the industry to see it yet.
Those things don't bother me - to me that's the fun of it (well, ok, not the shitty APIs, but the uncertainty and the whole constant exploration and discovery aspect of this profession). What does bother me is the expectation that I ought to be able to predict down to the hour how long something should take - even by people who ought to know that I'm dealing with so many poorly written libraries, unpredictable bugs and shitty APIs as to make that impossible.
When I was in Germany, mechanical and electrical engineers were typically making more than me. Same reason.
A few american software companies are making over a million yearly per developer. 200k for a new grad is nothing to them.
You're right that investors probably spend more to fund the work of programmers in VC backed startups, but nobody forces them. They could simply start investing in more companies outside tech hubs (or even outside the country).
Most of us are working shlubs making a fraction of what A-list companies pay. Among us on the B-team are some (but certainly not all) very talented engineers.
What drives the demand for engineers isn't the number of things sold, but rather the number of kinds of that thing. The variety of chips is still growing, but not proportionate to chips sold, because the numbers are mostly coming from the handful of chips used in servers and mobile devices.
> What is it about some software companies that make a similar amount of money that prevents them from funneling virtually all of the wealth they generate up to the top?
We don't have a union, so the only way a company can be punished for low compensation is if developers leave for higher-compensation companies. Salaries in the games industry are much lower for longer hours, because developers are unwilling to leave the industry to go work on something boring. I don't know the specific case with Epic Systems, but if their employees are older (have families) they might be less willing to relocate. I also know (being from there) that people from Wisconsin have a specific aversion to leaving the state, and it could be that Epic is exploiting that fact.
> What drives the demand for engineers isn't the number of things sold, but rather the number of kinds of that thing. The variety of chips is still growing, but not proportionate to chips sold, because the numbers are mostly coming from the handful of chips used in servers and mobile devices.
This. What matters here is not ubiquitousness of software, but rather it's bespoke nature. Every major corporation is employing thousands of developers (either in house or via some outsourcing arrangement) to write and maintain software according to the company's unique needs. This is the most important driver of demand for developers, and what differentiates us from other technical fields.
Most people I know in IT industry understand this deeply even if not talk openly that their 1/4-1/2 of Google pay is decent case scenario. It is also reinforced by the fact average salary for software engineer in valley is about $120K and not $500K + unlimited meals, bus rides and what not.
People here are select bunch and talk about 500K pay so often, it starts to look common when clearly it is not.
So, US operating as a country (an entity with citizens, which it prioritizes other foreigners) rather than some arbitrary free-for-all geographical space?
Really great comp science or engineering students won’t ever have a problem, but I fully expect the short-length, autodidact or mediocre students to be entering a saturated market within the next five years.
The last position I put up for a regular .net, jboss and sharepoint position had over 300 applicants, several vastly overqualified.
I work in the public sector, so it’s not exactly because we offer what most developers consider “dream positions” and we certainly don’t offer a good salary.
Interesting how this contrasts with the widely-held perception that there is a programmer shortage.
Readers who just deleted emacs in despair should keep in mind that parent is hiring for Danish government position, not exactly the hotbed of software development or skills demand.
However, those of us living outside that handful of cities have a totally different experience, regardless of how good we are or how much experience we have. There just are far, far fewer jobs outside that handful of American cities.
And many of us are unable to just up and move due to a personal situation (sick relative, illness, spouse's job, etc.). It's just worth bearing in mind that your experience as a developer is somewhat the exception in the US, not the rule. At best, it's a 50/50 split between devs in the cities I mentioned above and the rest of us.
That is the dirty little secret of our industry. You need to do your day job AND on your own time, keep your skills up to date, and/or work on open source and/or write a blog or something. There was a post on there the other day on how keeping up to date with k8s is a full-time job in and of itself, well you need to do that - and a bunch of others - in your free time, in the full knowledge that what's hot today might turn out to be worthless in a year or two.
People on the outside, even those aspiring to get in, I don't think fully realize the commitment of those making the headline salaries in this field. Just as you won't make it as a banker unless you LOVE making deals, so much that you'd even do it for free...
It's the expectation that you need to demonstrate it at all, is the problem. How many lawyers sue people for fun so they can blog about it, how many doctors do surgery at home and stream "live cutting"?
We have created a treadmill that we can't step off
"software developer," as a label, doesn't signal that kind of credentialing (although something like advanced degree might), so our labor to differentiate ourselves goes elsewhere. i don't want to imply that this isn't a problem for our profession, but the amount of "wow we software engineers have it so difficult" sentiment in this thread seems high
A degree from a well-known school and a few years at one or more prestigious companies is an equivalent. Let's imagine a hypothetical developer who graduated from MIT then spent 3 years at Google. He or she would be as "credentialled" in the sense of the piece of paper opening doors as someone who'd gone the law school route and passed the Bar. That person will pass every resume-screen and get invited to an interview for the rest of their careers with just those two names listed.
Not just that! Don't forget about attending a dozen conferences a year, doing talks, and local meetups.
You don't really need any of that.
Ultimately, you just need to pass the interview.
Sure conferences and tech talks might help give your resume some more visibility and likeliness of getting hired. Similar to having a couple toy projects, but many top tier companies adhere to a set of standards in their hiring process where they won't let you bypass their DS&A interview because you gave a tech talk.
I would definitely advice people to learn programming, but not necessarily to aim to become programmers.
What I found really interesting was going one step further and using programming to solve "higher order" problems, such as data science or artificial intelligence related problems. I'm not talking about implementing something in Tensorflow. That again is just programming. I'm talking about implementing something in Tensorflow to solve a specific problem and seeing the result of that. The programming part is beside the point, it is a means to an end.
I think you really need to dig deep and ask yourself why you are writing code at all. The act of writing software itself is not that intellectually stimulating once you've mastered it well enough. It is just one layer of abstraction. Think about what is the next layer of abstraction you can build on top of your programming layer.
That cuts against every labor demand projection.
Frankly, even mediocre programming jobs are a great option for most people. The lower mode is still much more than most entry-level jobs pay.
I'm glad I did not treat it seriously.
Also, consider what kinds of firms hire these professionals. For almost all professions, there are firms that do what the profession is called. There are accountancy firms that do specialist account. There are law firms that do specialist law. And there are software firms that make software ordinary firms don't make. But then there are also firms that happen to have a lawyer, and accountant, and a software developer. They might be some industry firm like a widget manufacturer. In these firms, the professional is not quite the most important resource. Sure, you need some, but you don't think of widget factory as requiring the top professionals. Often you'll hear the firm considered as a sort of lifestyle choice: less stressful than the law/accountancy/software house. And of course if you need specialist help you'll know which external firm to get it from.
Does this actually happen? My understanding is that skill supply is simply not elastic in this way. Kids generally pick what to do based on their aptitude and what they like to do, remuneration is a distant secondary concern. Changing careers is something people only do when they absolutely have to.
It appears altogether clear to me that supply and demand explains programming compensation perfectly, and that these dynamics aren't going to go away any time soon, for the same reason doctor and lawyer compensation stays healthy, lawyers less so.
This has likely steered some students who otherwise might have found a niche in other fields to try out coding and choose it as a career (out of both satisfaction and salary prospects).
My thoughts exactly. Demand for programming is growing faster than the supply of programmers. Not only is demand growing because ever more devices demand an ever-growing amount of software, but also because every already existing line of code in production needs somebody to keep it from falling over. This compounding effect further escalates demand.
Right. You see this in 1st year CS major attrition rates and programming related MOOC completion rates.
If one factors out the major tech hubs and only look at e.g. any random city, is the bimodality there too?
I'm sure you'd see the same pattern if you looked at finance grads. The top ones who went to work for investment banks, hedge funds, etc. are pulling down large salaries, the rest are making much less working for small to medium size companies.
Though some industries (advertising publishing marketing) that formerly did not have to consider on technical excellence and where used to relaying of cheap Oxbridge liberal arts students with a 1st seem to want to pay temp technical roles at straight time instead of the real contractor day rate.
Source (in French): http://bfmbusiness.bfmtv.com/emploi/metiers-du-numerique-les...
£130K feels like quite a lot of money to me.
I can write some software publish it and in a matter of months have it improving the lives of hundreds of millions of people.
Engineering aptitude is rare, or at least we haven't learned how to mass produce high end engineering aptitude. It's hard to argue that any other domain of engineering has anywhere near the kind of leverage that software does.
Automation has also radically improved the effectiveness of top software performers. Even a one man 'team' with a moderate level of skill can have pretty comprehensive set of automated tests. There is design automation in other engineering fields, of course, but it's especially potent for software because the automation can capture basically everything and because software engineering is also the skill needed to improve the automation itself.
Some of the bimodality may be due to binning what really is functionally separate fields under one name. I've known people who were great at wiring up prefabricated functions to build UIs and simple processes, but wouldn't have constructed a novel datastructure if their lives depended on it. It's hard to draw bright lines because there is a bit of continuum and people grow and change... but there seem to be some pretty distinct categories out there.
- You do a job that is, in many cases, a company itself. Lawyers, doctors, and developers can all start independent operations since the product of their work, or the service they provide, is monetizable in and of itself.
- There is a very significant skill gap, often driven by enthusiasm at least as much as intelligence, that people rarely transition between.
Compare these fields against something like electrical engineering. There the skill itself is generally a part of a product, rather than a marketable skill in and of itself making independent work difficult. And I don't know that many electrical engineers, but I'm unsure how big of a skill gap there is and, more importantly, what percent of engineers manage to transition upwards in it. If one electrical engineer is, more or less, the same as another - then you're going to see that reflected in income distributions which I would expect look more bell curvy weighted mostly by just years of experience.
Honestly I think its more down to experience.
I know relatively inexperienced developers chasing every new tech on the hype train. And I know others that have been around a while and recognise the new tech as a rehash of something from 20 years ago, with some new marketing.
(To be fair I think you need some enthusiasm as well as the experience otherwise you get the "1 year of experience ten times" developers).
There are effectively two markets now. People don't expect to carry their compensation packages from one side of that fence to the other. I should know, since I made such a transition myself within the past year. In terms of effect on personal income, it's not that different than changing careers.
Also most foreign programmers actually already have to pay a fortune (many via their rich parents) to study in the US in the first place before they get the OPT/visa, so they already came from rich families and it's a kind of like the situation with lawyers/consultants/financiers where such an elitist circle gets elitist pay as well.
In the end, it all comes down to: why are these people, who could do it, not moving from the Netherlands to the UK or US?
They are probably 'comfortable' in the Netherlands, whatever that means.
This is true. I was a mechanical engineer professionally. I moved into software engineering, and the increase in compensation was a dominant factor. I know several other non-CS engineers that have made the same move. While it's not driving down compensation per-say, the difference in demand between disciplines is startling.
Visual aesthetic not so much but UX is amazing. I definitely want to read more sites like this focused on simplicity of the content.
The best are the US, Denmark, Israel.
Germany has a higher median income than the UK, but the UK pays better in programming. Sweden's median income is quite a bit higher than both Germany and the UK, but Germany and the UK pay close to what Sweden does.
Canada is at half the rate of the US, drastically below where it should be based on median incomes.
The worst is France by a wide margin. The average software engineer salary there is around $38,000. Almost one third that of the US.
Switzerland pays very high (still below the US), but their median income is extremely high.
New Zealand has a considerably lower median income these days versus Australia, but only pays about 15% less for programmers than what Australia does.
(Results are quite different to yours, but this data is 4 yrs old)
Seems to be the fatal flaw in the article.
~/s
1) Inflation. My starting salary out of college many years ago was $35K. Today's starting salaries are double that. Double in less than 20 years. A $50K salary in the early 1980s is equivalent to $120K today, not controlling for geographic location--HCOL areas are actually far worse than that. Let that sink in as you plan for retirement. My take is that you are never going to save enough for retirement because inflation is insidious and never sleeps.
2) The mythology of the higher salary range. How do developers get past that second mode? They start their own company! Only a few rarified corporate people and independent consultants can pull down pay in the 200s. Again, I'm not thinking about SV where the pay is so skewed due to the HCOL. So everyone else works a number of years and ends up in the 120s-150s and they think they are doing great, but they really aren't (me included) due to #1.
Any way you look at doing software development as a career you come to see that it stinks. I'm not going to recommend it to my kids. I think it's important to know how computers work and how code works and not to be afraid of tinkering with those things or coming to believe that you have no control over it, but as a business, it's nasty and getting nastier.
New grads at Facebook who received a return offer as an intern get a bit over 200k/yr total comp. to start.
> Any way you look at doing software development as a career you come to see that it stinks.
I don't see how being able to make several hundred thousand dollars a year with a few years of experience while working at a major company in a safe and clean environment is a bad choice.
What are the alternatives though? Lawyers work much longer hours and only the ones who went to top schools and get into top firms make more. Doctors make more but have 6+ more years of education and training. Finance is competitive and also has long hours. Programmers have it pretty good.
I'm not sure that's true. I've lost track of the number of software engineers I know who are in at least the low 200's Total Comp (in Texas).
Common? Probably not. Rarified? Not as much as you think. There's two just on my current team.
2. Taught the wrong way - The CS degree way is bad outside of a few key institutions. Everything which is taught sounds too abstract and complex. It's simply not taught well.
The candidates from those key institutions will not take a low ball offer, they'll prefer being unemployed or going into business chasing their dreams. Most are from well off background. This keeps supply low.
3. Greenfield - After working at a software compare, you'll realize that making a new small business around software is not that hard. Afterall, the dumb people who give you requirements are doing it, how difficult can it be? So, after gaining bit some expertise, you are able to set yourself free. I don't think this is possible in other professions without taking a massive hit in compensation. With my new companies, I am always confident that we'll be 100% successful. I wouldn't have gone to pursue it if I didn't believe success was evident. Lots of smart folks leave for their dream, leaving non-experts in the workforce. So, the money is chasing very small pool of candidates.
4. Robbers - After working at the small business, you'll quickly realize that skill matter much less in business. To make a ton of money, you'll have to be at the right place and at the right time, yea getting to that place does require some skill. You'll find some guys have found a way to convince millions of users to upload their pics on your website and you can sell their data to advertisers making tons of money in the process. This is all new and regulators have no idea what to do, there are no rules - so you rig auction in your favor, yet winning more money from advertisers.
There is potential to do lot more evil in CS.
There are some companies who have built massive leverage. If you do not work for them, you'll simply do not earn much regardless of your skills.
5. Hire more coders what whatever cost - Once startup is growing is growing, you'll find that you need to exploit faster and simplest way to to do is leverage opensource, existing vendors, investment etc... You've no time to reinvent the wheel, the reservoir of nearly infinite free money will not wait for you. So, you'll hire plenty of smart coders at whatever price, you'll use wizard level DS/Algo questions and experience in gluing tons of different opensource technology/vendors etc... If still there are some holes, no problem, contracting someone is the last resort.
Here is the biggest cost alone is time. So, companies are willing to bet as high as possible or risk being unseated.
6. Fast nearly free exponential distribution, creating a copy of iPhone still need some labor, distributing same software to 100K people need much less effort. The software scales faster. We design a system to scale 10x by default. How many other manufacturing plants can scale 10x?
6. Leverage ecosystem - Opensource technology/Vendors/Investors/ and internet is the fastest medium to advertise.
The biggest thing -> Lack of regulation. No, one is verifying your code to make sure that it's not doing anything evil or not extracting something from a user which you didn't have a permit for.
Just because you make an app and publish it to the App Store doesn't mean that it is "distributed" to anyone at all. There are massive costs to marketing apps because apps are commodities.