8 ms·
The 'No True Programmer' Fallacy
- skrebbel 11y ago> And let’s not kid ourselves, very very few people are programmers at the level of a Linus Torvalds, Peter Norvig or Fabrice Bellard. Imagine them telling you that you’re hopeless and you’ll never really get it so you might as well give up now. I think this is a great point that deserves repeating.
- santaclaus 11y ago> very few people are programmers at the level of a Linus Torvalds, Peter Norvig or Fabrice Bellard. I never really thought of Peter Norvig as a 'programmer' in the sense of Linus Torvalds -- I always lumped Norvig more into the high minded computer scientist camp. It seems like the criteria by which one judges success in the two areas are very different.
- jacquesm 11y agoRead some of Norvigs code and tell me he's not a programmer, his stuff is some of the most elegant and efficient that I've ever seen.
- teacup50 11y agoPutting programmers on a pedestal fits with the YC culture of marketing via lionization of technology personalties, but it's counter-productive if your aim is to actually grow in the field. Hero worship blinds you to two simple facts, in almost all cases: - They're not doing anything you couldn't also do if you worked at it as hard as they have. - Like everyone, they're fallible, making mistakes, and may even not deserve the hero worship being heaped on them. Until you've worked as hard as they have to reach a sufficient level of understanding, you're not going to have as strong of a critical eye for where the erstwhile hero is doing it wrong. Better to put no-one on a pedestal (least of all yourself).
- michaelwww 11y agoI'm sorry to disagree but you're wrong. There are better programmers than I, that no matter how hard I work I will never be as good as. Not everyone can be a Mozart or Mozart wouldn't be special.
- jstuxx 11y agoIt's not as black and white as you put. Linus may be great at writing operating systems kernels, he may be better than you or I are at it but he wouldn't be as good at designing machine learning artificial intelligence algorithms, if we had to put him in the shoes of the developers at Google which run the world's largest search engine he wouldn't now be objectively the best, neither would the Google developers do to well if they had to maintain the Linux kernel. Same thing with Mozart, he is one of the best composers in his genre of music but there are other genres as well.
- teacup50 11y agoYou'll never be as good if you think of people this way.
- jacquesm 11y agoI'm not putting him on a pedestal at all. He's by objective standards simply one of the best programmers that I know of, just like Usain Bolt is an extremely fast runner.
- teacup50 11y agoThat is, by definition, a pedestal. It's not a useful metric by which to approach the world.
- jstuxx 11y agoLinus Torvalds isn't really something that great. He copied an existing kernel design which had a full open API specification, it's not like he reverse engineered MS-DOS whose API was fully closed off and secret. Linus didn't bring anything new to the world, Linux is a clone of UNIX, everything that has been added to Linux was originally developed by Sun or BSD developers and then cloned for Linux. A good programmer in my opinion is not someone who can code in C and ASM and then brag about how he/she doesn't use C++ or whatever. A good programmer is also a designer, who can bring a new design to the world which will still be used 50 years later and even after the death of the original programmer. Thus Ken Thompson, Dennis Ritchie and the others should be in the list of the best programmers of all time not Linus Torvalds.
- kisstheblade 11y agoSeems to me the article is fighting some kind of giant strawman. I myself haven't experiences this kind of attitude. I really don't get what the point is, that some people have ego problems and hold pissing contests to see who is the most "awesome programmer"? Well that's a different thing, kind of "who's the best". Well for sure if you ask people in an office what their job is then I don't think that a banker who creates complex spreadsheets calls himself a programmer per se... Even though he for sure programs a computer. I would maybe categorize people in two categories, those who enjoy programming for itself (learning different languages and technologies) and those who use it to get some specific task done. This of course has nothing to do with being a "true programmer" :)
- jacquesm 11y agoIt's a thing I keep running into over and over again. I'm really happy that you haven't and that for you personally this is not an issue. Unfortunately your sample of '1' may not be representative. http://arstechnica.com/information-technology/2012/09/is-it-true-that-not-everyone-can-be-a-programmer/ http://arstechnica.com/information-technology/2012/09/is-it-... http://blog.codinghorror.com/please-dont-learn-to-code/ http://blog.codinghorror.com/please-dont-learn-to-code/ http://programmers.stackexchange.com/questions/163631/has-not-everyone-can-be-a-programmer-been-studied http://programmers.stackexchange.com/questions/163631/has-no... https://news.ycombinator.com/item?id=5302157 https://news.ycombinator.com/item?id=5302157 And many many more besides. I wished it was a strawman, then I could have simply not written the article.
- tezza 11y agoWell I'll add my sample size to make it a sample of 2. I don't really see people being told they cannot code. I see them being encouraged and encouraged... And they give up. Because coding longer term often is a Temperament thing. The person learning.has to persevere banging their head against a brick wall ( their own skill, the lack of feedback from computers ) day in and day out. That's not for everybody. I am bemused that coding has such a mystique when in reality coding is something akin to metalwork combined with plumbing. Not everyone wants to be a plumber either, but most people could do a reasonable job if given a crash course and some context to use it in
- deleted 11y ago[deleted]
- inlined 11y agoThis reminds me a lot of a friend of mine who is a brilliant designer and also very technically adept. She couldn't build an operating system, but she could build a responsive website in 1/20th the time I could. Yet she's asked me "Am I not technical? I'm getting interviewed as a non-technical founder". This "hard core" massochim pissing contest really needs to stop. It feels like we've bonded with peers who also felt excluded growing up and we've turned this exclusion into a rite of passage rather than distancing ourselves from it.
- icebraining 11y agoWell, playing Devil's advocate, is the "technical" in "technical founder" a description of the person, or of the role? I mean, if she starts a tech company with someone, what will she be doing all day? It seems to me that designing the company's website, while doubtless a technical task, would only take a small section of her time. If she does non-technical stuff the rest of the time, is she really filling the role of a technical founder? This isn't a slight at her, just a difference in what we understand the "technical" to mean. I'm not sure I'd consider even Linus Torvalds a "technical founder" if his role involved almost no programming.
- deleted 11y ago[deleted]
- greenyoda 11y ago99% of technical co-founders couldn't build a working operating system either. It's a very different set of skills from building a web or mobile app, and requires a lot of knowledge of how hardware works - interrupts, memory protection, device drivers, etc.
- johw 11y agoFrom my observations, the 'No true X' Fallacy comes into play when a person identifies himself with his skill...it becomes his identity so much that if he encounteres someone better at "his" skill, he feels his identity threatened. This arises when the person does not really have a lot of properties associated with his identity. I saw a lot of people who were really insecure in other areas of life besides the area where their skill applies. The insecurities vanish really fast as soon as this skill is seen only as skill and the person identifies its identity with the proper properties like values, e.g. "I am friendly" instead of "I am a true programmer". Therefore I cannot imagine this being a healthy discussion. For the ones interested in how to get a better identity and get rid of insecurities, take a look into steve andreas book "transforming yourself". You will also learn the basics of Neurolingual Programming (NLP) as a side effect
- dozzie 11y agoIf you will learn NLP as a side effect, I would avoid the book as a plague. If the author puts such a big lie as NLP, who knows what else is false in the book?
- johw 11y agoI do not know what experiences you made so that you think NLP is "such a big lie". It is a toolbox of methods which generally do work. Many of them are applied in behavioral therapy, which is proved to have an outstanding effect on depression (as one example). The nice thing is that you do not have to study psychology for that, but have simple methods, which are almost common sense, to deal and/or transform most psychological issues.
- dalke 11y ago"..generally do work". If that were so, then could you explain the section at https://en.wikipedia.org/wiki/Neuro-linguistic_programming#Scientific_criticism https://en.wikipedia.org/wiki/Neuro-linguistic_programming#S... ? Pulling three quotes from it, "controlled trials failed to show any benefit from NLP", "Numerous literature reviews and meta-analyses have failed to show evidence for NLP's assumptions or effectiveness as a therapeutic method", and "Among the reasons for considering NLP a pseudoscience are that evidence in favor of it is limited to anecdotes and personal testimony". What evidence was enough for you to conclude that the methods "generally do work"?
- jkot 11y ago> But that’s total nonsense. It’s like saying that there are only two kinds of people when it comes to swimming, those that can learn how to swim and those that can’t It is a career advice. While most people can learn to swim, professional swimming is completely different level. If my friend is going to waste years of life and thousands of dolars to study wrong field, I would be very bad friend not to warn him. BTW: I really wish someone would have told me early I suck at math and there are no jobs in physics. That would have save me a decade of my life.
- labuan 11y agoThe difference being that programming is not very competitive. You can have a very successful programming career without being or, more importantly, being considered a good programmer.
- dalke 11y agoAs an ex-lifeguard, when you talk about 'career advice' I think you are referring to professional competitive swimming as a career. I tried out for the swim team, but endurance and strength needed to be a lifeguard aren't the same as competitive speed. A lot more people are professional lifeguards than professional competitive swimmers. I think most people can train and qualify to be a lifeguard - otherwise lifeguard pay would be a lot higher. It does not cost that much to become qualified as a lifeguard for someone who is already a strong swimmer. There are also other fields, like professional diving, where swimming is an important component, though diving does require more expensive training. I think this ties back to the original essay - there are many professions where knowing how to swim is critical, but the specifics differ, and the same is true in programming.
- hueving 11y agoDo we call people that put together chairs structural engineers? Do we call baristas chemists? Baseball players physicists? Words exist for a reason, and using a spreadsheet does not make you a programmer. However I can already see that programmer is being diluted to mean anyone proficient with a computer. What term should we use for people that can write software? 'Software engineer' feels like overkill for writing small self-contained scripts.
- joonoro 11y ago> What term should we use for people that can write software? I don't think there's a need for a word, just as there is no word for a person who can swim (swimmer implies they do it regularly) or a person who can assemble IKEA products.
- BerislavLopac 11y agoSo you're saying that someone writing a small self-contained script is a programmer, while someone who constructs a complex, multi-layered spreadsheet with complex functions, graphs and formatting isn't?
- jstuxx 11y agoSoftware developer is more than good enough in my opinion. However I've encountered two types of programmers, there are those who contribute new ideas, new algorithms, solve new problems, find new, more efficient, safer solutions to existing problems, etc. Then you have the other type who just write glue code between different frameworks and libraries which someone else wrote, they never write anything themselves but download third party packages from Github or whatever to accomplish their tasks. I wouldn't call the latter "software development", coding or scripting would be a better word and yes anybody who is proficient with a computer can code or script but not everybody can be a software developer. It's similar to how assembling your own flashlight, or even assembling your own computer does not make you an electrical engineer. "Real programmers do not reinvent the wheel" is an overused cliche which has been diluted to mean anyone who does anything other than gluing together third party libraries. The cliche itself does not make sense since the wheel is one of the reinvented technologies in existence, if we hadn't reinvented the wheel we would still be using logs.
- Dylan16807 11y ago>If you say someone isn’t a real programmer then you’re falling right into the No True Scotsman fallacy, where say making a spreadsheet is ‘not true programming’ because ‘No True Programmer’ would use a spreadsheet to solve a problem. But in my eyes being able to use a spreadsheet is already one step up the ladder and it does make you a programmer. That's overcorrecting. Spreadsheets are a huge category. You can perform programming activities in spreadsheets and you can perform non-programming activities in spreadsheets.
- InclinedPlane 11y agoGatekeeping this profession seems overly ridiculous considering how excessively poorly we all are at practicing it. What is that saying about people yelling the loudest when the differences are smallest or something? It strikes me as some sort of compensation mechanism. Most of our code sucks, just really, honestly sucks. The number of software projects in history that have been done to the best capabilities that time and money would allow is an appallingly low number. Almost every software development effort involves a disturbing amount of half-assery. The amazing thing is that despite this it's possible to produce things that work and have considerable value. But there are so many ways we could do better, I wish more people would concern themselves with that rather than trying to ride the bleeding-edge of coolness or to prop up their personal identity as a "legitimate programmer" by playing the exclusion game.
- nazri1 11y ago> There are even studies on the subject to prove that there are ‘two kinds of people, those that can program and those that can never learn it no matter how much effort they put into it’ If you're referring to the "The Camel has Two Humps" paper then perhaps you'd like to know that the authors retracted their claim: http://www.eis.mdx.ac.uk/staffpages/r_bornat/papers/camel_hump_retraction.pdf http://www.eis.mdx.ac.uk/staffpages/r_bornat/papers/camel_hu...
- michaelwww 11y agoOh wow, that is amazing. The guy flipped out on anti-depressants and wrote an influential paper that he now disavows. I wasn't expecting that.
- fit2rule 11y agoIt is quite refreshing to see someone take some responsibility for their lives while they were unhealthy, I must admit. This retraction is one of the most noble things I've seen in this realm in a long time..
- foobar2020 11y agoSome of the claims. From the abstract: I continue to believe, however, that Dehnadi had uncovered the first evidence of an important phenomenon in programming learners. Later research seems to confirm that belief.
- thaumaturgy 11y agoThis is a discussion that happens in a lot of different fields of practice. In medicine, you might have the argument over to what extent chiropractors or naturopaths are physicians; /r/justrolledintotheshop, one of my guilty pleasures, has recurring posts about embarrassing things that shadetrees have done. Right now they're doing the, "hah, car mechanics? Try being a boat mechanic! Hah, boat mechanic? Try being a diesel mechanic! Hah, diesel mechanic?..." It's all pretty light-hearted, one of the reasons that I like that sub, but still, there are similarities. I get where they're coming from. I've put some effort into teaching programming to other people too: young kids, guys with electronics backgrounds but not software, even a homeless kid. I look at programming as a skill, like dancing, martial arts, or swimming, that can be practiced and improved for anyone that wants to put the time in to it. But then sometimes I find myself on the other side of the fence, where a project is being made a lot more difficult by someone because, "I know Wordpress, so I'll just handle this complicated not-Wordpress-related hosting issue myself." Or, "my system was acting strange recently, and I saw this thing about hackers on NCIS, so I..." So that's where I start to have a problem with thinking of spreadsheets as programming. Technically, Jacques is right, it absolutely is. People do hilariously incredible things with Excel -- even flight simulators! (https://www.youtube.com/watch?v=AmlqgQidXtk https://www.youtube.com/watch?v=AmlqgQidXtk) But it's also not the same as developing an api or wrangling some other more advanced project, and when the people you're working with understand programming to be as difficult as a spreadsheet, it can make for some hopeless no-win situations. At least in martial arts, if you decide to spar with somebody that's a lot more advanced than you, you'll learn your mistake pretty quickly. If you practice swimming in a backyard pool and then decide to have a go at the ocean, you'll have a pretty sobering experience if you're lucky. But in software, it's possible to muddle along for quite a long time, making a really expensive mess, before you realize that you're in over your head. (Which probably most of us have done at some point.)
- ectoplasm 11y agoThere is a binary test for a programmer: someone with basic proficiency in a Turing-complete language. I like this answer on SO about what that is: https://programmers.stackexchange.com/questions/132385/what-makes-a-language-turing-complete https://programmers.stackexchange.com/questions/132385/what-... > In general, for an imperative language to be Turing-complete, it needs: 1. A form of conditional repetition or conditional jump (e.g., while, if+goto) 2. A way to read and write some form of storage (e.g., variables, tape) For a lambda-calculus–based functional language to be TC, it needs: 1. The ability to abstract functions over arguments (e.g., lambda abstraction, quotation) 2. The ability to apply functions to arguments (e.g., reduction) -- Note that you can be a programmer without ever having touched a computer, people have been coming up with algorithms and integrating them into systems for ages.
- sepeth 11y ago> Note that you can be a programmer without ever having touched a computer, people have been coming up with algorithms and integrating them into systems for ages. Slightly different, but the first episode of SICP videos helped me to reach the same conclusion: https://www.youtube.com/watch?v=2Op3QLzMgSY https://www.youtube.com/watch?v=2Op3QLzMgSY We can even say Newton, or Euclid wrote programs. Maybe not by sitting in front of a computer, but they described a process to calculate something.
- dalke 11y ago"... wrote programs". I think it's better to say they wrote algorithms. A program is an algorithm instantiated for use by a machine, which might be analog or digital. I can accept the argument that a human following an algorithm emulates a machine, but I consider it an imperfect analogy.
- discreteevent 11y agoIt works the other way too. If instead of thinking of yourself as a programmer you think: "I solve problems" You can broaden your reach. There was a time when I was reluctant to work on something because I couldn't use C++ !
- zwetan 11y agoIt's not about being a dick and discouraging people who want to learn programming but they should know in what they are getting into: programming is hard and the learning process is a long road of many years. Teach Yourself Programming in Ten Years http://norvig.com/21-days.html http://norvig.com/21-days.html with that wonderful quote "Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies."
- mseebach 11y agoIt's important to distinguish being a programmer at all and being a very good programmer. Even Norvig (condescendingly) concedes that idiot dummies can become bad programmers. The point he misses, is what Jacques refers to a brain amplification and Excel programming: even a bad programmer can reap significant benefits from programming. My favourite consulting gig, about ten years ago now, was for some friends of a friend. They were not very technical, most of them history graduates, who'd taught themselves just enough PHP to cobble together an online history text book in an open source CMS - and sold it to a bunch of schools, and their server was now positively on fire. I helped them move to a bigger server, and migrate their search from the CMS' awful MySQL based homebrew to Solr, and they lived to fight another day. Norvig can call them idiot dummies from his ivory tower all day long, but these guys created a business from nothing, and it's still around today.
- mianos 11y agoI hate to say it, but please don't feed the troll.
- radmuzom 11y agoI agree strongly with Jacques Mattheij. Part of the programmer superiority (especially HN readers) syndrome is driven by fear; they consider themselves special and enlightened and "better" than others, and fear that teaching anyone to be a programmer will undermine their value. I have seen it repeated multiple times here, in the context of the value of "unskilled" labour, that you are not adding any value if you are digging up a ditch and working hard to fill it over and over again. The automatic assumption is that programmers are providing more value. However, if you are writing hello world (or a slightly more complex program) in a new cool shiny language over and over again, then you are not adding any value just like any other labourer.
- deleted 11y ago[deleted]
- deleted 11y ago[deleted]
- deleted 11y ago[deleted]
- sklogic 11y ago> Imagine them telling you that you’re hopeless You don't have to imagine this with Torvalds. He said this kind of things many times.