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" :)
http://arstechnica.com/information-technology/2012/09/is-it-...
http://blog.codinghorror.com/please-dont-learn-to-code/
http://programmers.stackexchange.com/questions/163631/has-no...
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.
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
Consider other fields:
- Is everyone suited to be a mathematician?
- What about a building engineer?
- An electrical engineer?
None of these things are magic. None of these things are something someone can't learn "a little" about.
And yet, like programming, all of these require a great deal of effort to master any degree of proficiency; this 1) takes individual dedication, and 2) is undermined for individuals when they're told repeatedly and incorrectly that being a "programmer" is a label, and that it's easy.
Me: "I'm learning programming" Programmer: "Good luck with that (sarcasm)"
These people were dicks. I met WAY more positive and accepting people in tech during my transition, but there is still an elitist group that thinks it is special. This mentality exists everywhere, but tech seems to be special. Developers are in demand, many people don't fully understand what we do, and even when you "get your foot in the door" people..including folks on HN btw.. throw out things like "I hate pretend programmers".
If they're actually sarcastic, they're dicks, but a slightly skeptical "good luck with that" is a pretty appropriate response for someone that has just started at a major task. Same thing if you tell me you're going to write a novel; I encourage you, but I don't assume you will automatically make it.
>throw out things like "I hate pretend programmers".
Does pretend programmer mean someone that's learning or someone that lies about what they've already learned? I've only seen derision toward the latter, someone that claims to be an experienced coder but can't code the simplest of functions.
But in tech these things are more in the open what with our hacker news and blogs etc, and because most of people in this field actually are good people and care about this stuff and want to deal with the issues!
I myself haven't met any "elitist programmers", just regular joes (and janes!) doing their job. On the other hand I also don't operate in SF in some tech bubble i've been hearing about :)
/end rant, sorry :)
Try to look at this from the programmer's point of view for a moment. Programming is a vast subject, where you're going to be constantly learning for as long as you program. It's impossible to learn programming entirely: we still don't know how to program to get the best results, we're continuously defining the field as we go on. And that's even before you take Computer Science into account!
Granted, being a dick is not a good thing, but after a while it's also hard to be enthusiastic about people who tell you they're going to learn programming. Especially if they have no idea yet about how programming is like in the "real world". Most of them are going to - in my experience - run away screaming when they see the reality of programming. And that's even before talking about how programming jobs look like.
Personally I try my best not to be sarcastic when talking to beginners, but I do try to warn them that it may be harder than they think.
For real? Because it shows up in HN all the time.
E.g. for what he writes:
>The IT world is rife with this ‘no true programmer’ nonsense, the ‘real’ programmers are the ones that have mastered ‘x’ (insert name of arcane and difficult to use programming language here), the rest is still stuck on ‘y’ (insert accessible and easy to use language here). The latter of course aren’t real programmers, if they were then they would get it.
How's that not an example of "the Blub" reasoning? http://www.paulgraham.com/avg.html
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.
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.
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...
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.
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
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.
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."
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.
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.
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.
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.
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.
I think this is a great point that deserves repeating.
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.
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.
Slightly different, but the first episode of SICP videos helped me to reach the same conclusion:
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.
I can accept the argument that a human following an algorithm emulates a machine, but I consider it an imperfect analogy.
That's overcorrecting. Spreadsheets are a huge category. You can perform programming activities in spreadsheets and you can perform non-programming activities in spreadsheets.
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.)
You don't have to imagine this with Torvalds. He said this kind of things many times.