- Mar 3, 2021
- Reaction score
- S. Florida
Dev since the 90's. Learned C in high school. Got a Computer Engineering degree (and a Physics degree because I wasn't sure what I wanted to do). Worked for a long time at a University writing random stuff to support research, which got me a lot of experience with a wide array of languages/tools/etc. These days my title is "Senior Systems Architect" at a relatively small startup and my job involves less coding and more writing documentation, trying to teach developers how to build reliable services (most of the last decade of my career has been vaguely "SRE" type work whether I had that title or not), reviewing code, debugging the stuff that the junior devs can't figure out, and helping the company navigate security/compliance things like SOC 2.
Most of my work coding (including the current job) has been in Python and Go (plus a few years of hardcore Perl back in the 90s and smatterings of pretty much every other language that I needed for research tasks). On my own time, I'm a big functional programming nerd and I particularly love Erlang (RIP Joe Armstrong--great guy to have a beer with) and have been using that for projects for more than a decade now. I've been learning Rust as well. I don't like it the same way I like Erlang, but I'm excited about how it seems to be impacting the industry (if you're thinking about learning C++: don't. Learn Rust instead. Even if you have to go back to C++, learning Rust will teach you to the way you *should* be writing C++ and you'll be a better C++ programmer).
Since I'm an admitted Erlang fan, I'm probably biased when I suggest sticking with Elixir (which essentially runs on top of Erlang). I'm not crazy about Elixir syntax (I was never a Ruby fan) but the foundations it's built on are great and the tooling and community around Elixir are top notch right now. Phoenix, LiveView, and Nerves are all amazing. It's not that widely used and you won't see a million job listings for Elixir programmers, but there are also a lot fewer Elixir programmers out there so you have a better shot at the jobs that do exist and any company that's working in Elixir is probably a really interesting place with a better than average engineering culture. If you learn the Erlang/OTP fundamentals that you'll be exposed to writing non-trivial Elixir apps, you will have a much better foundation for building large scale reliable systems in any other language that you switch to later.
Thank you for these insights. I taught myself some Ruby a few years ago to prepare for a bootcamp I never ended up signing up for so I'm not averse to diving into Elixir. Not only does it have some really successful implementation but as you said a great community around it.
Also being able to watch my buddy's workflow has brought a lot of the abstract down to the tangible. So I think I'll pursue that rather than the much larger rabbit hole of JS and the numerous related frameworks and trying to reign in an effective roadmap on my own.
Not that they're insurmountable or that I'm afraid of continuous education (an obvious component of this work in general) and I'll still develop a rudimentary working knowledge of it as I assume I will invariably run into it in a real-world setting at some point. And if for no other reason than to further develop my understanding of fp vs oop at large.