Only if you think I would advocate to shop at the company store, have my hose inspected by strangers then have a private security company threaten my life. The point is that Amazon is doing the same things we have seen large companies do in the past, its not a surprise to me. My lack of surprise however should not be seen as any endorsement.
you may not be aware but your comment came off as somewhat condescending, given that you don't really have any idea where parent poster is coming from or what their background is
If someone says that premature optimization isn't a thing, I don't think it is condescending to point out that it is by posting original source material. :-)
> it only wastes the programmer’s time. ... Wasting CPU time on the other hand bothers me a lot!
As always the answer is... it depends. Programmer time costs money, CPU time is cheap by comparison.
If you're building something that runs occasionally, or is IO/UI/network bound... CPU time is largely irrelevant. But if you're building something that runs in a tight loop or a library that will be compiled in millions of lines of code, then the wasted programmer time will absolutely be worth the ROI.
Yes, but, again, this article is about standard headers. Since it is impossible for STL library authors to decide that they are or are not writing for a performance-sensitive audience, it behooves them to provide completely visible header-only implementations of everything.
The pImpl pattern costs programmer time as it's more code to write. By contrast compiling is just CPU time and you can trivially throw a bigger workstation at the problem.
This depends on who is writing the code and who is compiling the headers. A software developer who is building headers for someone else (an internal or external client) may trade the overhead of this pattern for a faster compilation time. Reducing compilation time by 80% may be well worth the overhead of adding 10% more code to an interface.
It is not always possible to just throw more hardware at the problem of compilation. For instance, one may be using a build pipeline that requires specific steps to be followed as part of gating tasks. The time it takes to compile code over and over again for unit testing, behavioral testing, acceptance testing, integration testing, etc., each impacts delivery time and handoff.
Earlier in my career, I worked with a code base that was approximately 10 million lines of code in size. Compiling this code base would take approximately 7 hours on the best hardware we could buy. The C++ developers were adamant about ensuring that their headers were "complete" as they called it. With a few changes, such as forward declarations, abstract interfaces, and encapsulation, my team was able to reduce that compile time to less than 35 minutes. Based on profile feedback, we saw less than a quarter of a percent difference in overhead. Productivity-wise, we managed to reduce developer workflows so significantly that it was a better use of our time for overall cost than working on a billable project.
Most projects aren't nearly that bad, but it does go to show that it is possible to significantly reduce compilation time without significantly impacting runtime performance, even in C++.
> It is not always possible to just throw more hardware at the problem of compilation. For instance, one may be using a build pipeline that requires specific steps to be followed as part of gating tasks. The time it takes to compile code over and over again for unit testing, behavioral testing, acceptance testing, integration testing, etc., each impacts delivery time and handoff.
All of that is solved by throwing more hardware at it.
Alternatively if compile time is not the slow part of that pipeline, then you're prematurely optimizing the wrong thing anyway.
> Earlier in my career, I worked with a code base that was approximately 10 million lines of code in size. Compiling this code base would take approximately 7 hours on the best hardware we could buy. The C++ developers were adamant about ensuring that their headers were "complete" as they called it. With a few changes, such as forward declarations, abstract interfaces, and encapsulation, my team was able to reduce that compile time to less than 35 minutes.
In other words you only optimized the critical 3% of the codebase rather than prematurely optimizing everything with pImpl abstractions?
> Alternatively if compile time is not the slow part of that pipeline, then you're prematurely optimizing the wrong thing anyway.
Developer productivity does not matter in your world?
> In other words you only optimized the critical 3% of the codebase rather than prematurely optimizing everything with pImpl abstractions?
Yes, because nowhere in this thread have I advocated prematurely optimizing everything with pImpl abstractions. Those are words you have put in my mouth. pImpl abstraction is a single tool that can be used to improve compile-time performance. Not all the time, but in a fraction of the 3% of the time where it is appropriate.
Well, to the extent that it is a thing it only wastes the programmer’s time. I happen to think programmers are spending too little time, so that doesn’t bother me. Wasting CPU time on the other hand bothers me a lot!
yeah i don't agree with this. i live alone and spend about the same or a bit more as my friends who live with roommates. they have nicer apartments generally but it's a choice thing in our city (NYC). this is people in early-mid 20s working at faang/banking/consulting.
> It is absurd to suggest that anyone "knows" what a system as complex as the Earth will be like in the future. Many people believe that this is the most likely future, and I'm sure some of them don't care.
it's absurd to suggest radiative transfer and heat retention aren't well understood scientific phenomena.
> "We're trying to save these neanderthals and they're stupid/tricked by evil so they're going to end up killing us all."
this but unironically
> but do you really believe that all of them were fed that mantra by bad actors, and none of them are just lashing out at bullies?
ah yes, the guys with total political power are being bullied
> You want me to support your political campaign to regulate the gas that I exhale, because otherwise there will be a doomsday, and if I don't agree I'm either stupid or evil
Don't have much skin in this argument, but this would convince absolutely nobody not already aligned with those beliefs. . .which was GP's point in the first place.
I like Ben's writing a lot but I think he's not very familiar with just how much better FAANG is in expectation value for your typical engineer - i.e. at current compensation levels it would be possible to achieve financial independence by 35 or 40 for somebody joining out of college. I don't think Ben has a particularly steep utility curve for money so working at a mission-driven startup is probably great for him, but the landscape out there has changed since he was last looking for work.
I'm surprised, is the salary that much bigger for FAANG in the USA? I know someone who's been approached by Google for a position in Paris, and the salary is not that great (around 110K€/year from what I heard for a Software Engineer position (more than 10 years of XP)). With that kind of salary, you can live well but you're not going to reach financial independence nor buying a house by the time you're 35/40.
I do know a lot of people making this or even much and they're not working at Google.
I was formerly confused by Google's compensation packages as well. I was focused on first year base salary and not aware of how raises, bonuses and stock packages play out.
My base salary has been higher than my classmates who joined FAANG since graduating ugrad. I jumped between non FAANG companies, they have been quite loyal. However,they are now clearly in a better financial position than myself.
1. FAANG compensates for institutional knowledge; engineers are rewarded for sticking around. my classmates that started at 100k USD 5 years ago, are now making ~175 base. They have gotten a 10% raise each year.
2. Performance bonuses. Not as common, for those who have a perf bonus the target is 15% of salary.
3. FAANG will give aggressive stock packages to engineers (which has real value from the get-go, unlike startup stock options) My classmates receive an annual stock package of 65-100% their salary.
This effectively bumps their 2018 compensation to between 225-300k USD. They are 5-6 years out of undergrad.
Historically, stock appreciation made a big difference too. (Google doubled in the last five years and quadrupled in the last ten.) Though you can't count on that going forward.
My understanding is that Google tries to pay towards the top of their local market, to get the best talent without diminishing returns. This means a lot of money in the Bay Area, but much less in, say, London, because the market for software engineers is so much weaker there.
(I work at Google, in Boston, but don't know details about how comp is figured)
Google pay is based on the market, not cost of living. So London is not nearly as good a place to be as the Bay, or even Pittsburgh (cheap housing, high programmer wages). I like how this works out with Boston pretty well!
Well, when you've been hearing stories about Googlers for 10 years, you don't imagine that you need "discipline" being a Googler to buy a house.
I may be a little bit naive, but when my friend talked me about it I thought he was going to announce something like 200K or more, because these are the stories we always hear around here.
In the end he decided to not go because he already made the same amount of money and didn't want to move his family to Paris just for two hundred bucks a month. But I don't know anything about bonuses and 10% raises everywhere, or at least he did not tell me.
$200k and up, for a Senior Software Engineer, is something that's only "frequent" in the U.S. (and varying a lot based on specific locations). With rentals costing many thousands of $ a month, significant healthcare costs, a need to have a car for each person, and no safety net.
If your friend is earning around €100k in France and not even living in Paris, then they're in a VERY privileged position. I'd say that €110k in Paris, factoring in exchange rates, CoL & taxes, can be the equivalent to a $200k salary in SV. So it's hardly a downgrade.
The sad part is that a couple decades ago, anyone in the middle class could buy a house, one income households included. Now, property values are out of whack, especially in or near any global metropolis.
google pays well only if they really want you. If you are part of the "pack", there is no need for them to pay you over market as there is an infinite amount of people drinking the google Koolaid that would love to work for them for under market salaries.
There are secondary benefits of working at a FAANG as well that translate to money over time, such as the halo effect on one's resume and the considerable education and training resources available internally at small or zero cost.
This is particularly true of people management. Small companies aren't set up to help people transition to people management whereas FAANGs have a proven track record of doing this successfully. This is why start ups end up with such shitty management. They throw long serving ICs into management roles without support and hope for the best.
Thanks! This is fair and useful criticism. I will update the post.
In the case of the particular person I originally wrote this for he wasn't looking at FAANG, and my impression is that most large companies are not competitive with them. In your experience, is that part still accurate?
I think household name internet companies that aren't FAANG per se will still offer competitive compensation and work life balance. I mean here places like Twitter, LinkedIn, Square etc. judging from my last job search and conversations with people in my network. Working at a large bank or non-tech f500 will probably be a different experience for an individual contributor.
I know there are some aggregators like comp.fyi if you want to take a closer look at some self-reported data.
> all of the fees and carry associated with the fund will be donated to non-profit organizations that enable African Americans to enter the technology industry.
if i were a founder, why wouldn't i be bothered by this? if i'm going to be working monomaniacally to make the a16z LPs rich, i want to be making the GPs rich too. if they're funding me out of the CLF, they won't be getting rich so they won't want to help out as much.