
Ask HN: Web framework choice paralysis and commitment - nomabar
I have been doing web dev professionally for 8 years. I started as I love to make things. I mostly make web apps &amp; APIs.<p>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.<p>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.<p>Question: What language(&amp;web framework) would you recommend I invest in, as someone that enjoys making over the art of programming?<p>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.<p>I have since been looking for alternatives<p>Go: A wonderful language, maybe my favourite, but ultimately falls short where Node does - no mature frameworks, with added verbosity.<p>Ruby&amp;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 &amp; 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! ;)<p>Elixir&amp;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.<p>PHP&amp;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.<p>Python&amp;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.<p>Thanks.
======
cimmanom
I 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.

------
fiiv
Sounds 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
Good 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
Have 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
Based 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 ;)

------
sdiq
Java 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.

