¿Cuáles son sus sugerencias para aprender a pensar? [cerrado]

22

En primer lugar, esta no es la pregunta genérica 'hazme un mejor programador', aunque el resultado de hacer esta pregunta pueda parecer similar. En los programadores, SE, he leído y he visto que se cierran aquí , aquí , aquí , aquí y aquí .

Todos sabemos que hay una multitud de sugerencias genéricas para perfeccionar sus habilidades de programación (por ejemplo, leer SO, leer libros recomendados, seguir blogs, involucrarse en proyectos de código abierto, etc.). Esto no es lo que busco.

También reconozco el número de lectores activos en este sitio web y espero que funcione a mi favor dando algunas respuestas excelentes. Al leer la correspondencia aquí, parece haber una gran cantidad de personas con experiencia que trabajan o han trabajado en campos relacionados con la programación. Y la mayoría de ustedes pueden transmitir pensamientos de una manera elocuente y concisa.

Recientemente he notado la distinción entre alguien que es capaz de programar y un programador que realmente puede pensar . Me niego a creer que para ser buenos programadores, simplemente nos sometemos a una vida de comportamiento esponjoso (es decir, absorber todo lo relacionado con nuestro campo leyendo, escuchando, mirando, etc.). Incluso afirmaría que simplemente conociendo cada concepto de programación que le permite resolver el problema X más rápido que todos los que lo rodean, si no puede pensar , se está limitando enormemente: es solo un robot rápido.

Me gusta creer que hay una cara completamente diferente de ser un gran programador que no tiene relación con cuánto sabes sobre programación, pero es qué tan bien puedes entrelazar nuevos conceptos y aplicarlos a tu profesión de programación o pasatiempo. No he visto a nadie profundizar o abordar esta faceta de la mente humana y la programación. (Sí, también es posible que no haya buscado lo suficiente, lo siento si ese es el caso).

Entonces, para cualquiera que haya pasado algún tiempo pensando en lo que he mencionado anteriormente, o tal vez todos estén aquí porque estoy un poco retrasado en mi desarrollo personal / profesional, ¿cuáles son sus sugerencias para aprender a pensar? Además de la lectura habitual, ¿qué más has hecho para ser mejor que las otras personas en tu / nuestro campo?

JK
fuente
Deberías pensar como yo porque soy genial.
ChaosPandion
Haz algunas drogas duras como lo hizo Steve Job.
Trabajo
La programación funcional enseña a pensar. Todo lo demás enseña a programar;)
Dario

Respuestas:

13

Mis sugerencias para aprender a pensar:

  • Aprende nuevos idiomas . Lenguajes tanto naturales como de programación. Tenga siempre un nuevo idioma para aprender en su mano. Pensar se hace más y menos en un idioma. Cada idioma tiene una "visión" diferente sobre el pensamiento. Más idiomas que conoces, más "herramientas mentales", conceptos, puntos de vista y abstracciones están disponibles para ti.

"El lenguaje da forma a nuestra forma de pensar y determina en qué podemos pensar". - Benjamin Lee Whorf

Y lo más importante, el lenguaje determina lo que no podemos pensar.

  • Lee con voracidad . Leer en general. No solo se trata de programación, sino de historia, sociología, biología, artes, etc. Amplíe sus perspectivas. Obtenga nuevas ideas. No solo eres lo que comes, también eres lo que lees. Las nuevas ideas se tratan más de combinar dos (aparentemente) ideas diferentes, que un destello divino de creatividad de la nada.

"La suerte favorece a la mente preparada." -- Luis Pasteur

  • Humildad . Debes saber mucho para entender lo poco que sabes. La humildad ayuda a mantener la mente abierta a nuevas formas de pensar.
  • ¿Pregunta porque? No te conformes con cómo.
  • Aprende matemáticas . Una herramienta realmente poderosa, un tipo de lenguaje, para trabajar con lógica y abstracciones. Estudiar matemáticas fortalece tu cerebro. Equivalente mental de "ir al gimnasio".
Maglob
fuente
No estoy tan seguro de los idiomas naturales. Aprenderlos tiene valor, pero ¿para pensar? En un contexto de programación? El valor de las palabras para pensar a veces se exagera: podemos tener ideas que no podemos expresar fácilmente en palabras, por lo tanto, no dependemos totalmente de las palabras para formar ideas. Además, el vocabulario más relevante (jerga para las matemáticas y otros campos técnicos) es muy compartido entre los idiomas.
Steve314
6

