6 ms·
This has been my exclusive experience with all the "smart" FP developers who just couldn't help themselves into dropping FP libraries or concepts all over our n
by dimitrios1 5y ago
This has been my exclusive experience with all the "smart" FP developers who just couldn't help themselves into dropping FP libraries or concepts all over our node.js serverless backend every chance they could. One even quit because he couldn't use purescript on the frontend.
Had to show another the door because he was so disgruntled that we were coding in a paradigm so beneath his intelligence that his toxicity and moping permeated across the entire team.
Like dude do you realize what we are doing here...
If they were that smart I don't think they would have ended up here next to me programming CRUD backends for a mobile app.
- AceJohnny2 5y agoSounds like a type of Bikeshedding: providing contribution (that's more noise than value) just to prove you're contributing. https://en.wikipedia.org/wiki/Law_of_triviality https://en.wikipedia.org/wiki/Law_of_triviality
- cogman10 5y agoA smart dev is someone that learns new paradigms and concepts and the applies them only where they make things easier to understand/maintain. It's not enough to learn about higher kinded types, you've got to know when forcing them into a place is a bad idea. I've seen a bunch of devs that can't help but write unmaintainable code because they learn a new programming concept and decide to shoehorn it in everywhere. This happens even with basic concepts like generics. The same thing happens to devs that aren't curious. If they never learn newer programming concepts then every problem looks like a nail and inheritance is the hammer. Those systems equally become unmaintainable because clearer programming paradigms would make the code more readable and maintainable.
- imoverclocked 5y agoContrast that with walking into a codebase in a statically typed language that uses String as the predominant type with little to no effort spent on sanitizing the data in those Strings. It’s understandable in pieces… but also really hard to scale/refactor/replace after it has grown enough.
- cogman10 5y agoI think I covered that case in the end of my comment. > The same thing happens to devs that aren't curious. If they never learn newer programming concepts then every problem looks like a nail and inheritance is the hammer. Stringly types or the overuse of Dictionary/maps in a statically typed language are extensions of this concept.
- e12e 5y ago> A smart dev is someone that learns new paradigms and concepts and the applies them only where they make things easier to understand/maintain. I think we put a little to much stock in "smart" developers. What you describe sounds more like a "wise" developer - as in "a clever developer knows how to map-reduce, a wise developer knows not to put it in a fruit salad"...
- cogman10 5y agoIMO, there's no difference. There are few concepts in programming that are really unknowable or ungraspable. Anyone that can program can misunderstand and misuse programming concepts. The only wisdom is asking "should I"? And that, to me, is being smart and cleaver. Cleaver people don't write hard to understand/maintain code. Cleaver people write code that anyone can come to and understand. They write elegant code.
- duxup 5y agoFlexibility + smart is the ultimate smart. It’s hard enough to figure out who has smarts, let alone real flexibility:(
- imcotton 5y ago> If they were that smart I don't think they would have ended up here next to me programming CRUD backends for a mobile app. Good for him.
- whatshisface 5y agoI have had a hard time figuring out how to phrase this, but I think the problem is that everyone wants to be smart, and sometimes that subconsciously gets turned into "smart people are better," but what we really want other people to be is aligned with us. How capable they are is just the length of the vector, which could even point in the opposite direction making intelligence detrimental.
- upwardbound 5y agoAgreed. You might be interested in reading about AI alignment which is this concept applied to non-human intelligence, and like you said the same principle holds among people too. https://en.wikipedia.org/wiki/AI_alignment https://en.wikipedia.org/wiki/AI_alignment
- allemagne 5y agoThen is the goal of "preventing bad AI outcomes" at any level just a bit absurd? Or at least as absurd as "eliminating alignment issues among humans", or maybe even "bug-free code" if you apply the principle towards relatively simple programs?
- upwardbound 5y agoIt is equally challenging as both of those examples, but it's very very important so it's worth working on despite the intractability. In terms of alignment among humans, most (but not all) human governments agree on certain principles, which are encoded in international law and negotiated within the United Nations. E.g., most (not all) people agree that torture and slavery are unacceptable. Thus, it is possible and important to get AGI to abide by these high-level human values. E.g. if an AGI system is put in charge of maximizing the GDP of a nation, it should do so in accordance with generally recognized principles of human rights and human dignity. There's certainly a lack of agreement among nations but at least we mostly agree on some things and getting AI to agree with us on the things we agree on is important. If you like podcasts, here's a great podcast episode which explores a philosopher's perspective on how to make moral decisions (e.g. should abortion be legal) in a situation of moral uncertainty: https://futureoflife.org/2018/09/17/moral-uncertainty-and-the-path-to-ai-alignment-with-william-macaskill/ https://futureoflife.org/2018/09/17/moral-uncertainty-and-th...
- ndneighbor 5y agoAs someone who was a little misguided in my early programming career, I think what attracted to me about the FP community is the general enthusiasm that they have in their craft. I don't think it's about the axis on whether if someone is "smart" or not, but if the problem space is interesting enough to devote a whole career to.