Cómo introducir la programación al personal que no es de TI

Trabajo en una empresa corporativa semi-grande como desarrollador de software. Recientemente, algunos de mis colegas del departamento que no es de TI (ventas, marketing...) mostraron interés en aprender los conceptos básicos del desarrollo de software para comprender mejor las capacidades del departamento de TI. Estaría más que feliz de presentarles el tema, pero no estoy seguro de cómo empezar y adónde ir. Supongo que es necesaria una introducción a lo que son los algoritmos y por qué algunas tareas parecen fáciles pero, de hecho, pueden ser increíblemente complicadas, pero aparte de eso, estoy perdido.

¿Cuáles podrían ser algunos buenos temas para discutir con ellos?

PD: si esto no es algo adecuado para el lugar de trabajo.SE, avíseme si hay algún sitio de SE mejor para discutir este tema.

No creo que sea adecuado para el lugar de trabajo, sin embargo, no estoy seguro de a qué SE en particular pertenece. Esta lista de reproducción es un recurso bastante bueno y utiliza el procesamiento, que permite a las personas visualizar cómo interactúan las cosas. No es un entrenamiento "formal", pero debería mantenerlos interesados ​​y ayudarlos a aprender.
El chat de este sitio probablemente sea el mejor lugar para obtener respuestas significativas a esto. Me preocupa que esto realmente no encaje en "navegar en el lugar de trabajo" y es un poco más, "¿cómo puedo hacer mi trabajo?" territorio. Vea el chat aquí , ya que es posible que tenga mejor suerte.
Recuerde consultar con su gerente antes de dedicar su tiempo y el de sus colegas a algo que, en última instancia, está fuera del alcance de su responsabilidad. No estoy seguro de que pueda explicar nada más allá de lo básico sin tomar mucho tiempo, lo que podría tener el efecto contrario al que espera (es decir, "hombre, esto es solo cambiar algunos valores, ¿cómo gastan esos desarrolladores tanto mucho tiempo en esto?").
@Lilienthal, esto es algo que estoy dispuesto a hacer en mi tiempo libre, ya que las personas en cuestión son cercanas a mí y siento que mostrarles parte de mi trabajo los ayudaría en su trabajo al menos un poco, así que incluso si está fuera del alcance de mi responsabilidad, no me importa. Sin embargo, me doy cuenta de que otras personas que podrían estar interesadas en esta pregunta probablemente no compartan esta habilidad, por lo que mantendré la pregunta como está. Gracias por el aporte de todos modos, es una observación válida.
"aprender los conceptos básicos del desarrollo de software para comprender mejor las capacidades del departamento de TI" Digamos que muestran aptitudes y terminan siendo capaces de escribir un guión decente, genial, algo bueno, ni siquiera cerca del desarrollo de software profesional. Si la parte del alcance de esta pregunta es si educar a colegas de esta manera cumple con sus objetivos: parece poco probable.
@NathanCooper, mis objetivos no son crear una nueva generación de guionistas/programadores, sino más bien tratar de cerrar la brecha entre los programadores y el resto del equipo. Desde mi experiencia, los que no son programadores no tienen idea de lo que implican tareas aparentemente triviales, cuántos gastos generales de administración hay o por qué es demasiado costoso cambiar el color de ese botón.
"esto es algo que estoy dispuesto a hacer en mi tiempo libre". Este es un buen pensamiento, pero si se pone de moda, y muchas personas vienen y te piden lecciones, tutoriales, preguntas, etc., fácilmente podría convertirse en una gran parte de tu tiempo para un día determinado. ¿Quiere ampliar sus horas +3 horas al día para manejar estas cosas "en su propio tiempo"?
¿Les vas a enseñar a programar para que sepan por qué es demasiado caro cambiar el color de ese botón? ¿Por qué es demasiado caro cambiar ese botón?
@Brandin No me preocupa que llegue a eso y, si es así, lo llevaré a los superiores (para asignar algunas horas de mi tiempo semanal/mensualmente) si resulta ser beneficioso o lo rechazaré si no.
@Frisbee tal vez estemos usando un marco (muy) mal diseñado, tal vez sea un botón personalizado loco hecho por un tipo que ya no funciona aquí y nadie más puede leer su código o cualquier número o razón que pueda sonar extraño para una persona que no está familiarizada con cosas por las que tenemos que pasar...
Sí, suena raro y escribo software para ganarme la vida. No entiendo cómo enseñarles a programar hará que aprecien por qué es demasiado caro cambiar el color de un botón.
No pretendo enseñarles a programar, quería algo más como lo que sugirió Stephan Branczyk en su respuesta.