Desde mi experiencia, todo se reduce a dos cosas:

  1. Pasión, si está interesado en el oficio, aprenderá, se adaptará y será más rápido para pensar fuera de la caja que muchos programadores que están en el campo como trabajo. (Algunos de los cuales no tienen computadoras en casa).
  2. Algunas personas nacen con la capacidad de resolver problemas técnicos. Algunas personas naturalmente tienen la capacidad de extraer una solución flexible.

Más allá de esto, todos son bastante diferentes en cuanto a cómo piensan acerca de la programación o aprenden nuevas habilidades de programación. Te sugiero que sigas probando cosas nuevas y que mantengas lo que funciona bien para ti.

jzd
fuente
Buenos puntos, particularmente el segundo punto.
Orbling
5

¿Cuáles son sus sugerencias para aprender a pensar?

Práctica. Práctica. Práctica.

En serio, la actividad mental (es decir, pensar) es como la actividad física. Cuanto más lo hagas, mejor podrás hacerlo. (De hecho, la actividad física también implica un tipo de actividad mental. Los mejores deportistas no solo tienen los músculos en el lugar correcto ...)

Entonces, ¿cómo practicarías (efectivamente) el pensamiento?

(Aquí estoy generalizando de otra cosa ...)

Creo que identificaría los problemas de pensamiento que le resulten difíciles (pero no imposibles) y tratará de resolverlos (piénselos bien) y más como ellos.

Stephen C
fuente
De alguna manera apoyo esto. Cada vez que hago algo repetitivo que no requiere pensar, estoy pensando en otra cosa. También tiendo a hacer esto cuando hago cosas repetitivas en las que debería pensar, como conducir, pero de alguna manera siento que conduzco mejor cuando no estoy pensando en ello.
Earlz
1
@ Earlz - No entiendo tu punto. Si está haciendo algo repetitivo, no necesita pensarlo. Estoy hablando de practicar para resolver problemas que requieren pensar.
Stephen C
la experiencia triunfa sobre todo (una especie de declaración general, lo sé) pero aprendes con el tiempo, quiero decir, con qué frecuencia te has topado con un problema, te tomó una eternidad resolverlo, solo para volver a encontrarlo y resolverlo en minutos. También es la forma en que abordas un problema, no te concentres en quedarte atrapado, siempre concéntrate en lo que aún no he probado, desde el más simple hasta el más complejo
farinspace
Práctica deliberada . Necesita aprender algo de cada iteración.
4

Te pueden interesar las siguientes dos cosas:

El flujo

Mihály Csíkszentmihályi , profesora de psicología húngara, introdujo el concepto del flujo .

El flujo es el estado mental de operación en el que una persona en una actividad está completamente inmersa en un sentimiento de concentración energizada, plena participación y éxito en el proceso de la actividad.

Tengo la suerte de poder entrar en el flujo todos los días utilizando una técnica antigua que aprendo de mi aplicación de GTD, que es la próxima acción .

Puedo decirte que realmente hace la diferencia. Cuando estoy en el flujo, produzco mayor calidad y más rápido que cuando no estoy en ese estado. Estoy totalmente centrado en lo que hago y, por lo tanto, pienso de manera más efectiva.

Atención plena

Hace un tiempo hice una pregunta sobre la meditación porque me preocupaba el hecho de que la meditación podría disminuir mis habilidades de programación (y creativas).

Acabo de comenzar el entrenamiento del método Jon Kabat-Zinn , por lo que es demasiado pronto para compartir con ustedes experiencias extensas, pero de los pocos que aprendo hasta ahora puedo decirles que esto es probablemente algo que querrán hacer.

Comunidad
fuente
+1 Aunque odio que haya un libro y una "teoría" completa sobre lo que equivale a un enfoque de sentido común para un problema, GTD ciertamente tiene piernas.
Orbling
1
@Orbling: oh, estoy totalmente de acuerdo contigo en eso. Pero, como en la mayoría de los libros, hay basura y valor. Lo que es basura y valor depende de quién está leyendo el libro. El problema con GTD es que es tan poderoso que puede aplastarte si no te tomas el tiempo para reducir tu aporte en lugar de concentrarte en administrarlo sin importar su tamaño. Ese fue mi error;)
El problema que tengo en mi vida es que hay tanto aporte y tanto que hacer que no tendría tiempo para implementar tal procedimiento. Aunque ciertamente puedo ver el valor en él.
Orbling
1
@Orbling: Creo que esa es la clave. Filtrar su entrada es la mejor técnica de productividad, además de Covey o GTD. Requiere ser muy fuerte mentalmente.
Me parece que necesita personas adicionales para realizar las tareas que filtra, jajaja.
Orbling
2

