15 ms·
I think programmers tend to underestimate the difficulties involved with becoming a good programmer because once you're good, you only see the even steeper lear
by shantanubala 8y ago
I think programmers tend to underestimate the difficulties involved with becoming a good programmer because once you're good, you only see the even steeper learning curve ahead of you.
Some of the smartest people I know work in other domains: biology, chemistry, and even physics. They are sometimes baffled by tasks that seem trivial to me, and I'm under no impression that I'm more intelligent than them. I simply specialized and focused only on programming, while they program to accomplish other tasks in their domain of expertise.
Can this last forever? Of course not, nothing lasts forever. But wondering why the wealthiest corporations in the world pay their workers high salaries is perhaps like wondering why water is wet. Software has a low marginal cost, and the rest is basic incentives for the corporations.
- devoply 8y agoIf anything good programmers are underpaid. If you are making your company a mil, you should be getting 1/2.
- nouveaux 8y agoI'm all for programmers getting paid more. However, by your logic, if the company is losing money, should programmers contribute from their own pockets to keep the company afloat? Starting your own company (not self employed contractor) gives a really good perspective on what it means to be owner and employee.
- devoply 8y agoNo they should quit and find another company.
- seem_2211 8y agoYou can't keep a significant portion of the upside without taking on more risk.
- devoply 8y ago> Privatizing profits and socializing losses refers to the practice of treating firms' earnings as the rightful property of their shareholders, while treating losses as a responsibility that society as a whole must shoulder, for example through taxpayer-funded subsidies or bailouts.
- friedman23 8y agowhich software businesses have been bailed out by the government?
- seem_2211 8y agoNot really related to what we're talking about here though?
- Jach 8y agoHow is this his logic at all? The logic is more similar to a sales person. When a company starts losing money, it doesn't try to claw back commissions from its top sales agents to keep afloat. It might lower %s / do layoffs / something else, but money paid is money gone. The logic is that programmers tend to produce far more value than they capture -- so that gets captured elsewhere, a lot of it typically by management. Except the value can be hard to quantify when the company is old and so is the software, how much of the value is employee #3701 making fixing a bug that's making the product not work for one customer in one instance vs employees #107, #85, and #150 who in their past team's life created the original version of that system to begin with to make the new customer even consider using it? There's no point to moaning about how much you "should" get paid. Just ask for more if you feel underpaid, but be aware that because of competition and because people usually want to hear what more you'll do to justify it, you're not going to always get it.
- vectorEQ 8y agoif you solo develop (usually not the case) an app for 1 mil then make it yourself if you want that large a cut...
- jjeaff 8y agoBut what if another programmer is willing to make me a million for only 25%? That's how markets work. You get paid what what the market will bear, not what you "should" make.
- devoply 8y agoAs I said good programmers are underpaid. They should figure out how much they are making their companies and ask for more. The market can often afford to pay more, if you just negotiate better. You can also unionize to get your employers closer to what you are worth to them rather than what they are worth to you.
- pmiller2 8y agoSuppose I’m working on pulling out some functionality from a large, monolithic application. How much am I making my company?
- jsjohnst 8y agoDepends on what the outcome is. If it makes the site 50% more performant on 25% less hardware, pretty easy to swag it. Same if the outcome makes developers on the team able to ship new functionality 20% faster with 33% fewer bugs.
- thecrazyone 8y agoThis seems awfully contrived. Issue 1: It's very difficult to tell if your contribution got 50% improvement in performance because there were 10 other devs pushing in features and bug fixes. This is the attribution problem Issue 2: This happens over time. It's very unlikely that your 50% improvement happens every year or month. Because, think for your self, this is compounding with large rates. It grows quickly. 1.5x improvement in 6 cycles (months or years) is 10x. This essentially is the time problem Issue 3: even if you deliver the results you did, in a large company there's a large bureaucracy and no one person has the ability to increase your salary by that much. This is the control problem.
- EpicEng 8y agoAnd in tough times are you taking a drastic pay cut, or jumping ship? Sounds like you want a huge share of the good and none of the bad. Also not sure why you value programming so far above all of the other activities it takes to make a successful product.
- elorant 8y agoDefine "making". Does the program/service sells itself? If so, then your argument may stand. Nine out of 10 times though it doesn't. There are other people involved in making the sales and they also require a piece of the pie.
- cobookman 8y agoSales people don't get anywhere near that kind of commission. Most SWEs I know are not making more than they bring in profit.
- walshemj 8y agoGood ones do - the Oracle one that sold a large company I used to work for a company wide licence allegedly retired on that single deal.
- simonh 8y agoThe usual ratio for top flight talent in the finance industry is 10:1. A trader makes JPMorganStanleyofAmerica $5m, they get $500k compensation. That seems reasonable because there’s a direct line between talent and profit. Even so someone had to build the business, capitalise it, create the business opportunities and relationships, train and support the trader and assume all of the risk. How much of the business risk of the enterprise is your top flight programmer assuming? Are her decisions the only ones that make any difference to the increase in profitability as a result of her work? How direct is the line between back room engineer, no matter how good and profit? The only case where 50% or near it makes sense is for a founder owner who is also the lead talent. Maybe. Because then they are also creating the business opportunity and assuming a big chunk of the risk.
- jenscow 8y agoSarcasm works really well in a text-only format!
- zappo2938 8y agoIt's a team effort. I stopped trying to get software projects off the ground by myself
- TeMPOraL 8y ago> I think programmers tend to underestimate the difficulties involved with becoming a good programmer because once you're good, you only see the even steeper learning curve ahead of you. Good programmers I know also overestimate the skill needed to earn high salary in this job. You don't have to go up the learning curve much; these days, you just learn yourself JS a little bit and go for a webdev job, making shit code and still earning more than most people in a given country. > But wondering why the wealthiest corporations in the world pay their workers high salaries is perhaps like wondering why water is wet. Software has a low marginal cost, and the rest is basic incentives for the corporations. Nah, that's like wondering why is this ice block sitting on a hot plate and still solid. The answer is: because it just got put there, and it'll melt in a moment. So too, will end high salaries, as most low-hanging fruits get eaten by software, made by mass-produced cohort of programmers.
- spamizbad 8y ago> Nah, that's like wondering why is this ice block sitting on a hot plate and still solid. The answer is: because it just got put there, and it'll melt in a moment. So too, will end high salaries, as most low-hanging fruits get eaten by software, made by mass-produced cohort of programmers. Our industry has its share of cycles, but this, in my view, is largely wishful thinking on the part of people. Nothing wrong with optimism but... Every 5-10 years there's a "technical shift" that forces everyone to reevaluate how they build software or more importantly what they build, and the race starts all over again. The ice block is removed from the hot plate is replaced by a bigger, colder block of ice. And when these technical shifts aren't taking place, the bar for what constitutes as "good software" inches upward. If your standards for acceptable software were frozen in time in 1985: using modern hardware and software toolchains, you could accomplish in one day what used to take a small team an entire month. But if I delivered, say, what passed for a "good enough" database in 1985, it would resemble someone's 200-level CS final project rather than a commercially-viable piece of software.
- kerng 8y agoI have not noticed these technical shifts per se. What I have noticed is that mature engineers move on and do other things and new ones reinvent the wheel with some new fancy language or term which then becomes the new way of doing things, and the cycle repeats. Sometimes there is a great deal of value when a new level of abstraction happens but I wouldnt call this a shift, it's just progression. Many of the underlying problems and solutions exist for decades. Database systems you mention are a good example of this.
- amrrs 8y agoAbsolutely right and something we see in Data science too. Coding is a domain where we work cross-architecture. I can't be just a useful Python programmer - I can only be a useful Python programmer in Marketing automation or some Business associated with it. The fat package makes programmers not realize this.
- natalyarostova 8y agoAs a data scientists who considers himself moderately good with the pydata library set, I realized the other day if you took those 5 libraries away from me, I'm not sure I have that much to offer in terms of my programming abilities. I don't necessarily feel bad about that, although it did give me pause.
- simonh 8y agoI’ve known people who built lucrative careers on expertise in specialised technologies, and others who’s entire careers disappeared because they were too specialised and the technology got deprecated. You might be fine, but I’d definitely recommend diversifying your skill set a bit. Being a generalist has served me well.
- SZJX 8y agoI would say every capable programmer should be a "generalist" in a sense and be able to transfer their skills with relatively little effort. If they can't, they are not really that good at the abstract concepts. Still this doesn't prevent one from focusing more and specializing more on one field/language that they love and be as familiar with it as possible.
- jriot 8y agoAs a data scientist myself, I learned to write code that utilized arrays and matrices - from the most basic library. From cleaning to analysis to machine learning (I supposed numpy was used for ML). Is this the most correct manner to write code? I don't know but learning to do DS without specific Python libraries has improved my coding ability. Aside from being able to read in different data formats I believe I could do a fair portion of my work in C.
- sam0x17 8y agoI agree, but the real bubble that has popped is that non-techies have become more selective in judging the skills of programmers. Gone are the days where being able to stand up an FTP server and display a mysql query result in a web page means you can write your own ticket into any tech job in the world.
- trinkwallopy 8y agoWell ok if your standards for yourself are that low.... nothing more to say
- tanilama 8y ago> I think programmers tend to underestimate the difficulties involved with becoming a good programmer because once you're good, you only see the even steeper learning curve ahead of you. But that is no definition of bubble. Bubble, at a very basic level, means there is a lot of capital flowing within, it has little to do with whether how difficult your job is.
- Pamar 8y agoThis is... debatable. I was around in 1985 and if I had proposed using "an eventually consistent schemaless DB" to tackle a bank or a manufacturing project I would have been laughed out of the room. And not because it sounded too good to be true, mind you...
- ummonk 8y agoDoes anyone do that, at least on the software side? Obviously there are consistency issues with e.g. non-instantaneous bank teller actions, but those are human inconsistencies, not software inconsistencies..
- Pamar 8y agoWhat I mean is that some of the powerful components we can leverage today solve problems that did not exist in 1985, so having these available then would not really help. I mean: what would you use Node.js for - in 1985 - even assuming you had access to a system to develop and test stuff made with it?
- sedachv 8y ago> I mean: what would you use Node.js for - in 1985 In 1985, your hypothetical bank would be running VMS, which had asynchronous IO system calls as the default. There was no need to "invent" something like Node.js.
- woolvalley 8y agoFunny thing is, that is what ACH and many other banking systems are today, or at least back then. "Reconciliation" can take days.
- stickfigure 8y agoI think the comparison to biology/chemistry/physics is interesting. Perhaps even more than software, there's a huge spread between the value of low and high performers - the best scientists make new discoveries that can be worth billions. On the other hand, if you think the software industry has a hard time figuring out (at hiring time) who the high performers are... science is driven by serendipity. Nobody can predict who will find the billion dollar discovery. Not even past performance is a reliable indicator. So it makes sense to me that the salary spread in science is relatively even. If they could reliably figure out who to dump money on, they would. On the other hand, the FAANG companies clearly believe their hiring practices can select out the high performers... and perhaps they are right? If they're paying 3-4X what everyone else does, they expect to get at least 3-4X the value.
- someone454 8y agoScience doesn’t reinvent itself every couple of years either: new discoveries build upon a foundation of old discoveries. Software is more like the fashion industry.
- titanomachy 8y agoI've worked with good people at every company I've been at... but the nice thing about being at a top company is I never have to deal with totally incompetent or helpless people. Nothing frustrates me more than having my job responsibilities include training someone with no initiative. The selection process seems to do a good job of keeping out the lowest tier at least, although we openly acknowledge that we miss a lot of good people as well.
- mgkimsal 8y ago> Nothing frustrates me more than having my job responsibilities include training someone with no initiative. Years ago, I worked someplace where a colleague was tasked with working with another developer on project X. After about 15 minutes it was clear the other developer ... wasn't? A web project, and this person had been employed as a "web developer" for at least several months. Questions like "how does this information in this browser get back to the server?" came up. Colleague goes to manager and says "I can hit the project deadline, or I can make sure other_dev learns the basics enough to be able to contribute and understand projectX, but I can't do both by the deadline. Can we move the deadline back a few weeks?" No, and no. Train other_dev and hit deadline. Deadline was hit, other_dev moved to another project afterwards, and was pretty much as ineffective as before, but colleague was then saddled with this reputation of being a 'bad mentor' because the next team learned other_dev didn't know how things worked. Why the hiring manager wasn't tarnished... who knows?
- mathdog 8y ago> Can this last forever? Of course not, nothing lasts forever. But wondering why the wealthiest corporations in the world pay their workers high salaries is perhaps like wondering why water is wet. Software has a low marginal cost, and the rest is basic incentives for the corporations. Agree
- criddell 8y ago> they program to accomplish other tasks in their domain of expertise My kids have mentioned that they might be interested in a degree in computer science because and I've encouraged them to combine that with a second area of specialization. Programmers are everywhere, but a programmer that also knows chemistry or biology or economics or art history or just about anything stands out.
- sjg007 8y agoMaybe. I studied CS and bioinformatics. You end up competing with both pure CS folks and also the bio folks that are bioinformaticians. Still I generally agree that some domain expertise is helpful.
- ummonk 8y ago>Programmers are everywhere, but a programmer that also knows chemistry or biology or economics or art history or just about anything stands out. Really? I have a physics degree with some experience in rocket science, but my most valuable skillset (measured by how much pay I can fetch for it) is plain old software engineering. I don't think I'd be able to leverage my area of specialization to exceed or even match what I can get from FB/LI/G as a generic software engineer.
- criddell 8y agoYou don't think your broader education and experience makes you a better software developer (that encompasses programming, writing, and working with other people)?
- ummonk 8y agoThat's a good point. Not going through the standard CS track and straight into software engineering has probably given me broader experience and skills (both soft and hard) that I wouldn't have developed as well otherwise.
- shams93 8y agoMost programmers are not that well compensated. I never made more than 120k a year tops, I'm almost 50 years old. Not everyone is young and pretty and attractive to the Googles. The number of employers who compensate like this are tiny you can count them on one or two hands. 98% of programmers never make more than 100k. With nearly 30 years experience I build things that would bill out to $160,000 a month for an outside team to produce, but I live in an 80 square foot roach infested apartment and can't afford a car.
- dpau 8y agoIf your work is that valuable then perhaps you’re selling yourself short? In my 40s now and have definitely encountered age discrimination but found remote work once I updated my skills. I hope you get out of that dump!
- softawre 8y agoDo you live in a really high LOC area? Or are you exaggerating?
- analog31 8y agoOddly enough, I think learning to program is easy, but only for a few people. And those are the people who are motivated to learn it as an end unto itself. I was motivated because my older brother, and my mom, had already learned how to program, and they were quite excited about it. After getting past a few familiar conceptual hurdles, it became very easy for me to learn programming myself. People who are only motivated by the money, or under pressure from others, have a harder time, because their curiosity and drive aren't activated. There's some sort of valve that lets the knowledge into your brain, that has to be opened. For the most part, the people I know who seem to be motivated by money itself are not so desirous of getting rich per se (many are already rich), but are actually interested and curious about money in the way that I was curious about programming. I don't program for a living today, but my ability to program is definitely a force multiplier for my work. It has either improved my earnings, or improved the continuity and longevity of my career.
- abledon 8y ago"""I don't program for a living today, but my ability to program is definitely a force multiplier for my work. It has either improved my earnings, or improved the continuity and longevity of my career.""" may I ask what domain you are working in? Can you give some examples of how you've slipped in some programming knowledge into other job tasks? I love to hear people's anecdotal problem/solution approaches. Was the programming side of it actually slipping in some VBA/chrome extension/javascript or was it more of just an 'analytical' approach taken to a business decision.
- analog31 8y agoMy background is in math and physics. While studying those subjects in college, I learned programming on my own. Today, I develop technology for fancy measurement and control equipment. When I say I don't program for a living, I mean that it's not my job title, and my managers may actually be unaware of the role of programming in my work. I use programming extensively as a problem solving tool, for things like data analysis, modeling, automation of experiments, and prototyping. Almost all modern equipment is electronic and computerized. To be capable of rolling out an MVP on my own, I program. You will rarely see my computer without a Jupyter notebook on the desktop. ;-) In addition to working in a computerized field, program code is just a super powerful way to express ideas. And the disciplines of good programming practices (yes, learn them) provide ways to organize the innards of complex things, so they actually have a fighting chance of working and being right. Plus, it's fun. People who work as full time programmers may make more money than me, but I'm not sure that I can do their jobs. When thinking of any profession, a person should not only look at the cool, fun stuff, or the money, but what the actual daily grind looks like, because that's what you have to survive.
- NicoJuicy 8y agoThis The best teacher has been helping collegues. I have been programming a lot better ( less errors and even without sometimes running the application when I'm pretty sure), because I think and analyze more upfront than I used to. Some things come back, but it's rarely related to me ( eg. last moment spec changes). I do have to watch out, I notice that basing my code on someone else is ok. But, they always have faulty code in hard to test areas. So make testing easier on things that are hard to test is my next motto. Also, helping others is a pretty huge timesink :( Ps. Being in the zone does wonders lately PS2. There was another threat about videolan yesterday. And nobody heard the entire story about https. I gave the VLC developers the benefit of the doubt, not knowing everything off their infrastructure. . A lot of the comments here on HN disagreed with me ( stole silently upvoted though). Today I saw a blog post about why.. It was infrastructure based... I can't understand why I was practically the only one with another view in the subject in this community, where developers come together. FYI: Comments are in my history. Mostly on the videolan topic. It's all recent
- austincheney 8y agoIt is like exercise... you are shaping your brain to the problem. The US military actually tests for this in what's called the Army GT score of the ASVAB test. When I took the ASVAB in high school I scored a 107. That score is too low to become a warrant officer so I had to retake it a couple of years ago for my officer packet and I scored a 129 out of a maximum 130. That puts me in the top 0.1% of testers. I am not smarter or more intelligent than when I was in high school. I do write software though. Every couple of years I look back on my software and algorithms realizing how I continue to improve and see the solutions more clearly. https://en.wikipedia.org/wiki/Armed_Services_Vocational_Aptitude_Battery https://en.wikipedia.org/wiki/Armed_Services_Vocational_Apti...
- SZJX 8y agoI would say that it's the same for the other trades as well though. For example, people might imagine that learning a new human language is trivial with the proliferation of misleading advertisements such as Duolingo or Babbel, but to really learn a language the effort needed is tremendous and it requires constant repeated practice over a long span of time. The question the author posed was why programmers are paid that much even when some other paths could seem "harder", which seems valid. Sure not all careers are supposed to be "harder" than programming, but they're not as easy as one'd imagine either. Though yeah at least for now I don't see the situation abating much. The demand is still going strong. Once the proverbial "flood" of the market happens from new grads, things might get worse. But still if you know what you're doing, you know all the right concepts and skills, you should be able to stay on top of the game. There has always been a saying that the irony of the CS degree is that many people who graduated with the degree can't program, while many who can program didn't need to do a degree at all. I doubt the influx of students trying to study CS would change this situation much. Coding bootcamps have been around for a decade yet they don't seem to change the market equilibrium that much.