Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

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

Does anyone else think this? Whats your experience?

share|improve this question

marked as duplicate by gnat, Aaronaught, MichaelT, Kilian Foth, GlenH7 Oct 28 '13 at 13:53

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 Ellis Oct 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. –  dotjoe Oct 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 Isaacks Oct 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. –  Chris Oct 20 '10 at 18:57
2  
show 8 more comments

11 Answers

up vote 23 down vote accepted

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

share|improve this answer
1  
I think your right about using the term "Software Engineer" I could even say "I engineered it" instead of "I programmed it." –  JD Isaacks Oct 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 Evers Oct 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. –  TheCloudlessSky Oct 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 Isaacks Oct 21 '10 at 20:57
1  
@TheCloudlessSky Have you ever heard of the title "front-end engineer" ? –  Diego Deberdt Jun 24 '11 at 17:48
show 8 more comments

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.

share|improve this answer
17  
I lost a girlfriend that way. Totally worth it. –  Incognito Oct 20 '10 at 20:22
1  
@Incognito, ROFL, +1 –  CaffGeek Aug 12 '11 at 14:20
add comment

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.

share|improve this answer
5  
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 Purdy Oct 20 '10 at 18:53
1  
Management Rule #1: Everything is easy, as long as someone else is doing it. :-) –  Bob Jarvis Jun 1 '11 at 11:15
add comment

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.

share|improve this answer
    
Tetris is actually not all that hard to do... :P –  Mason Wheeler Oct 20 '10 at 16:33
5  
Not for programmers, but a non-programmer would probably disagree if they knew the complexity, lol. –  sange Oct 20 '10 at 17:35
2  
If I had a penny for every time someone placed CS in the IT subset, well I would have a lot of pennies. –  Chris Oct 20 '10 at 18:56
    
what do you mean by "I can do IT"? –  Donotalo Oct 20 '10 at 20:54
    
I mean that they think all I can do is fix computers and hardware, but they don't think I can do anything related to programming. –  sange Oct 21 '10 at 11:59
add comment

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.

Share and enjoy.

share|improve this answer
add comment

My favorite metaphor for programming is writing knitting recipes.

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.

share|improve this answer
3  
I don't know ANYONE that even knows what a knitting recipe is much less can relate to its complexity. –  Pickle Pumper Oct 20 '10 at 20:13
    
@Pickle Pumper, mother? Grandmother? Call them :D –  user1249 Oct 20 '10 at 20:23
    
They all died in the war. Plus they don't have phones. Or ears. –  Pickle Pumper Oct 20 '10 at 23:50
add comment

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.

share|improve this answer
add comment

To reiterate an answer I've given before:

Programming is like building a factory or an assembly line.

Working Software

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.

share|improve this answer
add comment

I know exactly what a programmer does: It's someone that writes GUI interfaces using VB to track IP addresses!

share|improve this answer
1  
For those who haven't seen it: youtube.com/watch?v=hkDD03yeLnU It makes me cringe, then burst into laughter everytime I see it. –  sdolan Oct 21 '10 at 0:51
    
Thank you! Even though I have never watched this show, it made me rofl when I saw it in the interwebs... –  chiurox Oct 21 '10 at 16:47
add comment

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.

share|improve this answer
add comment

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.

Codespells

enter image description here

Disclaimer: I am a developper of a concurrent software.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.