Respuestas (3)

No les enseñes programación de computadoras. Eso es demasiado de una empresa.

Si desea que comprendan el proceso de desarrollo de software, remítalos a libros como CODE de Charles Petzold, The Pragmatic Programmer de Andrew Hunt y David Thomas, The Mythical Man Month de Fred Brooks o Peopleware de Tom DeMarco .

El conocimiento de alto nivel que pueden aprender de estos libros será más valioso para ellos que solo el ABC rudimentario de la programación.

Si desea pasar el rato con esas personas durante su tiempo libre porque simplemente disfruta de su compañía, entonces le recomendaría jugar al póquer, hacer caminatas, bailar o cocinar, pero no pretenda que estas actividades van a estar relacionadas con el trabajo.

Estoy investigando los libros que sugieres y parecen interesantes, ¡gracias por los consejos! Definitivamente no se trata solo de pasar más tiempo con ellos, disfruto de su compañía, pero nos vemos fuera del trabajo. esto es estrictamente profesional
Voté esta respuesta porque es acertada. Si estas personas realmente quisieran aprender a programar, ya lo habrían hecho con todos los recursos que ya están disponibles. También agregaría libros sobre desarrollo ágil y creación de macros de Excel y Word.

De alguna manera, ha respondido a su propia pregunta:

...aprender los conceptos básicos del desarrollo de software para comprender mejor las capacidades del departamento de TI

Si esto es simplemente algo que está tratando de obtener un resultado profesional, entonces, como todas las tareas, debe enfocarlo hacia ese objetivo. Tenga en cuenta que esto no implica que realmente necesite enseñarles a codificar :)

¿Cuáles podrían ser algunos buenos temas para discutir con ellos?

Bueno, ¿cuáles son tus puntos débiles para ellos? Posiblemente comience con:

  • Alcance, diseño, implementación, pruebas, mantenimiento. El ciclo de vida del desarrollo de software
  • Recursos
  • Complejidad inesperada de codificación
  • Seguimiento de errores
  • Opciones tecnológicas

Ahora, vincúlelos con los tipos de desafíos que un equipo de desarrollo debe enfrentar en el día a día:

  • Impacto de cambiar el alcance
  • Impacto de cambiar los plazos
  • Impacto de ese bicho complicado
  • Cómo las pruebas retroalimentan el ciclo de desarrollo y lanzamiento
  • Limitaciones y dificultades con una herramienta o tecnología en particular

Sin ofrecer una sola línea de código, puede brindar una cantidad considerable de información sobre cómo las capacidades del departamento de TI impactan y son impactadas por fuentes externas, como las personas a las que intenta educar. Creo que encontrará mucho más valor profesional en este enfoque que simplemente intentar que escriban una aplicación "Hola, mundo" :)

Y para este grupo de personas, enfatice especialmente cómo informar un error de una manera que facilite al desarrollador encontrar la causa. Dé ejemplos de informes de errores buenos y malos.

Simplemente presentaría su proceso interno de cómo hace las cosas. Incluiría muchos ejemplos de por qué ciertas cosas funcionaron bien, por qué algunas cosas no funcionaron y cómo pasa por nuevas versiones y errores.

  • No recomendaría que aprendan a programar. No lo harán. Y ha desperdiciado el tiempo de todos y esta vez podría educarlos sobre su proceso.
  • No recomendaría darles una "conferencia" o curso sobre programación o metodología. Los pondrás a dormir.
  • No recomendaría darles libros para leer. Primero no leerán los libros. En segundo lugar, incluso si leyeran el libro, malinterpretarían el significado de la mitad de las cosas sin ningún contexto previo. Y luego aplique mal estas cosas en su lugar de trabajo. Mis chicos de marketing se reirían si les sugiriera un libro.

Es realmente fácil. Conozca a su audiencia. Si puede dar una conferencia específica a su equipo de marketing, muéstreles cómo sus interacciones afectaron los ciclos de programación, ya sea una recomendación de un cliente, una nueva característica para ganar una venta, un error, una mejora cambiada a mitad de camino, lo que sea. Cuando dices el nombre de "Mark" y dices Mark, nos pediste que hiciéramos esto y esto es lo que hicimos, la gente te escuchará porque es algo con lo que pueden identificarse y podría afectarlos en el futuro.