Aquí está mi opinión después de un par de intentos fallidos y un par de intentos bastante buenos:
La programación es la resolución de problemas.
Comience con cosas concretas que están programadas y que usan todos los días: navegador de internet (facebook), teléfono celular, caja registradora, etc. Pídales que le den muchos ejemplos. Establezca que todas estas cosas tienen una especie de computadora en ellas. El corazón de una computadora es el procesador.
El procesador es como un trabajador muy rápido, pero muy tonto. Si le das algunas instrucciones, las hará exactamente como dices. No hará nada extra y no le dirá si algo que le dijo que hiciera estaba mal. Sin embargo, este procesador hace todo: si le dice exactamente cómo hacerlo, puede hacer una llamada telefónica o poner una imagen en un correo electrónico.
Pregúntele cómo le diría a un trabajador muy rápido pero muy tonto que compre una lata de refresco en una máquina de refrescos. Cuando ella comienza a describir los pasos ("Poner dinero en la máquina y presionar el botón"), comienza a diseccionarlo como un programa ("¿Qué es el dinero? ¿Cómo lo pongo en la máquina? Cuando pongo dinero en la máquina y presiono el botón al mismo tiempo, no pasa nada "). Si tiene una pizarra, comience por la izquierda con su primer conjunto de instrucciones. A medida que los revise, coloque la nueva lista más grande en el lado derecho. Cuando tenga un buen conjunto de instrucciones, comience a generalizar las piezas ("Saque el dinero de su bolsillo y retire el refresco de la bandeja con un sonido similar, ¿qué partes son iguales / diferentes?") Tome las generalizaciones y colóquelas en el medio y tachar las piezas que ahora abarcan. Intente finalmente atar las piezas para que coincidan con sus instrucciones originales, algo así como llamadas a funciones. Otros buenos ejercicios: enviar una carta, pasar por una puerta, dibujar un círculo / cuadrado / triángulo.
Entonces, programar es resolver problemas: dividir los problemas en partes, identificar partes que son comunes y agrupar esas partes para resolver problemas. Pronto, descubre que algunas partes son comunes en muchos problemas, y luego comienza a juntar partes para resolver problemas que ni siquiera sabía que tenía.
De acuerdo, en este punto ella puede entender pero probablemente esté aburrida. Siga con un conjunto de ejemplos de programación geniales. Los sombreadores y el código visual relacionado son fáciles de demostrar: puede colocar una imagen y comenzar a hacer cambios con cambios de código muy pequeños. Si ella expresó interés en Facebook, presumir hablando con Facebook a través de REST para ver los datos de amigos de amigos (6 grados de ella). Si le gustan los videojuegos, muestre un par de demostraciones de juegos de código abierto junto con algunos fragmentos de su código y cómo ayudan a que el juego funcione. Para terminar, muestra un par de herramientas y recursos gratuitos que podría investigar en casa. (Python, C #, etc.)
Mis intentos fallidos: tratar de explicar el cálculo de pi (preguntaban), el juego de mesa C-Jump http://c-jump.com/ (no lo entendieron y las instrucciones tenían errores) y codificar en vivo un 2d juego (simplemente no podía mantener el interés, no importa cuán pequeños pasos estaba dando entre demostraciones).
¡Buena suerte!