¿Cómo compartes tu oficio con los no programadores?

43

A veces me siento como un músico que no puede tocar en vivo. La programación es una habilidad genial y un mundo muy amplio, pero muchas cosas suceden "fuera de cámara", en la cabeza, en la oficina, lejos de los espectadores.

Por supuesto, puedes hablar sobre programación con otros programadores, y hay programación entre pares, y puedes crear algo que puedes mostrar a la gente, pero cuando se trata de explicar a los no programadores qué es lo que haces o cómo fue tu día en el trabajo, es algo complicado.

¿Cómo logras que los no programadores en tu vida entiendan qué es lo que haces?

NOTA: esto no es una repetición de hacer que los no programadores entiendan el proceso de desarrollo , porque esa pregunta era sobre la gestión de las expectativas del cliente.

EpsilonVector
fuente
Esa es la naturaleza de la profesión: hay pocas recompensas tangibles por su esfuerzo porque usted es el único que entiende lo que hace. Sin embargo, el conocimiento, el dinero es lo suficientemente gratificante para la mayoría.
Nadie
1
Relacionado: ¿Cómo me vuelvo más articulado ?
Adam Lear
12
Alégrate de no escribir cosas por seguridad. La seguridad es aún menos demostrable que cualquier otra cosa. "Mira, está haciendo lo mismo que antes, solo que ahora es seguro ..."
Shawn D.
2
¿Puede alguien explicarme qué categoría encaja esta pregunta en programmers.stackexchange.com/faq
Noname
1
@Dave se ajusta a la categoría de preguntas que se publicaron cuando el sitio todavía estaba en versión beta, si la memoria me sirve bien. Las reglas no estaban completamente pulidas en aquel entonces.
EpsilonVector

Respuestas:

31

Tres palabras:

dumb it down

La programación es compleja. Se necesita mucho trabajo para entenderlo. Y las alegrías de la programación son aún más sutiles.

Para poder comunicar mis éxitos y demás a otros (es decir, la familia), tengo que comunicarme en un nivel más común. Compare la programación con las cosas normales del mundo real.

(es decir, un objeto para un automóvil con un tablero de instrumentos y asientos y ...)

Es aún mejor si sabes algo sobre tu audiencia porque puedes usar cosas que entienden que son más complejas que los conceptos cotidianos normales.

Por ejemplo, mi esposa era maestra de escuela, así que puedo comparar algunos de mis procesos de desarrollo de software con los procesos de enseñanza que tuvo que usar. Ayuda inmensamente.

Pero al final tienes que simplificar, simplificar y simplificar un poco más. E incluso entonces, es difícil hacer que alguien entienda lo genial que es una clase bien diseñada con buenas pruebas unitarias. :)

revs Vaccano
fuente
25
+1 para "E incluso entonces, es difícil hacer que alguien entienda lo genial que es una clase bien diseñada con una buena prueba de unidad". Me cuesta mucho hacer que algunos programadores entiendan eso.
CaffGeek
3
Soy fanático de usar malas analogías para explicar conceptos esotéricos.
Malaquías
49

Ni siquiera lo intento. Si no están lo suficientemente orientados a la tecnología para tener al menos una comprensión básica de la programación, solo los aburriré con los detalles. Por lo general, simplemente voy con algo de muy alto nivel como "Creo sitios web" o "Escribo programas de computadora para hacer X"

JohnFx
fuente
13
+1: uso este método todo el tiempo. Si realmente quiero que sepan cómo fue mi día, les arrojaré algunos términos y veré que esa mirada vidriosa se apodere de sus ojos. Entonces alguien cambia de tema.
Joel Etherton
77
Descubrí que las personas tienden a cambiar de tema tan pronto como menciono las computadoras. O eso, o comienzan a quejarse de su computadora y a pedir consejo. Supongo que los médicos tienen el mismo problema.
Brian Ortiz
3
@Brian, excepto que la mayoría de los médicos solucionan problemas en lugar de construir nuevos sistemas;)
Armand
2
Sí. La respuesta más fácil es "creo cosas ... más específicamente, creo un sistema de clúster en tiempo real de alta disponibilidad, para ..." - y aquí se han ido ...
Sorantis
Esto es lo que hago. Luego espero los 5 segundos de silencio y digo "Annnnnd, ahí está ese asesino de conversación fuera del camino. Entonces, ¿qué haces?"
pdr
12

Intento explicarlo en términos de resolver un problema. Simplemente elijo usar un programa de computadora para resolver el problema. De esa manera, puede discutir lo que ha hecho en términos del problema que está tratando de resolver. Una vez que entienden eso, el salto para resolverlo a través de la programación no está muy lejos y, por lo general, puede ser realizado por personas que no son expertos en tecnología.

