Some bigger cities (such as Edmonton, 1M people) still have a somewhat sane real estate market. In Edmonton a single family detached home averages around 450k CAD, while average household income is over 120k.
In some cases it lasted even longer than that. In 2004 at a Canadian University I was told during the student orientation that CS was not a great choice due to outsourcing.
Its been one hell of a rough go for Heroku lately.
I think you would be insane to start a new project with them today. Which is crazy for me to say, as I was one of their biggest fans for the last decade.
Many many years ago I was hired to convert a Fortran app to C. The first person to try it ran it through a software called "f2c". It worked fine - but the code was totally non human readable so it couldn't be extended later, so it provided almost no value in this case.
Thread safety in Rails is a total pain in the ass. So many libraries out there are not thread safe. I have worked with many large rails codebases and there always are gems that somehow work their way in with major threading issues. I think its a legitimate strategy to run rails apps single threaded and multi process. Not necessarily for all apps or workloads of course.
I came to a similar conclusion years ago. Yes, there are examples of applications that have done it, but they often have very elite engineers. Most teams are comprised of various levels of engineers and its extremely difficult to get right.
I work more in web dev now and I suspect the majority of my team does not know the difference between a thread and a process. HN readers may scoff but these are productive engineers who have build some honestly pretty impressive apps and systems.
I don't regret it at all, but finding high paying roles can be a little more difficult. Its a tradeoff though, because after a few years at a role its often seen how valuable you actually are so in bad economic times you may be the last to get cut.
I also think generalists get pushed into management at a higher frequency. Not something I am personally interested in, but I get asked yearly at least at every role I have been at.
I am at a similar level / write a lot of Ruby. I have pretty mixed feelings. I do enjoy writing Ruby and echo the low friction between an idea and running code.
However, on very large Ruby projects I have inherited I do see a common flaw of a large (often insane) amount of exceptions being thrown due to type errors. Undefined method blah on nil class. Some of these apps have had 100s of developers working on them of various skill levels. For mission critical code paths I am often the biggest proponent of Sorbet.
While my personal projects involve heavy use of meta programming and taking advantage of duck typing, I have altered my writing style and opinions for large projects.
Part of my frustration with Ruby type system could be explained by the fact great Ruby developers are becoming pretty hard to come by and I have often had to work with developers who are picking it up.
There is a surprisingly small amount of senior rails developers. Many who learned it when it was cool, have moved on. There are so many legit companies making tons of money on Rails stacks with 0 intention on leaving. The market is excellent for rails developers and likely will be for the foreseeable future.
If I find myself having a hard time with a big decision, that almost certainly means both sides have pros and cons and its a very close decision. If one side had way more pros and less cons, it would be a pretty easy decision. If its a very close decision, one side can't be much worse than the other. Flip a coin.
This has been my experience. Very painful