8 ms·
Heh. I'm pretty proficient in modern C++, and it is my favorite tool for a lot of things, but my PHP job pays way more than any C++ position available. Did an i
by klaussilveira 4y ago
Heh. I'm pretty proficient in modern C++, and it is my favorite tool for a lot of things, but my PHP job pays way more than any C++ position available. Did an interview once for Senior C++ Engineer, embedded software in the medical device space. All went good, until the offer: $100k.
Articles like this are nothing more than a desperate attempt at getting younger generations to learn said topic, so companies can pay them crappy salaries.
- badcppdev 4y agoEmbedded roles pay less than almost any other role... I feel there should be some sort of diagram possible that explains which industries and technologies pay more or less.
- lnsru 4y agoHardware is just slow and ugly. It’s not scalable and really profitable. Write C and C++ code all day for embedded devices and decided, that slowly I want to do something different and more profitable.
- danuker 4y agohttps://survey.stackoverflow.co/2022/#salary-and-experience-by-language https://survey.stackoverflow.co/2022/#salary-and-experience-... Note the C/C++/C#/SQL cluster at $70k/12years of experience.
- bitL 4y agoNot just embedded, robotics or automotive have pretty low C++ salaries while much higher for Java or even JavaScript... C++ devs are punished for being more capable.
- coliveira 4y agoIt's not an issue of capacity, it is demand. C++ developers cannot write websites in C++, so big companies will have to pay somebody else.
- manuel_w 4y agoNot posting to make a counterpoint but simply because related and interesting for the C++ folks around here. > Wt is a web GUI library in modern C++. Quickly develop highly interactive web UIs with widgets, without having to write a single line of JavaScript. Wt handles all request handling and page rendering for you, so you can focus on functionality. https://www.webtoolkit.eu/wt https://www.webtoolkit.eu/wt HN submission: https://news.ycombinator.com/item?id=23812791 https://news.ycombinator.com/item?id=23812791
- coliveira 4y agoThanks, but just a reminder of why we don't use C++ for web applications: creating a web app is basically a string manipulation problem. The work in most cases is just getting data from a database and returning text that represents the HTML+CSS in the web page. Not only you don't need the C++ speed to do this process, but string manipulation is also the weak spot of C++, due to the need for manual memory management.
- zozbot234 4y agoYes, the ease of safe string manipulation is quite possibly one of the clearest wins for Rust over C++.
- FpUser 4y ago>"C++ developers cannot write websites in C++" I actually doing all web backend using C++. I do not render to HTML though. All JSON based RPC. Rendering done by front end JavaScript.
- girvo 4y agoAutomotive is just embedded with some even more painful tool chains, to be fair. I get paid very well doing embedded firmware dev, but that’s because we don’t make money on our hardware, we make money on the software that it talks to for industrial IoT analytics
- adave 4y agoNot really if you know where to look and work on platforms. Pay is at par with backend devs if not full stack ones. ML/AI is the where the money is though.
- lotsofpulp 4y ago> I feel there should be some sort of diagram possible that explains which industries and technologies pay more or less. Is the entity you are selling your services to earning a large profit margin? If yes, then it is possible (but not guaranteed) for you to earn more. If not, then look elsewhere. Generally, this situation happens in businesses that can scale with little to no marginal costs (software, media), can use governments to defend its property (intellectual property, land), and can be easily used as collateral (land) with which you can obtain leverage (money).
- flir 4y agoThe tooling's a lot worse, too. I'd be interested in hearing theories as to why.
- aidenn0 4y agoSome reasons the tooling is worse: 1. A lot of the tooling is made by the hardware suppliers. Hardware suppliers tend to be very bad at writing desktop software; I have some theories as to why that is, but no direct evidence for them. 2. When tools are selected, they are rarely evaluated by software developers who will be using them. It's more like "Here's a list of boxes anything our development tools need to check" and then the final selection for anything that checks engoubh boxes is done for business reasons (cost, likely availability of support down the line &c.) 3. The same reason that embedded developers are often paid poor salaries; for a lot of hardware companies, the firmware development is treated more as a cost-center than as something that generates revenue.
- jakesgates 4y agoDo you have a source you can share for this?
- sliken 4y agoOr take 10 minutes and look at the job ads. After all the supply/demand for different jobs changes over time and by location.
- at-fates-hands 4y agoAnecdotal evidence to support what you're saying. I had a large group of devs I used to hang out with. It was about 50/50 front-end and C, C++ guys. Over the last decade or so, every single C developer either transitioned to PHP like yourself, or went the full-stack JS route and have never looked back. And it was all over the issues around dealing with legacy systems and the poor pay. One guy told me flat out he can make close to twice as much being a very in demand JS developer with great benefits and reasonable hours compared to the horror show of working in government (military) or finance.
- PenguinCoder 4y agoI am not a front end guy, so I don't understand how PHP jobs can pay _better_ than C++ jobs.
- ploxiln 4y agoProximity to the web. Think about how web companies can have very low up-front costs, use a cloud provider and some high-level frameworks for python or JS etc, make a stupid social-media connected app, and start making big money (or get investments assuming they will after capturing many users). Then think about hardware companies - it's a very competitive space, it's mostly a commodity, the high-level software doesn't care so much about the specific chips providing those cores of cpu and gigs of ram, and what's available on the market is really amazingly powerful at a really amazingly reasonable price, due to competition with other providers in the market, and with older hardware! It does seem kinda perverse, but ... the closer you are working to the hardware, the cheaper the market for your work, but the further up the stack, the more potential for high pay, based on the higher monetary efficiency of those companies, by running very in-efficiently on super-competitive hardware, and differentiating with features and services etc.
- deleted 4y ago[deleted]
- raverbashing 4y agoAnd much easier to get the truly awful bugs working with C++ than JS (those that you almost go crazy trying to debug) It's really not worth it
- InfamousRece 4y agoI had an offer from robotics company: 80k and no benefits. I’m not sure where to find good paying C++ jobs outside of finance.
- franzb 4y agoComputer graphics.
- boppo1 4y agoFor what industry? How's the comp?
- zarzavat 4y agoPretty funny. For a hardware/robotics company, software is a cost center. For software company, hardware is a cost center. In-group are profit and out-group are cost.
- gniv 4y ago> I’m not sure where to find good paying C++ jobs outside of finance. Most of FAANG backend infrastructure is written in C++. Lots of open positions as senior folks retire early from there.
- kilgnad 4y agoI'm curious about why. It seems like the economics of supply and demand should make it so that C++ roles pay higher. There's less C++ devs, C++ is harder, demand is still high. Why are the salaries low?
- Justsignedup 4y agothere's another factor: age If I am a C++ developer, in my late 50s, close to retirement, and know C++ fairly well, don't want to learn a brand new system which I won't be coding in for much longer, and already have my financials all set... I won't be looking for that early retirement big cash payouts. I just want my flow of cash for a good retirement, to go on my vacations, and to buy gifts for the kids / grandkids. I'd be willing to settle for a lower pay with low stress and solid job security. Remember the desires of people later in life and those early in life aren't the same. If you got 10 more years of work left, you don't want to be in a high stakes high intensity work environment. I worked with one such man. He'd fall asleep while coding mid day. Nobody bothered him. He just chipped away at his projects at his own pace and was happy to not be bothered. Sounds like such a company is looking for a boomer/genx who's still got skills and willing to settle for not being bothered too much.
- WorldMaker 4y agoRelated to age factors: so long as the "primary" development language for videogames remains C++ there's always going to be a multi-generational talent pool for C++. Young naive programmers get into videogames until they burn out or are laid off due to ageism then there's "always" "fresh" new C++ talent for other industries too immediately following those videogame roles (assuming the burnout isn't total, such as strokes). COBOL got to where it is when there stopped being entry level jobs for it. Videogames keep a massive entry level door (full of "passion") open for C++. That's going to "naturally" keep C++ development salaries low for the foreseeable future.
- kilgnad 4y agoOh interesting. You think videogames are influencing the rest of the industry? That actually makes a lot of sense. Are there other sources (articles, research, blogposts) that talk about this?
- francisofascii 4y agoWhich makes no sense to me. Isn't C++ harder and demand better programming chops?
- lelanthran 4y ago> Which makes no sense to me. Isn't C++ harder and demand better programming chops? Sure, and a scalpel is a lot sharper and more precise than a lawnmower. Which one do you think will result in more expensive lawn maintenance?
- shoo 4y agoC++ isn't necessary in many business contexts, and can result a worse business overall outcome than alternatives. If it's a harder tool for people to use, and the use of the hard tool isn't necessary, why would you use it? Why not use an easy tool? Especially if the easy tool means more people can wield it, so there's a wider labor pool to draw from, or a reduced error rate from tool-difficulty-induced defects. Indeed, many businesses correctly decide there's no benefit to using a difficult tool that isn't required, and choose an easier tool that produces a better business outcome. e.g. suppose you're a non-tech enterprise (bank, utility, etc) and you need to build a bunch of backend web services to support your internal operations. If you decide to implement them in Go, which is arguably a domain specific language for building web services, then you can probably deliver the project by hiring a bunch of fresh grads and putting one intermediate to senior programmer in place to lead the effort, even if no one has any Go experience. arguably if you try to deliver the same business outcome in a random enterprise context using C++, a project team will likely have a far more difficult time getting basic HTTP / TLS server stuff in place, and if there's lots of rookies on the team, they'll keep making foot-gun memory error mistakes. Sure, maybe if it was built in C++ by highly senior engineers, and subjected to a thorough QA process, you could end up with a system that's much more efficient at runtime than what could be cobbled together by less experienced engineers with an easier language and a good standard library. But in most business settings efficiency isn't the bottleneck, it's delivery speed and then maintenance costs, which are driven by staffing and how expensive it is to change the code each time the requirements change.
- Shorel 4y ago
- AtlasBarfed 4y agoExactly. SHOW ME THE MONEY. I'll be a C++ programmer. Labor supply stories never talk about salaries. I can also see lots of references to embedded and close-to-hardware jobs, which means low salaries, unsexy code, and flawed/buggy toolchains compared to mainstream platforms. It's right there in the article: "demand". Why do business people pretend basic supply and demand first day microeconomics 101 doesn't exist as soon as you say "labor"? I suppose this is more fuel for Rust adoption. Rustaceans, is the war won? Btw, it is INSANE that we pay engineering positions (you know, real ones like electrical/hardware/materials) so poorly compared to software devs. Engineering has professional organizations which, like the AMA, should be able to enforce some degree of good pay.
- varispeed 4y agoTo be fair all engineering positions are paid poorly if you compare to the profits corporations are making.
- bombolo 4y agosoftware companies often don't make any money at all.By that logic paying them at all is too much.
- pavlov 4y agoIt’s the growth, not the profit. Software engineering is a lever for growth for businesses designed that way. If you can grow revenue by $100M by spending $10M on engineer salaries, it usually makes sense. On the other hand companies with steady profits and little growth have no such expectations and try to pay as little as possible for the software engineers they do need.
- varispeed 4y agoBig companies don't post profits for tax avoidance reasons. They use various strategies to minimise profits - or ideally operating at a loss, so that they don't pay tax or very little. They also use this as an argument "look we don't make any money so we can't pay you any more", while at the same time you hear CEO buying themselves another supercar or a beach house.
- dtdimond 4y agoIf you were to look into trading companies, mostly located in Chicago/NY, you would find positions paying competitively (or better) with FAANG salaries.
- snarfy 4y agoYep, I'm in the same boat. C++ jobs always pay like shit, so I sling web apis together with C# and make 3x as much. It's way easier and less stressful. I'll only use C++ for hobby projects now, and then only if it's the right tool for that job.
- pjmlp 4y agoWelcome to the club, here is another issue with C++ jobs, they are hardly open to the idea of remote work, unless writing C++ is a detail, e.g. main application is C# and there are some native libs there.
- cue_the_strings 4y agoIt's not the C++, it's the embedded. Embedded is paid miserably, everywhere, no matter how complex or interesting. Simply put, having to manufacture things, with its supply chain, warehousing, manufacturing, ... is never gonna have the margins of a purely software or financial product. Since the employees' salaries depend on the profit from that physical thing, it can never compete w/ software / finance. The only well paid embedded jobs involve producing weapons ('defence') or gambling ('gaming'), and I'd rather sell crack to kindergartners while also prostituting myself than do that. I did get a bunch of those offers and still do get them every now and again, even though I'm happily employed. Moved to finance, never looked back. People should plain refuse to work in embedded, maybe then thing will get better. Also, C++ is the differentiator. People hire for other languages (C# and Rust, in my experience) based on your deep C++ knowledge. And this does make sense, this is a great proxy for your development skills and potential.
- jakesgates 4y agoDo you think the many embedded engineers working at Apple, TI, AMD, Intel, etc are paid significantly worse than their higher level software counterparts?
- cue_the_strings 4y agoI do, in fact. The reason is that most embedded people are recruited from the ranks of EEs. At least around here (Europe), 1.5-2x more EEs graduate each year compared to CS people, and EEs doing EE stuff are paid even worse than embedded, it's a step up for them. They don't and likely can't ask for more. Surely, some EEs learn CS stuff on their own and start working dev jobs, but they're the exception. I've worked with a lot of EEs, and their general programming knowledge (especially knowledge of best practices, tooling, software architecture) is way worse than CS people, in general, across companies and countries. Every time, the best devs were CS, even when it was 100% embedded or even FPGAs (which are not taught to any CS students, yet are taught to every EE student). I personally know maybe a couple of EEs that are great devs (through their own effort and interest), compared to at least a dozen of CS people. However, CS people generally know almost nothing about analog design and at hundreds of MHz (table stakes for serious stuff since 2010) things start getting pretty analog whether you like it or not, so you have to hire EEs anyway. I interviewed for Amazon for an embedded/mixed role because that was my forte at the time, and the compensation offered was nothing special, worse than even a mediocre finance sector offer, much better than automotive or general embedded (medical, industry / robots). Could never get an Apple interview (they passed on me twice), though, and I never even thought about the rest (that would require relocation to to places I don't care about). But since I never actually worked for those companies or have any concrete data I could be completely mistaken. I only have friends working in FANGs in non-embedded roles and embedded friends only working for shit-paying companies, plus some of them are not willing to discuss salaries (suckers). Also, I get the feeling that AMD / Intel / Nvidia operate a bit different than the rest.
- clnq 4y agoSame in video games. Many C++ engineers are learning JS in spare time to hopefully jump over to something that pays 4-5x. My personal experience also says that you spend much less time to build something profitable in JS and PHP than in C or C++. I don't think it's impossible that in another 10 or 20 years C and C++ engineering roles will become much better paid as legacy code maintainers' pool will dry up. Hopefully as a result of moving to languages like Rust - it would work out best for all developers. But it's not looking good in the C++ land salary-wise now.
- lelanthran 4y ago> I don't think it's impossible that in another 10 or 20 years C and C++ engineering roles will become much better paid as legacy code maintainers' pool will dry up. Maybe. I've made the jump from pure embedded (spent over 15 years in embedded) to backend (Go, with some rudimentary Java thrown into the mix). I literally doubled my salary in the space of 12 months. In 20 years, are they going to hire my retired old ass to make their codebase live another 5 years longer, or will they simply bite the bullet and rewrite? > Hopefully as a result of moving to languages like Rust - it would work out best for all developers. It could happen, but I'm not that bullish on that happening: 1. No benefit - The very low-level embedded systems that toggles signals on wires doesn't gain much, if anything, from memory safety[1] - the end result of using Rust on a 2kb RAM/8MHz chip (atmega328, or xmega, or one of the stm32s, for example) is going to be using unsafe everywhere anyway. 2. High rampup - the majority of knowledge needed for low-level comes from EE, not CS. Already Rust has problems with adoption amongst CS people, who (in theory anyway) have all the requisite knowledge and motivation to climb the learning curve. I'd bet money that EEs won't even bother looking beyond the awful syntax. 3. Better alternatives - all those higher-level embedded projects such as RPi, Beaglebone, etc that run Linux have better alternatives for programming them than Rust. Most custom code written for the RPi is in Python, for example. Someone looking to develop on these boards is almost certainly better off using Go instead of Python, and Python instead of Rust. So given that there's a) no benefit on low-powered devices, b) there's better alternatives on high-powered devices and c) it's a complicated language with slow ramp-up, I'm having trouble in seeing exactly where it fits in for embedded. > But it's not looking good in the C++ land salary-wise now. Nope, it isn't. If enough C++ devs jump ship (and, to be honest, in low-level embedded C++ as you know it isn't used much anyway), then salaries will rise again. The problem is, as someone else pointed out, that many of the places using C++ are shooting themselves in the foot, because they want senior and experienced people who can ramp up quickly on the latest C++ standard, but without a pipeline of unskilled/juniors, there's only a few number of years before there'd be out of any C++ devs. And because it's not an attractive language, there's no one switching from (for example) Java to C++, or C# to C++, while there are plenty switching from C++ to Java or C#. [1] Beyond which, it is not clear if safe Rust will ever be able to interact with various embedded OSes for these chips; most of them are external kernels anyway, so there is no way to use those kernels without using C.