Possible Duplicates:
How do you share your craft with non programmers?

I love programming and I like to learn everything I read about the subject. However, I'm having a hard time explaining what I've learned to someone who does not know anything about programming or even to a fellow programmer.

There is a quote by Albert Einstein that goes something like this:

 If you can't explain it to a six year old, you don't understand it yourself. 


 If you can't explain it simply, you don't understand it well enough.

Does anyone else find themselves in the situation I'm in? This can also affect my job interviews; when someone asks me to explain some concepts that I know but can't put it well enough in words, they might think I'm not well prepared when in fact I am but I'm crippled by my inability to explain myself.

How can I overcome this and be more articulate?

  • 3
    Practice. A lot. This is one of the things blogging is good for.
    – user1249
    Aug 26, 2011 at 20:14
  • 1
    The interesting part is if a six-year old understands THIS question?
    – user1249
    Aug 29, 2011 at 14:33
  • @ Thorbjørn: +1 totally agree! Just making exercise in your weknesses you can improve them. Writing here is indeed a very good practice.
    – Francesco
    Aug 29, 2011 at 15:01

7 Answers 7


Dumb as it sounds, have a conversation with an imaginary 6 year old until you think you are explaining it well.

Oh, and in the case of technical things for non technical speakers. Don't explain it at all. They don't care.

(As an aside, don't try the converstation with an actual 6 year old. There is a reason Einstein was not a frequent guest speaker at first grade classrooms. Probably lots of reasons).

  • If my memory serves from some biography books on the chap, he was not a frequent speaker pretty much anywhere, less alone first grade classrooms ;)
    – Rook
    Aug 26, 2011 at 22:08

There is a widely recommended book that covers exactly the problem you face. It's called "Even a Geek Can Speak". I've not had need of it myself but I do hear it's effective.


I've found the use of analogies to work very well for explaining complex programming concepts to my son, as well as my older Father-in-law :). For example, explaining the DNS system using the White Pages in the phone book to describe how addresses are looked up, and forwarded to their corresponding server. IP Addresses are Phone Numbers, DNS servers are Phone Books, and your request for a website is like dialing 411 and having them auto-route you to the server you want.

Start making comparison to things "in the real world" to explain complex programming topics, and I think you'll go a long way to being able to explain what you're learning to the layman. That being said, a deep understanding of the topic will help you realize which analogies to use to make this happen.

I hope that helps,



Try out different methods of communication. If you find that you're having issues explaining yourself in a face-to-face conversation, try whiteboarding the problem and do a walkthrough of the solution (sometimes this can help clear things up for you yourself).

The key is to slow down. Describe a problem and its solution in atomic units.


Explain it with an example or by drawing the concept. This makes it easier to stay focused on the global concept, rather than losing yourself in the details.


Practicing paraphrasing and clarifying is definitely the main tactic I'd suggest to overcoming this. Consider adding new words to your vocabulary that may help in translating things from one level to another. For example, consider these pair of sentences:

I'm going home.

Fire the synapses of my central nervous system to tell my body to erect itself away from this chair, proceed down the hall towards my vehicle parked downstairs, turn on the vehicle and operate it to move my body back to my personal residence where I woke up this morning.

Both statements are about the same thing of me getting home though the latter is way more detailed and likely overkill for most people wanting to know, "What are you going to do this afternoon?" There are probably more than a few in between phrasings that could be created that may be a fun exercise to consider.

Social Anxiety may also be a factor that could be worth exploring. I have Generalized Anxiety but it was initially thought to just be Social Anxiety. Emotional Intelligence would be another possible area to study if you want other things that may help in interpersonal and communication skills.

You read, you forget.
You read again, you remember.
You explain to others, you understand.

-can't remember who said it.

If you can't explain what you have learned, then you either have communication problems or you didn't understand it in the first place. It's one or the other... or both.

Einstein is right.

Since we are on a programmer related site I'll address a way of fixing the "I didn't understand". Start answering questions on stackoverflow or programmers.SE, explain stuff to others...

You will get feedback from those people and it's likely that you'll see dents in your knowledge witch you will try to fix by researching the subject to get a new understanding on things... again providing answers to others....

And now you are also communicating with people, and with time, your communications skills will also improve.

That's two birds with one stone :D

  • 1
    @BlackJack: Thanks for the edit but I had other things to add to it.
    – user7197
    Aug 26, 2011 at 20:20
  • no worries. The main thing I saw though was that the second line of the quote was "Your read again", when it should be "You read again." If you could change that, it'd be great :)
    – BlackJack
    Aug 26, 2011 at 20:22

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