Siempre he creído que los buenos ingenieros nacen, no se hacen.

Necesita la mente preparada para ello, la mente lógica, analítica y deductiva, combinada con la tenacidad y la curiosidad necesarias para obtener una visión general y una visión estructural de un problema de manera eficiente y caminar rápidamente de A a B, enrutando su mente a través de la solución.

Hay mucha investigación que sugiere que esta habilidad se ve enormemente impulsada por la buena exposición temprana a tales cosas, la música también ayuda. Después de cierto punto en el tiempo, tus mapas mentales están bastante conectados. No en términos de lo que piensas, sino de cómo piensas.

¿Puedes aprender a pensar como adulto? Bueno, ciertamente se te pueden enseñar técnicas para resolver problemas, pero luego tienes algoritmos que seguir, puedes convertirte en un "robot muy rápido", como expresaste elocuentemente. La comprensión intuitiva es probablemente innata.

Esto de ninguna manera se limita a nuestra profesión, muchos conjuntos de habilidades están dominados por la habilidad innata, en lugar de la respuesta adquirida. Puede que la gente no quiera que eso sea cierto, pero lo más probable es que lo sea.

Orbling
fuente
2

Encuentre un foro en línea sobre algo que le apasione. Algo que tiene algún tipo de comunidad. Preferiblemente no programación: los foros de programación suelen estar más orientados a la solución que a la discusión. Toma una posición. Defiéndelo. Usa argumentos. También puedes bloguear, pero tener un oponente es mejor. El punto es tener una comunicación significativa y escrita sobre algo con alguien. Donde intercambias piezas de texto algo más grandes.

Aprenderá a comunicar sus ideas y argumentarlas. Dado que tendrá que defender sus puntos de vista, tendrá que apoyarlos con hechos. Tendrá que pensar en algo, articular su posición y apoyarla; tal vez incluso cambiarlo.

Luego, aproveche esa capacidad para analizar el problema y sintetizar la opinión y aplicarla a cualquier cosa. Incluso la programación.

Domchi
fuente
Debo decir que esa es una forma de practicar el pensamiento. No es el único.
Domchi
2

Una cosa en la que pienso es que hay que ver las cosas como sistemas, y todos los sistemas están relacionados. Todos y cada uno en el universo. La humanidad, los planetas, la galaxia, las plantas, la luz solar, la fotosíntesis, los insectos, las rocas, los océanos, todos los sistemas que interactúan. Asimismo, en el tiempo, ciclos: nacimiento, crecimiento, decadencia, muerte, de insectos, personas, civilizaciones, cadenas montañosas, sistemas estelares. La lucha sin fin por la energía. Todos los sistemas

Este es el Estudio de la Vida y la Naturaleza en el gran sentido del Estudio. Ver todas las cosas relacionadas, ver todas las cosas interactuando. Concéntrese en esto cuando vea la puesta de sol y sienta la profundidad de las fuerzas de gravedad que nos hacen girar alrededor del Sol, nos empujan hacia la superficie del planeta y la luz solar que se enrojece antes de entrar en su retina a 300,000,000 metros por segundo y hacer imágenes en tu cerebro de primates.

Cuando comienzas a pensar en eso, en cómo todo está relacionado, en cómo el precio del oro y el trabajo esclavo y las tormentas en todo el Pacífico y los complejos industriales en Japón están relacionados, y te tomas el tiempo, realmente toma el tiempo para sentarte y piense en todo esto, entonces su "músculo" pensante realmente se flexionará y crecerá.

Ahora, mucho de eso estará por debajo del umbral de expresividad, pero no dejes que eso te detenga. Tu cerebro es más poderoso que la computadora más poderosa. Empujalo. No creo que sea posible overclockearlo.

Recuerdo una imagen en blanco y negro que mostraba a Albert Einstein descansando en una silla de jardín en la playa mirando el océano. El subtítulo decía: "Aquí se sienta Albert Einstein. Con su cerebro".

El próximo desafío es poder comunicar la complejidad y la interdependencia de todas las cosas de una manera simple. Esto te dará algo que hacer hasta que seas muy viejo.

Christopher Mahan
fuente
2

