from Hacker News

The 'No True Programmer' Fallacy

by bussetta on 8/1/15, 7:35 AM with 58 comments

  • by kisstheblade on 8/1/15, 8:00 AM

    Seems 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" :)

  • by jkot on 8/1/15, 8:41 AM

    > 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.

  • by nazri1 on 8/1/15, 9:00 AM

    > 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_hu...

  • by johw on 8/1/15, 8:35 AM

    From 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

  • by zwetan on 8/1/15, 9:29 AM

    It'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

    with that wonderful quote "Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies."

  • by hueving on 8/1/15, 8:42 AM

    Do 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.

  • by radmuzom on 8/1/15, 9:45 AM

    I 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.

  • by inlined on 8/1/15, 8:28 AM

    This 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.
  • by skrebbel on 8/1/15, 7:47 AM

    > 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.

  • by ectoplasm on 8/1/15, 9:14 AM

    There 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-...

    > 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.

  • by Dylan16807 on 8/1/15, 8:50 AM

    >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.

  • by InclinedPlane on 8/1/15, 8:53 AM

    Gatekeeping 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.
  • by thaumaturgy on 8/1/15, 9:04 AM

    This 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) 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.)

  • by discreteevent on 8/1/15, 9:26 AM

    It 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++ !
  • by sklogic on 8/3/15, 10:05 AM

    > 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.

  • by mianos on 8/1/15, 9:36 AM

    I hate to say it, but please don't feed the troll.