55 karma · joined May 15, 2012
It's only with Web 2 that we became addicted to offloading everything to central providers. Their siren call was too much to resist and now they have all our data. It wasn't designed to be like this, we can just go back but a lot lack the skills to roll the full stack now sans AWS/Google Cloud.
In my experience, I spend 80% of my time just figuring out how to get the code to run safely and properly and then chugging through the "stack" part of the full stack programmer before I'm even able to run my code at scale. The actual code itself tends to be simple. Sometimes already existing in a very fleshed out and optimized library, sometimes even core to the language itself.
It's really more endemic of more the prevalent problem that what HR thinks programming tends to not be what programmers actually do.
I've been using Rails for 10+ years now and setting up a phoenix app is very intuitive. A lot of "oh this is like X in Rails". IME most of the complexity was around JavaScript and that's changed with esbuild.
However it sets up with very similar patterns to Rails. Something I'd expect as it's creators came from Rails. Usually the differences are specific to FP vs OO.
Admittedly coming in from another language especially with an OO background would be harder as it's a smaller community than Rails and doesn't have 10 years of documentation sitting out there. That said documenting elixir code is much easier IMO, so that is sure to change. Also the scope of FP languages requires significantly less documentation IME.
The only thing vs Rails that I have found somewhat needing more attention in Phoenix is SSO integration but it's there and progressing especially with the Phoenix 1.6 changes.
> I'm a 20 y/o bootcamp grad with no college degree and 6 months of professional experience
Six months experience out of a bootcamp isn't even enough experience to know what you don't know. I don't care what they told you in the bootcamp. IMO it's one of the main problems with bootcamp programs, they're a sort of ponzi scheme for becoming a programmer. It's like learning to swing a hammer and calling yourself a carpenter.
In SF, you'll be going up against BS in Comp Sci grads at minimum, that are probably from an Ivy League or "Public Ivy" type of school, who most likely also have a solid internship and references under their belt and were actively recruited by the FAANG company.
I think your expectations are a bit too lofty. You're gunning for FAANG and you simply don't have the qualifications. That's the harsh reality.
The good news is there are plenty of places around the world that need competent programmers. You should probably return to your home country and target a smaller company somewhere in the EU, that will give you the experience that sets a solid foundation. While you're doing that you'll need to build your online presence, e.g. open source code contributions, open source code repos, blog posts on seemly simple subjects where you pull the subject apart and lay it open for the reader. Basically you need to establish yourself so that when people search for your credentials, they exist and demonstrate clearly what you're capable of doing.
We've all been there. While it can be frustrating, it's not so much different than anything else in life. Hopefully you love to program and will find a joy in your growth as you learn new concepts and ways of applying the languages you utilize.
Best of luck!
Switching to Elixir - learning what OTP brings to the table, e.g. observers, genservers - distillery compiled binaries per OS, negating the need for a lot of the devops complexity, e.g. docker, node, - the switch to esbuild and liveview for less JS cruft - FP transforming of immutable data to more immutable data vs managing state
TBH all of it has been a breath of fresh air.
After that you always make sure test exist before even pondering a push of potentially breaking changes! :P
There are few ways this could be addressed, e.g. separate branches for old gems, and some developers do actually do this but in the end I've noticed these legacy branches and gems just bitrot while the developer devotes their time to the new branch. So essentially to use the gem you have to make the SemVer API jump which then begins the dependency failure cascade dance you mention.
I'm close to starting another new Rails job and I'm not looking forward to the inevitable rails rescue work on legacy codebases, yet this is the reality of a modern Rails developer.
Also I think this upgrade work needs to be factored into "development time" and when you do I'm not convinced Rails is actually faster.
http://mostlyerlang.com/2014/11/19/049-supervisors/
starting at 28:45 although you might want to listen to the whole podcast