I totally see your point. I think what's tripping me up is that I'm new to node/JavaScript and coming from a strongly typed world, I'm still writing my apps with that framework in mind. Working with dynamically typed code requires you to think about your application differently and I'm just starting to understand the patterns.
Re:Farewell Node.js
by notduncansmith on Friday July 04, 2014 @11:07AM
(#7989041)
I understand that. There certainly is a learning curve, and I don't pretend that all the Node stuff I've written since day 0 has been awesome - I've churned out my fair share of nasty, unmaintainable garbage because I abused the freedom that Javascript gave me.
One tip: rubber ducking is really valuable. If it takes more than ~30 seconds to explain whats going on in ~10 lines of code, then you probably should do some abstracting.
At my shop, we emphasize making obvious (if somewhat verbose at times) names for functions, so that it's pretty easy to intuit what arguments it takes. Also a naked function (e.g. "foo(bar)") will always be defined in the same (<100 line) file, so it's not hard to find it, or in a module (which is a Cmd+P away).
All this to say, while I agree with you that strong type systems mostly eliminate this pain, it's not exactly "painful" in Javascript either.