Esta es una pregunta bastante general, así que daré una respuesta general:
Hay dos características generales de lo que yo llamaría una “mentalidad de programador”.
- No me gusta la “magia”
- Aversión a la ambigüedad.
Programar es simplemente dar un conjunto de instrucciones completas e inequívocas a algo increíblemente estúpido. Sin embargo, para darles esas instrucciones, usted mismo debe comprender completamente el proceso.
El problema es que si bien las personas a menudo sienten que entienden un proceso, un cuestionamiento cercano revela que hay elementos “de mano” en los elementos de su comprensión. En la vida real, esto casi siempre está bien. Existe una gran cantidad de comprensión general que le permite pasar por alto detalles que realmente no entiende completamente porque a nadie le importa, ya que no interfiere con el panorama general de la comprensión.
- ¿Qué sentido perdemos primero cuando morimos?
- ¿Por qué no se debe barrer y trapear por la noche?
- ¿Viven las sirvientas y sirvientes en la casa o mansión del amo?
- ¿Es la historia de Oprah Winfrey realmente inspiradora o solo una exageración?
- ¿Cuáles son algunas de las mayores alegrías de no tener hijos?
Personalmente, llamo a esto “magia” de mano ondulada.
Como programador, los detalles importan. La mentalidad de los programadores es bastante implacable en la necesidad de comprender cada detalle del proceso que desea que realice la computadora. El disgusto de “magia” es ese elemento que te obliga a examinar “realmente entiendo esta parte” hasta que estés satisfecho.
El segundo elemento de la programación es que las computadoras son estúpidas, lo que significa que no debe haber ambigüedad en las instrucciones que les das. “Dobla la hoja de papel” tiene un número literalmente infinito de resultados. “Dobla hacia atrás, 3 cm desde la parte superior donde la parte superior se define como el borde más corto” es mucho mejor.
En un aula, un pequeño ejercicio de “escriba las instrucciones para doblar un avión de papel, luego páseselo a la persona que está a su izquierda y haga que sigan exactamente las instrucciones” a menudo ilustra el peligro de la ambigüedad.
También indica por qué usamos lenguajes de programación en lugar de lenguajes humanos, ya que eliminar la ambigüedad de los lenguajes humanos es casi imposible.
De todos modos, como programador (y sí, traigo esto a la vida real), mi mente está constantemente tratando de reducir la ambigüedad en las instrucciones que doy.
(Debe decirse que reducir la ambigüedad con las personas puede ser contraproducente. Las instrucciones menos ambiguas suelen ser más largas y, por lo tanto, propensas a errores).
¿Cómo se aprende a pensar como un programador? Práctica. (¿Hay alguna otra respuesta a preguntas como esta?)
Busque constantemente los detalles detrás de cómo y por qué son las cosas. Pregúntese qué * no * entiende sobre los detalles de cualquier proceso. Solo acepte “porque” como la razón de algo si ha * conscientemente * decidido que no necesita saber más.
En cuanto a reducir la ambigüedad, eso también es práctica. En la vida real, dar instrucciones a las personas que no comparten su conocimiento y cultura es una buena práctica para examinar cuántas suposiciones integradas de conocimiento compartido se encuentran dentro de sus instrucciones.
Lo último que agregaría no es tanto una mentalidad, sino una habilidad (que se ayuda, sí, con la práctica). Y eso es simplemente la capacidad de seguir conjuntos complejos de instrucciones uno mismo. Cuando era estudiante universitario y escribía un código para no programadores, me sorprendía constantemente que más de 4 pasos de instrucciones perdieran a la mayoría de las personas. Ahora me doy cuenta de que es simplemente una habilidad que se incrementa con la práctica.
Para la programación, es la habilidad principal de la que se deriva todo lo demás. No puede crear una serie compleja de instrucciones si no ha desarrollado la habilidad para seguir una serie compleja de instrucciones.
En la vida real, la práctica obvia es leer y seguir realmente todas las instrucciones cuando obtenga un dispositivo con un manual de instrucciones. Es más trabajo y muchos manuales son bastante malos, pero es una buena práctica. ¡Finalmente pude establecer la hora en mi VCR!