5 ms·
> 3. People who talk about "maintainability" of things while clearly never having to maintain a large body of someone else's code. This is the point from your
by bojo 7y ago
> 3. People who talk about "maintainability" of things while clearly never having to maintain a large body of someone else's code.
This is the point from your rant which bugs me the most.
Quite literally due to maintainability my team uses an FP language. It is so easy to pick up code you wrote 3 years ago, code someone else wrote 6 months ago, code the guy who left 4 weeks ago wrote, code 10+ people are working on at the same time, and then continue to maintain that code without fear of misunderstanding the deep complexity that is also associated with it on top of the additional complexity you are about to add to it.
My team doesn't need to waste days doing archeological digs and comprehensions on the 18+ projects we now maintain. We simply grab the code base, modify the code which uses the idiomatic "write small components, build bigger components with those" mentality that comes with writing in a FP language, and then fix the chain of compiler errors along the way until our new feature works.
By attempting to be more precise (through either terminology or code correctness), introducing higher confidence levels (programmer confidence, code operability confidence), and wrangling complexity through well designed idioms (monads, proper effect handling), you end up delivering a large amount of value to your customers which impact their bottom line. Faster feature delivery, lower bug rates, nearly zero risk of data leaks, uncrashable software, maintainable custom software over 5+ year timelines.
I've been in this industry for 20 years now and have seen a wide spectrum of good and bad. Using FP over the last 3 years has definitely moved the bar in the "good" direction a lot further than I originally anticipated, but I suppose YMMV.
- kristianp 7y agoI'm guessing that you're talking about a strongly typed functional language here? ML family?
- bojo 7y agoYes. I didn’t outright say “Haskell” because it seems to draw even crazier comments out. That said, I’m aware not all of my points apply to numerous FP languages.
- gambler 7y ago>My team doesn't need to waste days doing archeological digs and comprehensions [...] We simply grab the code base, modify the code [...] and then fix the chain of compiler errors along the way until our new feature works. "We don't need to read and understand stuff. We just grab the code by the horns and spur it with changes until the compiler stops thrashing. Yeehaw!" There are myriad things that distinguish long-term maintenance from greenfield development. Like transferring application ownership from one team to another, reverse engineering, adapting to the changes in external systems you integrate with, investigating bug reports and performance issues, doing monitoring, etc. etc. If your only concern in "maintenance" is making some changes while avoiding the kinds of bugs that can be prevented by a static type checker, then something seriously does not add up.
- jolux 7y agoIf you would stop thinking of your relationship with the compiler as adversarial and start thinking about it as a tool which guides development I think you might start to see where we're coming from.
- bojo 7y agoI was literally commenting about your point on “maintenance“.
- gambler 7y agoYes, you were. And you effectively had proven the point I made in my root comment. If your notion of large-scale maintenance involves only the problems that can be caught by a typechecker, you don't know what real maintenance looks like. Which means that even your comments about the issues that can be prevented by a type-checker are suspect. Again, the wast majority of claims made about FP on Hacker News right now (even in this thread) were made about Java in early 00s. Almost word-to-word, except some terminology. Unfortunately, back then I didn't have enough experience to spot the issues with those claims and people who did have real experience were mostly silent.
- bojo 7y ago