@PJextra I didn’t read everything, but from many of your responses about new -> old, past -> future, sql -> nosql and so on i cough’t some pattern that is a little bit worrying for me.
What is your reasoning behind that document is future and sql is past? Mostly it is something that you have consumed a lot of content about.
And if you will look closely you will find that for every 1 post “praising” (because mostly everyone are describing benefits and how it is better than what ever came before) some sql implementations there will be hundredths of posts describing how some nosql db is the best. For every post that “praises” crud there will be many “praising” graphql. Pattern is clear “old” (read: stable) technology does not get as much hype posts, clicks as “new” (read trendy) technology. We have technology/trendiness bubbles.
And you as you self described are somewhat new developer and you are exposed to world, here there are plenty content about some technologies, that might seem as something everyone is praising/talking about and thats the silver bulled, that once it will be finished/understud and what not, will be applicable to all uses cases world will throw at me. Thats rarely is the case.
99.99% that people who currently invest in learning java/sql, will be able to work with these tools for rest of their lives and earn living. It will not go anywhere. I doubt that elixir will go anywhere, but it might get stuck in limbo, where it is one of those niche languages, that after 20 years only dedicated ones know. And if so, i would tell that it is bad. Becase for each good programmer that is developing nice frameworks/tools for elixir ecosystem, there are many more doing the same for jvm (even tho it is “old”).
I doubt there is clear solution how to escape those bubbles i have been victim of similar thinking:
- graphql - don’t get me wrong, its great, but up front design i need to do, and extra maintenance. I personally have worked only in ine project wehere it might pay off.
- reactjs - why bother if now there is next great thing liveview
- seperating frontend and backend in seperate apps - once agian, its rarely is necesity. in most projects where i encountered it, it was premature optimization, becasue we will have multiple clients, what will talk to this one api. Its nice, but f*cking get one client battle tested, to understand your bussiness domain first.
- eventsourcing/cqrs - its great, and i still think that with proper tooling it would beat conventional crud systems in no time, but tooling isnt there, debuging is harder, unceonvetional. It has great pros, but it also has cons, that rarly anyone is talking about.
Everything has cons and pros. Each product, solution might require different aproach and tools. I would suggest no to concentrate on implementation (crud/graphql, sql/nosql), but to try to extract overall patterns. In oop in that sense it is easier, because whole oop revolves around patterns. In fp languages, its wrongly (in my opinion) described that no patterns is needed. there are no patterns only functions. But There are (recursion, fold left, reducer - all of these are the same pattern sort of just in different implementation level).
DDD blue book by Eric Evans is one of the best books on programming there is. Its examples are in oop, but once again oop is just an implementation. Overal pattern is how you think about structuring your app. And if you think fp does not need that, than you are mistaken.
/rant
Hope you will find your middle ground between those worlds. Good luck 