You could just like, say what you mean rather than try and launder the opinion through insinuating things about the people involved.
If someone is passionate but that makes them more productive, why would that be a bad thing? At the end of the day, they’re still more productive?
Regardless, there’s nothing to indicate that the folks involved are new, or “more passionate” or whatever. They’re Google engineers doing their job at Google. Google has a bunch of Rust projects, some large ones too, that have been going on for years.
It's bad because people that write C++ for a living got all the joy and happiness sucked out of them and since Rust is in a similar playing field regarding performance, they can't say that they need to use C++ for performance reasons and therefore would admit that all the pain and suffering would be for nothing if they let one good word regarding Rust stay uncontested on the Internet.
I don't even like Rust that much but it's like Stockholm Syndrome is a requirement to have a positive opinion regarding C++.
So according to that "specification" no optimization is allowed. Since that would almost always change the "heating behavior" of code. Therefore, it is absurd.
None at all, even out of order execution. For that matter, executing the same code on different hardware is right out. Every program must be implemented on single-purpose hardware, and you can't even manufacture two of them.
Yet the compiler writers care only about the language spec, and you can bet that failing to optimize this as dead code would be considered a compiler bug.
This goes not only for Java compiler, but many other languages as well.
What would "leave alone" even be? There's no "default" state of performance of Java code; it would be ridiculously stupid for there to be something saying that, say, "a+b" for int type values has to take at least 1 nanosecond or something. And you can't use big O complexity here either - the int type has a maximum of 2 billion, and thus a loop over it is trivially O(1), just with a potentially-big constant factor. (or, alternatively, the loop was sped up by a constant factor of 2 billion, and optimizing compilers should extremely obviously be allowed to optimize code by a constant factor)
No, that code has no side effects. The implementation is free to produce whatever side effects it wants or needs as part of execution, but that is absolutely none of the compiler's business.
Not sure if being facetious, but FWIW you can't really rely on these. Next year you'll get a much faster CPU and memory and the timing will be all different. Or, tomorrow you run it while encoding video on the CPU which eats 99% of CPU, and it's hundred times slower.
I'm not an accountant but they should be able to capitalize expenses incurred when it's an investment, ie, since it's not really a normal expense profit should not be affected.
I'm not sure how that works with R&D engineering salaries - that might impact their profits even if it's an investment.
I feel like a large technology company should spend a large but consistent amount of money on R&D - I don't like wild swings either way.
Also not an accountant, but i believe you two are talking differently about gaap and nongaap profit. The latter can immediately write of R&D, where as GAAP has rules around deprecation of investments.
>Why does everyone these days hate consumer choice and market diversity so much?
A lot of people got into CPU topics because Apple created their M1s and they think that ARM is some unparallelled thing that every1 must adopt and that Apple's design goals are most important (other market segments are irrelevant)
Cuz, I use git gui and I switch to cli like a once a month at best, so I dont really remember the commands nor see the value in putting effort into it
It feels like people fixated on git details think everyone has the same work flow as they do, so for them it feels like git cli proficiency is really needed.
It is like asking about vsCode shortcuts (it'd probably be even more useful, since you spend more time in your editor)
Id really prefer being asked about algos, compilers, web dev, system design, whatever heavily software related (even religious topics like SOLID) than boring tools which can be used in various ways
> so I dont really remember the commands nor see the value in putting effort into it
curiosity? knowing everything you can about the world around you? having used what is possibly the most critical piece of software for working with other people that you encountered some rare exception to common workflows that required you to learn more about the plumbing?
> It is like asking about vsCode shortcuts (it'd probably be even more useful, since you spend more time in your editor)
My editor isn't vscode, so vscode shortcuts wouldn't be helpful to me, the interviever. But again, it's about ability to work with others, the demonstration that you understand systems that you could get away without knowing. You're right, you can be productive while understanding nothing about git, that doesn't mean you're good, or competent, just productive. I don't want to hire people who can write thousands of lines of code, I want to hire people who can do the same in just 100 lines.
> than boring tools which can be used in various ways
that's really what it comes down to isn't it. It's not interesting to you so you don't want to invest the time in learning it because it's boring. I doubt anyone would agree knowing fewer things is better, so I cant help but read this as sharpening my ax is boring, so I just don't do it.
> > so I dont really remember the commands nor see the value in putting effort into it
> curiosity? knowing everything you can about the world around you?
There is far more out there to learn than I have time and energy to learn. "Here's something you can learn" does not even begin to reach the bar of "I should learn this".
> having used what is possibly the most critical piece of software for working with other people that you encountered some rare exception to common workflows that required you to learn more about the plumbing?
With one exception, everywhere I have worked has not used git. The one exception used it for one or two years. I know more about four other version control systems than I do about git.
And, since you're talking about learning to use the most critical piece of software for working with other people, and chewing out the GP for not wanting to invest the time... why don't you begin your sentences with capital letters? Written English is one of the most critical pieces of, not software exactly, but at least "tech", for working with other people.
You're right not starting with capital letters really detracted from my point and made it much harder for you to understand my meaning and intent. I'm sorry you had to endure that struggle.
But I'll disagree that English is that important to working with others. I believe that you're confusing English, with being able to communicate ideas and intent.
that's a fair point but i valud people who value the cli over guis. not that you can't use a gui but its much better to know what its doing under the hood.
>its much better to know what its doing under the hood.
I agree when it comes to programming langs, libs, compilers and in general computers. Because knowledge of those things significantly affects your output (code)
But git? I treat it the same way I treat email client, power point or chat app used at work.
Hell, I could probably benefit more from high power point skills than high git skills.
I believe his point is you're part of the issue with interviewing as well. People design arbitrary trivia for people to answer and won't hire unless their workflow overlaps yours.
For example, someone is hiring a chef for their restaurant:
Q: "What is the difference between X local priduce supplier and Y local produce supplier?"
A:"Where I work we had an exclusive relationship with X supplier so we never used Y supplier."
Q: "Hmm ok, tell me the last fancy meal you cooked at home."
A:"I spend all day cooking for my job. At home my spouse does the cooking because they really enjoy it."
Q:"Ok thanks no hire."
A:"In an executive chef with great credentials and experience. Do you want to ask me about and evaluate me on my actual job?"
Q:" No thanks. I want someone who has the exact same experiences as I do. And I once spent a long time evaluating suppliers and found a better one. And I'm single so do all the cooking at home."
And overall I don't mean to isolate you, but every time I see someone say they don't have extreme coding questions, they instead fall back to using the most non-representative arbitrary signals for decision making.
I have a busy life. I don't really code outside of work any more. I do woodworking or something else. The newest code you'll see from me is probably when I tried to make a game using Roblox just for fun for the kids. That's been a while. I don't have a github account and that's on purpose. I don't do open source work any longer and the most recent you'll find is probably 20 years old.
Code from work? Not gonna show that to you or you're not gonna hire me because I break NDAs ;)
Personally I do like the git one tho. Even if you use a GUI (unless it renames things it really shouldn't) would allow someone to answer what the conceptual differences are between pulling and rebasing!
FWIW: pull is a combination of fetch+merge, so not a rebase at all. They can be similar, in case your pull and rebase both happen to result in a simple fast-forward operation, which is literally just "moving a label" (or in 'real' terms, changing a commit hash inside one file in the .git directory).
If someone has never used git, they probably used <somethingElse>. I would hope they're witty enough to ask the interviewer back: "I dunno, never used git, we use Rational ClearCase. Can you tell me what the difference is between a reserved and unreserved checkout and when would you use each?"
Probably not in an interview situation, especially if they need the job, but would be fun!
Just coz I don't code for fun any longer, what tells you I don't solve problems on my own (both at work or at home)? Getting into woodworking required a lot of figuring out new stuff, including the part of actually doing something with my hands. It was particularly fun because it was new and needed figuring out. Figuring out why the heck the last distro upgrade decided to not be able to find my LVM volumes on software RAID and I thought I had lost all my data was also a fun problem to solve. It required zero code. But it required a lot of debugging and interpreting things I don't know the actual implemtation details of. Something I see a lot of devs being bad at. Fixing bugs. I.e. investigating unknowns.
> "I dunno, never used git, we use Rational ClearCase. Can you tell me what the difference is between a reserved and unreserved checkout and when would you use each?"
No, because having "grown up" using git, I can't even imagine using something as insane as the model that ClearCase has decided to go with :D
> Probably not in an interview situation, especially if they need the job, but would be fun!
I'd hope you'd be able to, maybe not quite the way you asked it, but having a conversation where you can demonstrate expertise, even if it's not my expertise or favorite is the goal of the original question. (if asked by me)
> Just coz I don't code for fun any longer, what tells you I don't solve problems on my own (both at work or at home)?
Your answer obviously. Saying "I don't write code for fun" would instantly drop you into the do not hire category for me. But saying "I don't really write code in my spare time anymore like I did when I was younger, I can't really talk it too much detail about [work project], but I can discuss this personal project from years ago. But these days I'm using all my spare personal time getting good at wood working, that's now accounting for my debugging time"
Knowing a bit about wood working, I'd ask so many questions about that. Because for me, wanting to build things, and being interested in getting better at the stuff your building is the signal I'm looking for. Which, as you've hinted to is a big part of what woodworking is. Giving that answer, is also likely put you higher into the clear hire category for me, because it would show that you're able to get good at anything you want to.
You don't understand the rational behind that. If you'd kept reading, you'd have learned that talking about woodworking would easily put you into the hire category.
No, because having "grown up" using git, I can't even imagine using something as insane as the model that ClearCase has decided to go with :D
Let's reverse things: If I was interviewing you and you gave me that answer when I asked about ClearCase, that would squarely put you in the no-hire bucket ;) "Young guy that just refuses to even try to think for himself, instead of making some guesses based on non-perfect information and assumptions, which he will clearly label as such." That's a really big one I look for. Labelling assumptions.
having a conversation where you can demonstrate expertise, even if it's not my expertise or favorite is the goal of the original question
Ah, so then, without Googling :D, what's the answer to the ClearCase question? And yes I'd love to have a conversation (in an interview situation) about what's good and bad about how ClearCase does it after I tell you vs. what git does.
Also FWIW, the original commenter made it seem like he asks these questions in the way we've heard many interviewers ask them. You either know the exact answer, almost word for word, that they expect to their trivia question or you're out.
Saying "I don't write code for fun" would instantly drop you into the do not hire category for me
If I really needed the job I'd probably try to be less 'feisty' in my answer but if I was just casually looking and you asked me that question, the paragraph about woodworking and the almost data loss might have been exactly what I would say as a "reverse interview question" so to speak, to see if you are stuck on your one exact way of thinking or if you can appreciate that everyone's situation is not the exact same and you adjust.
E.g. if you insist that coding for fun after work is the only correct answer, I know we'll not get along and even if I get hired after all, it won't be fun. You'll probably have/come up with your one way of how things have to be (done) but I have my own. I can't stand micro-management, I can't stand having to rush something because someone else screwed up and sat on something that was known for months and then they come to you and basically say "I need this, I need this done this way and I need it 'yesterday'", I can't stand being judged by just a bunch of numbers like "how many hours of coding do you get done outside of work" (interview) or "how many PRs per day do you merge" (work) by someone that literally knows nothing about me except these numbers.
I also like to do this, and I think it's absolutely wonderful for having a conversation. I've never seen a downside to this and I've never had anyone who didn't have something they wanted to share.
I think it's a fair question. I would never not hire someone over not knowing that particular flow though.
Also, I've never had any developers I've hired not be able to learn it quickly. The fact that they don't know it does tell you that they're either not rebasing or not using the cli. The discussion around those process topics are more interesting to me than them not knowing it to begin with. For example, "well what is your process around git usage in general?" etc, "how well do you know the cli?" etc. Interviews are all about conversations.
I would tell them they'll learn the cli git if they join my team. Maybe that's not something they're into? I guess that's part of the "fit" of a team.
At one point there was lots of discussion regarding rebasing in general on our team and another shop. This blog post came out of that. I know many people who feel differently of course. I do expect seniors to have an opinion on the matter either way I guess.