Dynamic languages blow
In C# I could simply type a variable, hit dot and blammo I'd have a comprehensive list of all properties on my variable. The Visual Studio parser never had to guess at what properties I had access to. Everything in C# was explicitly architected and I was able to catch tons of silly mistakes just by compiling my code. C# is the best programming language out there with Java coming in at a close second. Weakly typed languages are nothing more than toys. You could use them to write a small application for fun but for any serious enterprise application you need to use a real language.
In my C# zealot days I always championed testing and documentation. I couldn't have been a bigger hypocrite because I rarely wrote tests or documentation. I would either find ways to automate those tasks as much as I could or I would skip them entirely. The result was really bad or non-existent documentation and tests that didn't mean anything.
Node.js makes it so easy to create libraries, or modules as Node prefers to call them. I've always felt that modules should operate as a sort of black box that accepts an input and returns a result. If your module exposes a hundred different functions then you're probably doing it wrong. Modules should be small and agile so the user doesn't have to read a book every time they consume someone else's module. In Node that is exactly how things are done.
A lack of compile-time checking has been the fire under my ass to write behavior-driven tests and the black box nature of modules has actually made writing tests somewhat enjoyable. Tests in a Node module actually mean something; when you have a well-defined scope for your module writing tests to ensure your module behaves as expected is extremely rewarding. Node makes it so easy for others to pull my module down from the package registry, run my tests, and consume my module. For once I feel like writing tests is not a waste of time.
Despite all the little things I lost when moving to a dynamic language, I don't miss it. The power of a dynamic language has been revealed to me and overcoming the few things I lost has only caused me to become a more responsible developer. Writing in the Node environment has reminded me what it was like to have fun programming. For a while there it was starting to feel like my job.