Un enfoque es la práctica deliberada .

La repetición simple no conduce a ninguna adquisición de habilidades: debe ser introspectivo, evaluar su desempeño e identificar formas de hacer las cosas mejor.

Una ilustración: un pariente cercano mío compite en el deporte del tiro con pistola. Durante el entrenamiento, se concentra mucho en revisar cada disparo, enfocándose en los pasos que van correctamente. Contrarrestando intuitivamente, no se enfoca mucho en las tomas deficientes, porque repetir (ensayar) el error lo refuerza.

Simplemente disparar 100 disparos por el rango no logra nada. La práctica deliberada de disparar 20 tiros reforzará los buenos hábitos y conducirá a un mejor rendimiento.

Lo mismo se aplica a la programación: piense en lo que hace. No lo haga mensualmente, semanalmente o diariamente, hágalo momento a momento, acción por acción.

  • ¿Por qué ocurrió ese defecto en mi código?
  • ¿Cómo podría haber evitado crear ese defecto?
  • ¿Cómo podría haber encontrado la solución más rápidamente?
  • ¿Qué suposición mía estaba mal?
  • ¿Pedí ayuda lo suficientemente rápido? ¿demasiado rapido?
  • ¿He cometido ese error antes?
  • ¿Este defecto está aislado o es parte de un patrón?
  • ¿Hay un defecto de diseño subyacente?
  • Si es así, ¿puedo hacer algo al respecto?

Y así ...

Bevan
fuente
gran punto, de nuevo todo esto viene con el tiempo / experiencia
farinspace
1
@farinspace, solo si se toma el tiempo para evaluar y aprender después de cada iteración.
1

Ve a hurgar en algo que amas hasta que encuentres una ventaja.

Respiracion profunda,

Da un paso ...

...

... Dile a otros lo que has encontrado.

Paddy3118
fuente
1

Entonces quieres pensar

Muchas sugerencias en su mayoría excelentes de otros carteles sobre cómo pensar o cómo aprender a pensar: el flujo, la atención plena, las matemáticas, la pasión, la práctica ... por lo que no iré allí, cubierto.

Pero ninguno sobre por qué. ¿Cuál es el propósito?

Personalmente, he llegado a comprender que antes de que puedas pensar necesitas saber por qué.
Lo mejor que puedes hacer es escuchar y mirar. (Tomo ambos como una unidad, no puedes separarlos)

La única forma de mejorar en la programación, ya sea reuniendo requisitos, transformando esos requisitos en especificaciones detalladas del sistema, haciendo coincidir esto con los documentos de diseño, implementando el código, depurando su querida vida, ya sea que omita alguna o todas esas etapas, Ya sea que tenga cinco minutos para encontrar una solución o 20 años, debe escuchar y buscar.

Escuche lo que el usuario quiere, escuche lo que el usuario le dice que sucedió, escuche a la persona de soporte que le dice que vio. Escucha. Escucha incluso si no tiene sentido. Escucha incluso si estás convencido de que están tan equivocados. Escucha y no juzgues.

Busque pistas, no buscando sino abriendo los ojos. Mira la realidad. No puede comenzar a buscar respuestas antes de mirar la escena del crimen. No puede encontrar una solución hasta que haya probado la falla.

Un solo ejemplo de mi experiencia(en resolución de errores, pero podría adaptarse a cualquier cosa realmente). Por razones obvias (legales y de otro tipo) mantendré los detalles jugosos fuera de esto. En un sistema crítico de seguridad, un operador reportó una falla grave. Algunos dispositivos de rastreo geográfico realmente perdieron el rastreo cuando 'no' debió hacerlo, con un impacto potencial en las vidas (este 'debería' fue el verdadero error y detuvo nuestras investigaciones durante demasiado tiempo). Afortunadamente, aunque esto se encontró semanas después casi por casualidad, ya que había otro sistema en funcionamiento en una ubicación remota para el cual otro operador vino a probar que el seguimiento no se había perdido en ese sistema. Esto nos hizo pensar de nuevo. Nuestro principal proveedor de software no nos creyó ni un segundo, así que tuvimos que salir y probar el asunto. La única forma era a través del injerto: construyendo una simulación para replicar la situación operativa exacta. Tuvimos que filmar la prueba para que el proveedor nos creyera. Finalmente, la simulación arrojó información más allá de nuestras esperanzas y nos llevó a comprender todo el problema. No tardó mucho en arreglarlo después de eso.

