I get casually asked a lot to take a couple days to teach someone how to program. Most people really think they can learn what I know in a few days. When I tell them I have been doing this for many years and I can't teach them to be a programmer in a few days, they look at me like I am being a jerk and just don't want to help them.

I think this is because when I say I am a programmer, or I programmed this. I truly think most people do not realize that I mean I wrote the code that makes it up. I think that they think I mean I configured it, like when you say, "I programmed my VCR."

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

7

You really date yourself with that VCR reference. It's been a long time since I have seen one of those.
–
Yaakov EllisOct 20 '10 at 14:32

3

no VCR's are the future...I was just using my 1983 JCPenny top load vcr to watch some old movies last night.
–
dotjoeOct 20 '10 at 14:45

1

@Yaakov, lol, I actually just used the term VCR because when I was a kid I used to hear "program my VCR" a lot. I never really hear "Program my DVD/Blu ray player."
–
JD IsaacksOct 20 '10 at 14:49

1

Although a great question (you get my +1), I would rephrase title to say something along the lines of "How do you portray to non programmers what programming involves?" because frankly the question in the title is 1. a yes/no question and 2. not really something able to be answered.
–
ChrisOct 20 '10 at 18:57

11 Answers
11

Should only take a few minutes to set them up to write "Hello World" in JavaScript. There, you have taught them to program. And if they complain that they don't know enough to be useful, then hopefully they can begin to appreciate that it is something that takes more than a few minutes to learn.

Maybe try introducing yourself as a Software Engineer - the title normally elicits more respect than "programmer" (since people do identify the verb with more mundane tasks like programming the XYZ).

I think your right about using the term "Software Engineer" I could even say "I engineered it" instead of "I programmed it."
–
JD IsaacksOct 20 '10 at 14:51

4

@jiceo: no-one seems to be able to come to any kind of consensus on what any of the titles mean and any non-developer won't know the difference anyway, so you can call yourself whatever you want :)
–
Steve EversOct 20 '10 at 19:27

1

@jiceo, SnOrfus - You are not a software engineer if you're a web developer. Real software engineering is not a light task, think of writing software for the OS of the space shuttle. It's not just gather some requirements and spit out a project. There's a reason the SEI was put into place.
–
TheCloudlessSkyOct 21 '10 at 1:50

8

@TheCloudlessSky you are saying web dev is not software engineering because its not as hard as say, "writing software for the OS of the space shuttle". But thats like saying that aeronautical engineering isn't really engineering because aerospace engineering is harder. Or biology isn't really science because physics is harder. "Software" is a broad term and yes some software is harder to create then others, but I don't think you have to be doing the most complicated aspect of something to be considered doing it at all. Are web applications not software?
–
JD IsaacksOct 21 '10 at 20:57

1

@TheCloudlessSky Have you ever heard of the title "front-end engineer" ?
–
Diego DeberdtJun 24 '11 at 17:48

Well you could always take the code for something moderately complex and print it out and put it in a BIG binder. Haul that out to show them how hard it is, most people will run screaming away, the rest, you can teach to program.

My dad and I were talking about what it would take to build a program to visualize stairs (his specialty is building custom stairs). He starts off by saying "It should be easy, right?"

I begin to ask him some very specific questions about the domain of stairs and the terminology. After about 3-5 minutes of asking these questions, he recognizes that the domain itself is complex (We didn't even get into a discussion of the actual programming complexity).

In general, no, programming is not understood. Typically programming is considered to be some sort of wizard-y operation.

This is a perfect way to show people what programming is all about: problem solving, in excruciating detail. Unfortunately, these conversations don't come up nearly often enough.
–
Jon PurdyOct 20 '10 at 18:53

My experience is that people do not understand how complex coding is. They think something like Tetris can be written easily by anyone. They do not understand that it is a lot more complicated than they think. My friends (have never seen code) think my degree in computer science means I can do IT. They do not understand that I can program and write code.

The simple answer is "No". The more complex answer is "What's this 'code' stuff?". :-)

Seriously - non-developers don't understand programming. Not at all. Not even a little bit. Even the ones who've written some formulas in Excel and think that they are therefore "software developers" are not possessed of Clue #1. To someone who took a Basic programming class way back when programming is all about '10 PRINT "HELLO WORLD!"', and everything else is just...details. And details are so easy to gloss over, misunderstand, and/or ignore, and...well...programming is just details, isn't it? :-)

IT managers who've never coded (especially IT managers who've never coded) don't Get It. Knowledge isn't gained by proximity, but try convincing them of that... Even managers who once-upon-a-time were developers, back in their salad days when men were men, computers were water-cooled, and COBOL was the up-and-coming new technology - still don't Get It, especially when "It" is defined as "something that didn't even exist 35 years ago" such as the Web. (I've read anecdotes that when Windows 1.0 was being developed, Bill Gates just didn't "get" event-driven programming. As the Beatles didn't quite say, "Money can't buy you clues" :-).

And this is fine (up to a point :-). I've been developing software for a Long Time (I'm 53 - started learning how to program when I was 16 - and I'm still learning), but I don't know how to do what other people do very well. I can bang nails into boards well enough that things don't fall down, but my 81-year-old uncle was a professional carpenter his whole working life has forgotten more about carpentry that I'll ever know. My neighbor on one side is a plumbing/heating/air conditioning guy - I know enough to know when to scream for help, but I'm no plumber. My other neighbor - great salesman and heavy equipment operator - and I'm neither.

This is something that most people can relate to and some of the most computer illiterate have actual experience with.

I don't think that anybody would suggest that writing knitting recipes is easy or that Kaffe Fasset just takes a standard sweater and configure it to get results like those shown in the slide shows here.

IMOH: Programming/configuring a VCR is actually an analogy for 'what does programmers mean by programming'.

When one configures a VCR, after configuring it the VCR works in a 'certain' way. That's kind of solving a problem. When we program for computer, we also want the program to work in a 'certain' way -- that's also problem solving.

VCR/Cell Phone/Computers are all state machines. A computer program is executed as state machine. A VCR has very few states, like play, pause, forwarding, reversing, stopped, displaying elapsed/remaining time, ejected etc. Any normal person can learn this things quickly. In contrast, a computer program may have billions or trillions of states. It is not possible for non-programmers to understand all these states because most of the states are invisible to him/her. That's where the confusion comes. When a non-programmer works in a word processor, at the basic level for him it is just like "tap here - go there" thing. S/he cannot imagine what is happening under the hood.

Whenever someone asks me what is programming, I try to find out such simple things and describe to the person. For example, functionality of a digital clock. I tell them, what the 'computer' inside the clock doing after every second. What the computer does when a button is pressed etc.

To explain the complexity of useful programs, you could use the example of the scene in Toy Store 2 where the toys go to the airport in pursuit of Woody and the other round-up gang toys and are conveyed into the baggage processing area. The scene is meant to intimidate viewers with the complexity of the system and the difficulty in getting a sense of where you are in it.

Usually I get referred to as a web designer when engaging in such discussions or the other standard issue question is do I fix computers. I often provide these people with a copy of the book Code Complete and invite them to reconvene in about ten years.

I have a good software in mind to teach programming, based on the metaphor that programming is like casting a spell, and the programmer is a wizard. Java-like spells and a bunch of quests, everything in 3D, it is very interesting.