mpenrow
fuente
12

Hice que mi hermano Rob me preguntara sobre eso. (Es un artista e ilustrador, como libros para niños, interiores de museos, cosas así).

Traté de explicarlo mostrándole la computadora de retransmisión de Harry Porter , porque creo que captura la esencia de las computadoras y la programación de una manera intuitiva.

Eso no era lo que él quería, y yo estaba un poco desconcertado.

Solo más tarde me di cuenta de cuál era el verdadero problema. Me acordé de esta cita de Oscar Wilde:

El hecho es que la civilización requiere esclavos. Los griegos tenían mucha razón allí. A menos que haya esclavos para hacer el trabajo feo, horrible y sin interés, la cultura y la contemplación se vuelven casi imposibles. La esclavitud humana es incorrecta, insegura y desmoralizadora. De la esclavitud mecánica, de la esclavitud de la máquina, depende el futuro del mundo.

Lo que me emociona como ingeniero es que estoy construyendo esclavos mecánicos. Cuando era niño, quería poner una presa en el arroyo y hacer que una rueda de agua produjera electricidad, para que pudiera hacer algo por mí , mientras yo solo miraba. En el motor de un automóvil, hay un árbol de levas. En realidad es un programa primitivo. Abre y cierra las válvulas cuando lo quiero para no tener que hacerlo.

El mundo de un artista es completamente diferente. Si escuchas, con los ojos cerrados, una interpretación de la novena sinfonía de Beethoven, eres transportado. Debes prestarle toda tu atención, y cuando haya terminado, lo anhelas. Si visita la casa de la obra maestra de Frank LLoyd Wright Falling Water, es transportado. Sinceramente, no sé cómo alguien podría vivir en él. ¿Dónde puedes hacer un desastre? Te captura por completo. Es una sinfonía arquitectónica.

El arte no hace algo por ti, te hace algo a ti.

He tratado de encontrar el arte en lo que hago. Hay belleza en eso, si miras, pero tienes que mirar. Eso es lo que nos hubiera conectado.

Mike Dunlavey
fuente
3
Leí que , inicialmente, como la Computadora de retransmisión de Harry Potter , la magia a menudo se usa para describir lo que hacemos, por supuesto;)
jk.
@jk: apuesto a que solo atrae a los estudiantes a sus clases :)
Mike Dunlavey
@jk. La mayoría de las veces veo magia negra en nuestras obras.
heishe
7

Contar una historia. No se concentre en lo que hace, sino en cómo se siente cuando lo hace, cómo le apasiona o se aburre, en las relaciones con sus compañeros de trabajo.

Mouviciel
fuente
1
+1 por concentrarse en las relaciones con los compañeros de trabajo. Todos pueden relacionarse con ese tipo de cosas. "Fui a almorzar con el jefe y él decía ..." es mucho más identificable que "Pasé la mitad del día tratando de eliminar las condiciones de la carrera"
Andy Hunt
3

Mis dos analogías para este propósito son: una receta y una burocracia masiva. Eso es lo que expliqué en este QA: 30 minutos para explicar la programación a un chico de 15 años.

He usado la analogía de la receta muchas veces para explicar cómo la programación consiste en escribir un conjunto riguroso de instrucciones que tienen un resultado tangible y predecible cuando se siguen.

En realidad, solo he usado la analogía de la burocracia un par de veces, porque la mayoría de las personas realmente no necesitan entender más allá de la analogía de la receta, pero ambas veces fueron muy esclarecedoras para la persona. Parecían pensar que la programación significaba la recuperación total de cada línea de código (por ejemplo, "Pero si tienes una memoria tan mala, ¿cómo puedes programar una computadora?") Pero en realidad se trata de construir muchos módulos independientes que funcionen juntos para lograr el objetivo más amplio. Los módulos de un programa son como los departamentos de una gran empresa: unidades independientes que se ocupan principalmente de su propio conjunto y se comunican con otros departamentos a través de memorandos.

jhocking
fuente
Alguien dijo que estaban construyendo esclavos mecánicos, después de otro "problema" de los clientes, siento que somos los esclavos y estamos construyendo distopías mecánicas para vivir con nosotros.
gbjbaanb
2

Creo que obtengo la mayor respuesta cuando explico algo en términos de la idea detrás del código en lugar del código en sí. Simplemente elimino toda la jerga técnica, evito mencionar términos relacionados con la programación y solo hablo sobre la idea y lo que realmente se está haciendo .