La única forma de llegar hasta el final fue conectando lógicamente un sistema remoto con otro haciendo un trabajo similar pero no el mismo trabajo. Esa es la búsqueda de pistas (Mira). Esto solo fue posible al confiar en el informe único y no descartarlo como una falla aleatoria en el sistema (Listen), y luego escuchar nuevamente el segundo informe que contradecía el primero (Listen).

Entonces, cuando tiene las pistas correctas (después de haber escuchado y mirado), definido el área del problema, entendido la causa raíz o los principios clave, puede pensar primero en soluciones para una mayor comprensión (prueba y error, simulaciones, demostración, prueba de concepto, maquetas, versiones alfa, beta) y, finalmente, ofrecen una solución sólida (que a veces se puede mejorar aún más después de una operación real).

Para poder escuchar y mirar de este modo se necesita una mente abierta, confianza y dedicación absoluta a sus objetivos. Este es el combustible que necesita pensar, o más al punto para que su pensamiento se centre en el objetivo correcto (a menudo, el problema no es la incapacidad para pensar, sino la falta de un objetivo bien definido para ejercitar su mente).

asoundmove
fuente
+1 para su respuesta, estudiar su dominio del problema y escuchar a los usuarios es esencial. Aunque -1 para el comentario "sí, claro", así que no hay cambio.
Orbling
@Orbling: Ok, tienes razón, eso fue un poco exagerado. Comentario eliminado No creo que el talento innato sea correcto, pero no es necesario mencionarlo.
asoundmove
Bueno, si tuvieras -1 mi respuesta, habría marcado la tuya de todos modos, pero lo evitó en esto, solucionado ahora. Está bien mencionarlo como incorrecto si no está de acuerdo con lo que dije.
Orbling
@Orbling, no, no me apetece votar -1 por nadie, prefiero seguir adelante ... Solo los escenarios extremos justifican -1, solo estar en desacuerdo no.
asoundmove
Estoy de acuerdo con usted en los otros sitios, ya que son correctos / incorrectos en general. Programmers.SE es diferente del resto, ya que es subjetiva, por lo que la votación es básicamente de acuerdo, desacuerdo. Si crees que es útil o inútil. Solo voto negativo si estoy totalmente en desacuerdo con alguien. Al momento de escribir, el 2.6% de mis votos son votos negativos. Las opiniones, después de todo, deben ser cuestionadas.
Orbling
1

Creo que necesitas hacer la distinción entre diferentes tipos de pensamiento.

Pensamiento creativo: cómo generar nuevas ideas, soluciones innovadoras y resultados inesperados. Hay toda una ciencia detrás de esto, busca a Edward de Bono, técnicas de creatividad, etc. No muchos programadores miran en esta área.

Pensamiento analítico: con esto quiero decir proceso científico. Mire las entradas, salidas, mida lo que es importante, llegue a conclusiones lógicas. La mayoría de los desarrolladores están familiarizados con la técnica científica pero nunca la usan realmente. Hazlo!

Pensamiento crítico: creo que esto es más filosofía. Retroceda y mire el panorama general, revise sus suposiciones, ¿realmente hace lo que dice que son sus valores? Estudie filosofía hay un montón de grandes autores e ideas por ahí.

Ricardo
fuente
0

Las matemáticas le enseñan a uno a pensar. La aplicación requiere creatividad y experiencia.

Me niego a creer que para ser buenos programadores, simplemente nos sometemos a una vida de comportamiento esponjoso.

Buena idea En términos generales, los requisitos de "grandeza" dependen de su definición personal de "grandeza" ... y han cambiado con el tiempo. Hoy en día, el éxito del proyecto consiste en poder unir conceptos rápidamente y sin profundizar en todos los detalles esenciales. El éxito personal podría definirse como el dominio de C # como Jon Skeet.

Leer codificador en el trabajo . Codificadores mucho más experimentados que los que discuto en detalle.

P.Brian.Mackey
fuente
0

Trabaja en la aplicación de ideas y conceptos de áreas aparentemente no relacionadas. Para mí, la brillantez del iPod no fue la ingeniería detrás de hacer un gran reproductor de MP3, sino ayudar a resolver un gran problema que la industria del entretenimiento musical tenía con la música pirateada y el modelo de CD / Álbum de vender música. Jobs probablemente aplicó más de lo que aprendió en Pixar al tratar con la industria del cine. Sabía cuál era el verdadero problema.

JeffO
fuente