4 ms·
I'm one of the new generation of devs to have come into the startup world in Melbourne after Ruby stole its heart, and damn is it a mess and a maintenance night
by bjz_ 9y ago
I'm one of the new generation of devs to have come into the startup world in Melbourne after Ruby stole its heart, and damn is it a mess and a maintenance nightmare. So many production bugs due to nil pointers, missing methods, etc, and a woeful time to be had if you want to start doing large scale refactors and clean up tech debt. Makes me sad that when faced with Java the generation before me escaped towards Smalltalk and Perl rather than towards ML and Haskell.
Thankfully we seem to slowly be turning it around though. If only on the front end, that is - with Typescript, Elm, Flow, Reason, etc. In Melbourne the Rubyists seem to be running towards Elixir hoping it will save them, but having worked on a number of Elixir code bases it seems that while solving some problems it leaves many still standing. :(
- andrew_wc_brown 9y agoI've worked on over 40 Rails web-apps in the last 10 years and what I see it lots of apps built by juniors who didn't even bother to read the most basic conventions of the frameworks which result in bizarre behaviour. At least in Rails if you have to refactor you know what it should be refactored to. Frameworks based in other langs have no concrete conventions and this willfully frees developers to write bizarre over engineer web-apps.
- swat535 9y agoNone of the points you made are specific to ruby. Any language can have technical debt, dangling pointers and so on. I think you might have had the misfortune of running into mismanaged code bases.
- bjz_ 9y ago> Any language can have technical debt, dangling pointers and so on Any language can have tech debt, but I want access to tools in order to help me refactor my way out of that. Working with Ruby feels like building on a foundation of sand with mashed potatoes. It requires a huge amount of discipline to maintain a good enough test suite to combat code rot, and even then, a sufficiently paranoid test suite becomes a hindrance to change (not arguing against tests, just how much extra testing a dynamic lang requires of you if you want to have confidence). You have to refactor incredibly slowly, one small change at a time. Dangling pointers are not an issue in languages like Haskell, and ML. We've had these around for decades. Thankfully most newer languages are banishing them.