Por ejemplo, recientemente intenté explicar cómo funciona un filtro de spam. Acabo de decir que mantiene un registro de las palabras que normalmente se encuentran en el correo no deseado y las que no se encuentran en el correo no deseado. El registro se crea utilizando correos no deseados y correo no deseado conocidos. Después de eso, cada vez que llega un nuevo correo electrónico, solo verificamos cuántas de las palabras que aparecen allí son spam (es decir, aparecen en nuestro registro de palabras spam) y cuántas parecen no spam. Si hay demasiadas palabras de spam, probablemente sea spam y, por lo tanto, se envíe a la papelera de spam. Las personas no tecnológicas con las que estaba hablando siguieron la idea bastante bien.

MAK
fuente
1

Metáforas

Muchas veces, no lo describo como un programa en absoluto, trato de representarlo como un concepto completamente diferente con interrelaciones similares.

Hace que la visualización del programa sea mucho más interesante y, a veces, me ayuda a verlo desde otra perspectiva.

Usted no describe la electricidad a alguien que nunca antes ha trabajado con ella al hablar sobre la corriente y los voltajes, ¿verdad? Además, es divertido describir algunos conceptos como si un proceso informático ultraconsciente los hiciera suceder como por arte de magia. Una pequeña historia imaginaria no los perjudica como la realidad de cuán frías y racionales son realmente las computadoras.

Evan Plaice
fuente
1

He respondido una pregunta similar con más detalle , pero la esencia es: "La programación es como construir una fábrica o una línea de montaje".

Huperniketes
fuente
1

Muchas personas que no han programado parecen creer que los programadores pasan mucho tiempo cazando tediosamente errores, buscando visualmente miles de líneas de código en busca de una coma errante. Así que primero les aseguro que este no es el caso, y si lo fuera, estaría completamente desesperado.

A menudo comparo la programación de computadoras con escribir un libro de cocina. Un libro de cocina es un conjunto de instrucciones para las personas, mientras que un programa de computadora es un conjunto de instrucciones para una computadora. Algunos programas son mucho más complejos que los libros de cocina, y los programas se modifican con mayor frecuencia, pero hay cierta similitud en la estructura. Si un libro de cocina contiene siete copias de las instrucciones para hacer una salsa, y la receta tiene que cambiarse, alguien tiene que encontrar todas esas copias y arreglarlas.

Kevin Cline
fuente
Sería un mundo doloroso en el que no podría programar su computadora para facilitar la programación ("búsqueda visual ... de una coma errante").
compman
1

Creo que una buena analogía es construir una fábrica. La mayoría de la gente ha visto algo así como "Cómo se hace", en el que se ve que un artículo se baraja a través de diferentes cintas transportadoras y máquinas con un producto final que saldrá al final. Le digo a la gente que construyo cosas así, pero en lugar de ser fábricas físicas que trabajan en artículos físicos, son virtuales y funcionan con datos. Por supuesto, esta no es una buena analogía para todo tipo de programación, pero creo que da una buena idea de la complejidad y es paralela a muchos tipos de aplicaciones.

frankc
fuente
0

Realmente no puedes compartir tu oficio, solo titulares sobre tu trabajo con otros

