it-swarm-es.com

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

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 un poco 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 Lograr que los no programadores entiendan el proceso de desarrollo , porque esa pregunta era sobre la gestión de las expectativas del cliente.

43
EpsilonVector

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 comunicar mis éxitos y demás a otros (es decir, a 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 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. :)

31
Vaccano

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, solo voy con algo de muy alto nivel como "creo sitios web" o "escribo programas de computadora para hacer X"

49
JohnFx

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 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 simplemente Visto. 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 que no tenga 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 visitas la casa de la obra maestra de Frank LLoyd Wright Falling Water, eres 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.

Art no hace algo para usted, hace algo para usted .

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.

12
Mike Dunlavey

Trato de 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.

12
mpenrow

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.

7
mouviciel

Mis dos analogías para este propósito son: una receta y una burocracia masiva. Eso es lo que expliqué en este QA: minutos para explicar la programación a un niño 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 autónomos 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.

3
jhocking

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

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 spam y las que no se encuentran en el spam. 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 allí parecen 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 al contenedor de spam. Las personas no tecnológicas con las que estaba hablando siguieron la idea bastante bien.

2
MAK

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 mirarlo 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 algún proceso informático ultraconsciente los hiciera suceder como por arte de magia. Una pequeña historia imaginaria no los perjudica como la realidad de lo frías y racionales que son las computadoras.

1
Evan Plaice

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

1
Huperniketes

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 más 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.

1
kevin cline

Creo que una buena analogía es construir una fábrica. La mayoría de la gente ha visto algo así como "Cómo está hecho", 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.

1
frankc

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 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, por lo que buscas en Google tu casa y descubres que alguna vez fue un sitio de prueba nuclear. Luego busca en Google los efectos de las pruebas nucleares en el suelo y descubre 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, por lo 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 ... casi terminando la casa, sin siquiera saber por qué querías construir la casa en primer lugar.

0
puk

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 (:

0
mireille raad

Por lo general, no hablo sobre cómo se hace, sino más bien 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.

0
l0b0

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

En lugar de explicar los detalles de mi trabajo (programación), trato de centrarme en el soluciones que resuelve el trabajo, es decir, qué problemas resuelven realmente para el usuario los sistemas/software que construyo. Generalmente 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 señora de la taberna local) que hago espadas para cortar en pedazos al enemigo, no cómo templo el acero y lo martillo 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 ...)

0
Macke

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 en 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 las personas se dan cuenta de que puedes usar tu mente a 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.

0
Andrew M