3 ms·
Ask HN: Web framework choice paralysis and commitment
I have been doing web dev professionally for 8 years. I started as I love to make things. I mostly make web apps & APIs.
I have since hit a wall, I am struggling to make things. Not because I am out of ideas, but because I am paralysed by languages and frameworks. I am struggling with filtering and the Fear of Commitment.
I know many think frameworks are a curse, but after years of hand rolling, I want one. It’s a blocker for me wanting to make new things that almost always need auth, emails, and billing.
Question: What language(&web framework) would you recommend I invest in, as someone that enjoys making over the art of programming?
Now I use Node. It has allowed me to build cool things, at a great cost. Having to hand roll a lot of things is insecure and very time consuming when you’re trying to make things quickly.
I have since been looking for alternatives
Go: A wonderful language, maybe my favourite, but ultimately falls short where Node does - no mature frameworks, with added verbosity.
Ruby&RoR: It appears to be on the decline, although it’s hard to see through all the click bait articles. I wish I had learned Ruby & RoR years ago, I was burned by the complaints that it was not fast enough, but nothing I have made has needed to care about the speed! ;)
Elixir&Pheonix: Looks promising, same hype that RoR had when it was growing. Though this is where the Fear of Commitment enters. I know so little about Erlang and the origins of Elixir that this would be a great leap of faith.
PHP&Laravel: My first programming language. Laravel looks like it has come a long way and is extremely feature rich, but the PHP language never sat well with me.
Python&Django: I have never touched a line of Python, I have heard great things them, but this would be a completely fresh start for me, the same issue that Elixir presents, but with a much more mature language and framework.
Thanks.
- fiiv 8y agoSounds like by "mature framework" you actually mean a full-featured one rather than a lighter one? Because for instance Node.js has several mature frameworks (in terms of stability) for doing HTTP servers such as Express. But Express comes with just the most fundamental building blocks and it's up to you to pick and choose what you need to complete the stack for yourself.
- nomabar 8y agoGood point -- I would agree with that. Express is what I have mostly used and loved it, it deals with a lot of the lower level stuff while I was learning my way around developing web apps and APIs. But now with each new project I am faced with dealing with user auth, emails, billing, migrations and what have you, I'd love to transition to something that allows me to focus mostly on business logic.
- fiiv 8y agoHave you looked at Apollo framework (for node) by any chance? I know it's not in your list of interests, but it might be worth checking out. Other than that, I have heard really nice things about Elixir/Phoenix. Everything is a stream so it does depart a bit from the others. Python, PHP and Ruby are all more traditional setups.
- indescions_2018 8y agoBased on impressive performance alone. Rust's Actix is worth a look. If you stick with Node. Take a look at Hapi.js Best of luck ;)
- cimmanom 8y agoI would suggest building a small (not much more than toy) project in each - perhaps starting with a tutorial and then trying to extend it. You can't really go wrong with any of these frameworks, but each one has a different philosophy. One philosophy may better fit your way of thinking than another. That's how I chose Django over Rails a decade ago, and haven't regretted it since.
- sdiq 8y agoJava was my first programming language before moving to Python. Though I have nothing to show for all the years I have been learning programming, about 6 years now, I realise I can easily pick new languages. Just last night, someone posted a link to Pony, a relatively new programming language. Ever being the procrastinator, rather than do what I should always be doing, on my mobile phone in a remote part of Somalia I saw myself almost a third through Pony’s documentation. I wouldn’t have a problem picking Pony. Last week, on a similar procrastinating mission, I saw myself halfway through a Haskell course notes and slides from a UK based university. Picking Haskell seemed also easier for me unlike what I almost always hear. As easy as that might feel to me, I have nothing to show for all the years I have been learning programming. Well, maybe, except for a few Pandas scripts that I occasionally use at work for data analysis and transforming some spreadsheets. And another script for posting data from an Excel file through a certain API – a report we need to share externally. Now, as easy and productive a language and framework as Ruby and Rails are, the perfectionist in me couldn't adopt the same. That seems to be a big mistake I made. Just like you, I followed and internalized whatever was said about Ruby – the negative stuff. I regret not picking Ruby. And just like you, I also seem to be suffering from an analysis paralysis. Ruby and Rails, while I haven’t had the time to teach myself any of the two, they are certainly easy to pick and very capable for whatever tasks you throw at them. Pick them and stick with the two. On the sides, I am currently also dabbling with Elixir/Phoenix and I find it easy to pick. Well, your experience might end up being different from mine. But, life shouldn’t be about what is new and shiny but what makes you productive. Elixir/Phoenix might end up being the language/framework that I will eventually complete developing something useful in but something else, here, on HN might end distracting me for the next few days/weeks. Well, we don’t know that yet. Anyway, don’t be like me, pick something you know and are good at and stick with. You seem to also be experienced in JavaScript/Node. You could also pick a framework within that ecosystem and move ahead with - Express, Hapi, Sails, etc. Anyway, just stick with either Rails and something else within Node. But, you would rather just stick with Ruby/Rails. Within Ruby you wouldn’t have to continue wasting time and effort trying to find out which framework to use. In the meantime, just strike Go, Elixir/Phoenix from your list. They seem to be only there to distract you and make you continue wallowing in the rabbit hole that is an analysis paralysis. Thankfully for me, I do have a non-programming job that pays the bills. At least for now. And were it not my procrastination, I probably would have been a software developer by now – if wishes were horses, they say. However, I think the lack of proper tech opportunities might have been hindering me from make a move. Well, whatever it is, do not be like me and Ruby/Rails should be great.