7 ms·
One issue is if smart people are more trouble than they're worth. I've seen too many 'smart people' drop in and do a bunch of fancy stuff that no one understand
by rr808 5y ago
One issue is if smart people are more trouble than they're worth. I've seen too many 'smart people' drop in and do a bunch of fancy stuff that no one understands before leaving again because they're 'smarter' than everyone else. I'm still not sure if they were smart or just thought they were.
- vp8989 5y agoEffectiveness at work from what I have observed is mostly about pragmatism and willpower to do what needs to be done in that context. You need some baseline amount of mental horsepower but in most pursuits it's not that high. Really smart people can be some combination of idealistic, lazy or simply in a context that diminishes their willpower. Therefore their smarts don't really "manifest" in that particular context. I've worked with lots of people who I thought were bozos because they sucked at their programming job but they were clearly smart about other things.
- dimitrios1 5y agoThis 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 ago
- 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.
- andai 5y agoThat's the difference between understanding the machine and understanding people (and understanding that most people do not (really want to) understand the machine).
- jimbokun 5y agoIn order to get real value out of a "smart person", I think you need a sufficiently challenging problem for them to work on. Yes, giving them a CRUD app where they build their own frameworks because they're bored and something about the existing frameworks is sub-optimal probably will end up adding net negative value as they introduce complexity all the other developers now need to understand. But if you have a ton of PHP code and running at such scale that you need to create a new PHP engine to optimize all of your existing code and save millions of dollars on your infrastructure costs, a "smart person" just might fit the bill.
- benreesman 5y agoThe original HHVM team were in fact… legends. :)
- ska 5y ago> I think you need a sufficiently challenging problem for them to work on. One important thing to realize is that the challenge doesn't have to be in the obvious place. Having a smart person who is really interested in solving the business problem you are trying to solve will make things better all over the place. Having a smart person who is uninterested in the business problem you are trying to solve and looking for intellectual stimulation in the technical stack - well, if you aren't doing something "interesting" it's probably going to go poorly.
- itoro7g 5y ago
- albrewer 5y agoIn my experience there's a difference between smart and clever, at least when it comes to writing code. Clever people implement solutions nobody else can - they know the tools they're using inside and out and can do amazing things. Smart people realize the things they build must last longer than themselves. They implement solutions those that come after them can understand and maintain. Sometimes those solutions are clever. If the problem domain is hard, then the solution is necessarily clever.
- dkarl 5y agoPeople can be smart and selfish at the same time. I've worked with some extremely smart people who realized that what made work satisfying to them was getting paid to be clever all day. Being smart, they found ways to do that, at the expense of their employers and coworkers. I wasted an hour of my afternoon writing a long and angry screed about my professional experience with functional programming (in Scala) but at the end of the day, sadly, it can be summed up as that, smart people scamming companies for the opportunity to be clever all day. I see mainstream programming benefiting more and more from the influence of functional ideas, so I still think that FP might become the default for professional programmers at some point in the future, at least for some kinds of work, and I think the work I've invested in it has made me a better programmer, but I'm fed up with the kinds of people I've found myself working with along the way.
- benreesman 5y agoIMHO when someone looks at a problem and sees some outlines of mathematical structure and thinks “C++ is overkill performance-wise and I don’t want to take the incremental maintenance burden, but Python is so friggin slow that it matters for even this”, they’ve got a few options. If you’ve already got a JVM in your stack, that’s probably the call. If you’ve already got Cargo in your stack, also reasonable. But if you don’t and are unlikely to, well you kinda go the Haskell/ML route or the Go/Node route. And as much as my personal spiritual home is the MEAN stack, the Haskell/ML route seems to attract more people who know heavier CS than I do.
- yowlingcat 5y ago"Python is so friggin slow that it matters for even this" Why wouldn't they use Cython, any of the scipy/numpy ecosystem, or Numba? "the Haskell/ML route seems to attract more people who know heavier CS than I do" Why is someone else knowing heavier CS than you do a good heuristic for a tool being the right long-term solution for a job to be done?
- benreesman 5y agoBecause I want to work with people more capable than myself for at least two reasons: 1. I’m likely to learn a lot from them. 2. The harder the problem is that the team can realistically tackle the more likely the team is to do something novel/interesting/beneficial/profitable, ideally all at once.
- yowlingcat 5y agoI didn't ask you why or whether you want to work with people more capable than yourself (on that, I'd agree with you, striving to work with people more capable than oneself is generally desirable). Would you mind answering the question I asked rather than an unrelated one? Maybe I can be even more clear than in my original question: What does someone else (who knows heavier CS than you) liking some tool have to do with that tool being the right long-term solution for any particular use case?
- deleted 5y ago[deleted]
- bcrosby95 5y agoThe smart people I know write simple solutions to hard problems. But if you stick a smart person on a boring problem they'll probably write clever solutions for the boring problem.
- daxfohl 5y agoThis reminds me of Dan Abramov's post about identifying when not to be smart. https://overreacted.io/goodbye-clean-code/ https://overreacted.io/goodbye-clean-code/
- smasher164 5y agoOn the flipside, the usual argument around "simplicity" and "readability" is just code for "familiarity". A Haskeller used to composing a bunch of folds has no obligation to transform their program into something readable by Python programmer, unless of course, they were the only Haskeller. But I agree, there's a difference between code that veers towards obfuscation and code that employs techniques someone just hasn't learned yet.
- bydlocoder 5y agoHaskell is much more than folds, maps and monads.
- smasher164 5y agoI agree. I'm just presenting an example where patterns that one camp deems as "too clever" are normal to another.
- sangnoir 5y ago> On the flipside, the usual argument around "simplicity" and "readability" is just code for "familiarity" I found this resonating with my own thoughts towards LeetCode questions, which are at odds with most on HN. Unfamiliarity makes people dismiss them as requiring rote memorization, where's most of them are a matter of figuring out the nature of the problem space, and choosing the right data structure and algorithms
- anm89 5y agoYeah, I totally acknowledge that most of the people I know that like Haskell are probably a lot smarter than me from an IQ perspective and yet if I was running a company I wouldn't hire a majority of them. Most of them seem to lack pragmatism. I think intelligence is as much a choice as it is a built in trait in many ways and the people who like Haskell are the ones who enjoy solving very difficult abstract problems over just getting stuff done. The world needs some people like that but most projects don't.
- outworlder 5y ago> . I've seen too many 'smart people' drop in and do a bunch of fancy stuff that no one understands before leaving again because they're 'smarter' than everyone else. Eh, they are not really 'smart' now, are they? Sure, they may be mathematically gifted or what have you. But if your definition of 'smart' includes the individual's performance when responding to their world around they, they definitely were not :) The 'smartest' (according to my own definitions and biases) developer I know also happened to write the most beautiful and easy to understand code. He could write clever one-liners. He knew better not to.