Sin embargo, lo que puede hacer es, en lugar de compartir su oficio, es compartir su vida con personas que están en el mismo oficio que usted (:

mireille raad
fuente
0

Usualmente no hablo sobre cómo se hace, sino más bien sobre las características del trabajo .

Por lo general, enfatizo que es increíblemente complicado, tan complicado que ninguna persona podría esperar comenzar a comprender con todo detalle exactamente lo que está sucediendo. Probablemente requerirá 30 años de estudio de las diversas partes que interactúan (electrónica a través de marcos), más aproximadamente una hora por línea activa de código, y para ese momento tendría que volver a estudiar porque el hardware habría cambiado tanto que Son otros 10 años superando la última versión.

La otra parte importante es lo gratificante que puede ser crear algo tan flexible que miles, quizás millones de personas puedan usarlo para enriquecer sus vidas, algo único (al menos en detalle) y algo de lo que hayas aprendido mucho.

Si nadie me ha llenado la boca con calcetines en este momento, felizmente demostraría una aplicación, mostrando un poco de la complejidad involucrada y la flexibilidad posible.

l0b0
fuente
0

Les digo que, aparte de escribir sinfonías y novelas y tesis matemáticas, la programación es la única oportunidad que tendrá de involucrarse con tareas / estructuras con este nivel de complejidad y complejidad. Por supuesto, no digo que una aplicación web decente sea una obra maestra histórica, pero una vez que la gente se da cuenta de que puedes usar tu mente en este tipo de nivel todos los días, entonces lo 'entienden'. Muchos trabajos son dignos y bien remunerados, pero se reducen a una tarea procesal bastante simple que se repite una y otra vez.

Al menos, así es como lo veo. Podría estar equivocado.

Andrew M
fuente
0

Como una toma diferente a las otras 15 respuestas ...

En lugar de explicar los detalles de mi trabajo (programación), trato de concentrarme en las soluciones que resuelve el trabajo, es decir, qué problemas resuelven realmente para el usuario los sistemas / software que construyo. Normalmente es un dominio que no es de programación, a menos que esté escribiendo un compilador o algo así, en cuyo caso tendría que explicar por qué es útil.

De esa manera, hace que sea más fácil para las personas comprender que es una naturaleza compleja y cómo se relaciona con el "mundo real".

Como analogía, como un herrero medieval, probablemente le explicaría (a la dama de la taberna local) que hago espadas para cortar en pedazos al enemigo, no cómo templar el acero y martillarlo con cierto ángulo y fuerza (a menos que ellos preguntan). Con suerte, ella entendería que cortar en pedazos a un enemigo es útil (...) y puede ser difícil de hacer (escasez de acero, enemigos blindados, lugares de trabajo humeantes, etc.) y, por lo tanto, ganas algo de aprecio por realizar una tarea compleja.

(Entonces, lanzar yunques sería equivalente a hacer compiladores, y tendrías que explicar para qué se usan ...)

Macke
fuente
0

Lo comparo con construir una casa, si viviéramos en un universo extraño con partículas exóticas y anti tiempo:

Tienes una idea para una casa realmente genial, así que construyes un bosquejo aproximado de cómo se verá y tienes un plan general de cómo proceder. Vas a la ferretería y compras algo de madera para construir las paredes, pero siguen cayendo porque el suelo es irregular. Así que vas y compras cemento para sentar las bases, pero el cemento no se secará y no podrás entender por qué. Vuelves a la ferretería y preguntas por qué, pero el empleado se vuelve catatónico. Vas a 8 ferreterías diferentes hasta que una te dice que el cemento que usaste se desarrolló en el otoño de 1989, pero compraste tu propiedad en el invierno de 1989, por lo que son incompatibles, y él te vende el cemento 2013.1.1 más reciente. Vuelves a sentar las bases y tan pronto como lo haces, el cemento desaparece. Esta vez todos los empleados se vuelven catatónicos, entonces buscas en Google tu casa y descubres que alguna vez fue un sitio de pruebas nucleares. Luego buscas en Google los efectos de las pruebas nucleares en el suelo y descubres que causa radicales libres. Lo buscas en Google y comienzas a investigar la radiación electromagnética, luego los fermiones, luego el bosón, luego la teoría de cuerdas y algo sobre un gato. No debes rendirte porque has perdido mucho tiempo, así que golpeas la botella con fuerza. Llegas tarde a casa y te enojas con tu esposa, alegando que ella es la razón por la que no puedes construir la casa porque ella y los niños están ocupando todo tu tiempo ... Aproximadamente 3 meses en que te das cuenta de que te fuiste de y algo sobre un gato. No debes rendirte porque has perdido mucho tiempo, así que golpeas la botella con fuerza. Llegas tarde a casa y te enojas con tu esposa, alegando que ella es la razón por la que no puedes construir la casa porque ella y los niños están ocupando todo tu tiempo ... Aproximadamente 3 meses en que te das cuenta de que te fuiste de y algo sobre un gato. No debes rendirte porque has perdido mucho tiempo, así que golpeas la botella con fuerza. Llegas tarde a casa y te enojas con tu esposa, alegando que ella es la razón por la que no puedes construir la casa porque ella y los niños están ocupando todo tu tiempo ... Aproximadamente 3 meses en que te das cuenta de que te fuiste decasi terminando la casa, sin siquiera saber por qué querías construir la casa en primer lugar.

puk
fuente
-1

Solo les digo que lo que hago es mirar lo que hacen por su trabajo y crear software que les facilitará el trabajo.

Amy Patterson
fuente
o reemplazar su trabajo, ¡oh no!
jhocking
-2

Como algunos de ustedes dijeron, use analogías que tengan sentido para ellos. Siempre trato de traer a Google de alguna manera, si mi código hace algo parecido a Google, o muestra los beneficios financieros, o cómo esto ayuda a las personas de alguna manera ...

crosenblum
fuente
-2

A veces me rindo y solo digo que me paso el día editando archivos de texto. Lo cual suele ser cierto si no es la historia completa.

fwgx
fuente