3,237 karma · joined May 3, 2018
A terrible name is something that is haunt you for the rest of your time at the company. Just have the page links properly managed so that they mention the new name and the old name. In 6 months, no one will care or remember the old name.
Internally, you can refer to it as the old name, and you can keep the filenames as is. It's a pain but that probably isn't worth the effort to migrate.
There was zero sense of privacy and they tried to shove that down my throat, and I vomited it out of my system.
Of course I hate them, but what other choice do I have?
The biggest problem is that the questions are so random and span almost anything.
Will I get asked:
a pthread question?
implement mergesort or quicksort?
implement a Read/Write lock?
implement a smart pointer?
a bit manipulation question?
topological search?
dynamic programming?
graph question?
backtracking question?
What the default timeout for TCP/IP is?
a Java internals question?
best practices about Cassandra?
N-ary tree search?
linked list?
b-tree?
Paxos vs Raft?
What is the access time for an SSD vs spinning disk?
How does Hadoop work?
Design Netflix
various random programming questions, as evidenced by Leetcode's 1000+ questions
It's impossible to know everything and yet this what people expect and ask. I've been asked those questions above over the last 6 years. It's utterly insane the expectations that interviewers have.
I personally also interview candidates, I've done hundreds of interviews throughout my career. These days, I do about one interview a week, and often 2.
My coding question is a simple recursion question, with a for loop and some basic knowledge of data structures. It's not hard, but I look for perfect code. If you can't code a bug-free 15 line function in 45 mins, that's my red flag. I don't think that's unreasonable. As long as the person asks good questions, we work together well, and they can code in a sane way, to me that's a pass. Interestingly, 70% of the people fail the interview because they can't code properly, even after the phone screen. I think because people are expecting a hard leetcode algorithm question, they can't think properly when someone asks them a simple question.
https://www.vocativ.com/underworld/crime/lego-heists/index.h...
Instead of protecting them from it, the kids started to freak out whenever the parents went to the car.
The moral is: you can't protect your kids from anything, and overthinking it rarely works. There is no such thing as perfect parenting where you protect your kid from all problems. Just do your best and things will work out.
The point is that there is an opportunity for the Steve Jobs of health care to come up with a way, a new innovative novel way, for classification of tumors to be improved without needing biopsy. Once we have that, then we can take tests to our heart's content. Right now, the attitude of "we shouldn't have people take tests and detect cancer early because our current method of determining if they are cancerous would make it too hard" isn't acceptable.
Just sitting on our hands on this information and letting people die is the worst decision. We need to improve our technology to get better results, not throw our hands up in the air and say the problem is too hard.
In fact Cassandra wasn't my first choice, but a strongly consistent database wasn't available to us. As I mentioned in another comment, making the very best decision you can given the constraints of your system is what one should strive for. Not stopping at "good enough" because of (poor) intuition that error conditions "probably won't happen".
We decided to go with LWT and eat the latency costs as a trade off to "stronger" consistency, realizing that Cassandra doesn't offer the same strong consistency as an ACID database. Not perfect, but it fit within our SLA, decreased the probability of encountering duplicate values, and if there was an error, it was easier to detect and the user could be directed to try again, vs having a completely silent error condition that would cause a small percentage of our users tremendous amounts of trouble.
I probably won't like the variable names people chose but I won't comment on that because that's "my opinion". I will comment on even the smallest bug I see, because that's what we're paid to do. So line by line "perfection" is what I believe we need to strive for in terms of code quality. Maybe not so much "perfection" but "best practices" might be a better way of stating it. We always need to strive for best practices so that our code is predictably easy to maintain, read, etc.
For me, any code that I wrote more than 3 weeks, I forgot. That's why I comment the hell out of my code. The younger programmers have routinely told me "commented code means the code isn't very good." I chuckle and ignore them and wait for them to hit their mid-30s and older.
I've been in a lot of code reviews where developers push back because it's "good enough". You need to maintain a defined level of quality otherwise codebases go to shit very, very fast.
I was recently told in a code review that a Cassandra read before a write (to ensure there were no duplicates) was "good enough" because a duplicate "probably wouldn't happen very often". Meanwhile, the consequences of a dupe would lead to a pretty bad customer experience.
I pushed back hard and forced the developer to rewrite his entire code. Would "good enough" be okay in this situation? My bar is much higher than this developer and I stand by my decision. We have the luxury of being tasked with solving customer problems and if we only strive for "good enough" every time instead of "the best I can do within the constraints I'm given", then in my opinion your career won't be very successful. We always have to make the best tradeoffs when it comes to time and expense, but the best developers are the ones that come up with the best solution and the best code that fits in a particular constraint.
Test moving your environment between service providers in production.
You should be able to failover from one provider to another, in a predictable way. You should actually do so every few months so that you're well versed in what needs to happen. If you practice this, you will be prepared in case the absolute worst happens.
Does that mean that we should ignore the demands of workers who want a liveable wage of $15/hr in the US? Should we tell them "you're rich compared to most of the people in the world"?
The fact is that we measure "richness" by our immediate surroundings. If we have $50k in savings and we could move to Madagascar and live like a king doesn't mean we're rich, not even in the slightest sense.
I consider someone rich who has the luxury of not working and still maintaining a very good lifestyle. In Silicon Valley you can't do that without substantial net worth.
The reason why we don't consider ourselves rich is because both my wife and I have to work very hard. We love our jobs and don't mind working hard, but we do have to work very hard. My work-life-balance is better than my wife's so I do more of the child-rearing, but I still jump online to finish some work after the kids are asleep.
At the very least this company learned a hard lesson about Disaster Recovery best practices. Hopefully all the up and coming companies reading this story learns as well. Also please remember that a backup that isn't tested IS NOT A BACKUP! I've been in so many situations where backups were corrupted, so part of the disaster recovery is to test the backups and make sure you can really recover.
There are a million different scenarios where their data could be lost and it not be Digital Ocean's fault. It's the company's responsibility to have protected their customers from this.
I worked at a company with no real Disaster Recovery plan. I was told that "we can get the servers up and running within 18 hrs if we had an outage", which not only was absurdly slow but probably an underestimate. Only by the grace of God did we not suffer a real outage but if we did, it was totally the VP's fault for not addressing my concerns.
I think the other tactic to defeat Google is to click on EVERY SINGLE AD you see. It will destroy their ad tracking capabilities and it will also destroy their business since they won't be able to tell what is a good click and what isn't. I've started doing this and I don't think there's anything else that can get them to stop actively violating our privacy.
Let me pay for my Gmail account. Let me pay for good support instead of automated decisions and getting kicked off the platform with no recourse. Otherwise I will render myself useless to your algorithms by changing my behavior so that algorithms won't be able to make sense of it.