rudyrigot
Joined 13 years ago
Joined 13 years ago
If I were you, I’d try a job as different as you can in a company as different as you can, for the sake of making sure the situation will be different. You might still land in a situation that’s not for you, of course, but that should mitigate the risk that you’d land on the exact same problems.
It was hard for a while on precarious immigration visas, but then we got our self-sponsored Green Card in 2015, and it’s been smooth-sailing since. The Green Card path I chose took many years to prepare, starting far before we immigrated; and tons of continuous hard work to prepare. It’s hands down the hardest thing I’ve ever done.
It’s worked out pretty fantastically for me and my family, so I regret nothing. We became naturalized citizens last year.
Every culture is different and there is none that is for everyone. That’s why it doesn’t make much sense to me that people would want to spend their whole life where they happened to be born, without trying anything else. I think everyone should live abroad a little while, no matter where.
• Engineers in large tech companies are neither better nor worse engineers than in startups on average. They just work on different things.
• Large tech companies are a lot more heterogeneous than it looks at first. I had a great experience with talented and respectful people at Apple, while a friend of mine was in another engineering division also at Apple, and… not so much. It’s so large, it can’t be the same throughout the company. It wouldn’t be surprising that your team is struggling to hire quality talent, but some others have an easier time, for all kinds of reasons.
• But each company does have some common cultural traits you’re likely to find throughout all its teams though. My current company takes a lot about the importance of work-life balance, while Apple told us at bootcamp on day 1 that we’d be working our asses off. In both cases, it turned out true.
So, one FAANG might be wrong for you, but another FAANG might be better. And one team in a FAANG might be wrong for you, but another team in the same FAANG might be better.
One reason I like larger companies is because once you’re in, they’re so large that it’s easy to switch to another role all the while having a lot of insider information about what you’re getting into, way more than if you were to switch companies. But yeah, a lot of the time they want to keep you on one team for a little bit first, so at least they’re getting some ROI on their efforts to find you.
I’ve been a European in American companies where saying “I don’t like that VP” in public would raise serious eyebrows, and I’ve been part of other American companies where saying “the VP Product is a fucking idiot” in public would make everyone laugh. It’s not the first time I hear GitHub fancies itself to be a bit edgy in culture, and I’m personally not into it, but it doesn’t make them hypocritical because some other guy you know, and you need to put in the same bucket, is different.
We were living in the Bay Area a few years ago, and then a couple of years in Chicago itself, I’m very thankful we happen to find ourselves in a more affordable area as this is going on, because everything would have been much trickier...
Not to say that Apple applies their rules fairly (I wouldn’t really know, but I’m willing to trust there are issues). Just that each communication I see from Hey feels entitled and self-dramatizing. It doesn’t feel like they’re helping their own case...
The motivation was that we were on RDS’s highest instance and growing, with jobs mutating the data taking a less and less excusable amount of time.
The initial setup was using just the Octopus gem and a bunch of Ruby magic. That got real complicated really fast (Ruby is not meant to do systems programming stuff, and Octopus turned out very poorly maintained), and the project turned into a crazy rabbit hole with tons of debt we never could quite fix later. Over time, we replaced as many Ruby bits as we could with lower-level stuff, leveraging proxySQL as we could; the architecture should have been as low-level as possible from the get-go... I think Rails 6’s multi-DB mode was going to eventually help out too.
One fun piece of debt: after we had migrated all our major clients to their own shards, we started to work in parallel on making sure new clients would get their own shard too. We meant to just create the new shard on signup, but that’s when we found out, when you modify Octopus’s in-memory config of DBs, it replaces that config with a bulldozer, and interrupts all DB connections in flight. So, if you were doing stuff right when someone else signs up, your stuff would fail. We solved this by pre-allocating shards manually every month or so, triggering a manual blue-green deploy at the end of the process to gracefully refresh the config. It was tedious but worked great.
And of course, since it was a bunch of Active Record hacks, there’s a number of data-related features we couldn’t do because of the challenging architecture, and it was a constant effort to just keep it going through the constant bottlenecks we were meeting. Ha, scale.
Did we regret doing it? No, we needed to solve that scale problem one way or another. But it was definitely not solved the best way. It’s not an easy problem to solve.
Why wouldn’t a qualified American candidate run interference then? One reason: most candidates for this kind of job are educated enough to be aware that the economy and the job market are not fixed-sum, so a foreigner being hired today doesn’t meaningfully change their own odds at being hired tomorrow. It’s kinda like saying that new graduates entering the workforce take jobs away from people in the workforce, when factually an economy grows with more people in it.