¿Los programadores necesitan una buena memoria? [cerrado]
16
Parece que uno tiene que recordar todo tipo de sintaxis para poder programar. Si uno no tiene buena memoria para recordar nombres, ¿será más difícil aprender a programar?
Había un nombre para tener una buena memoria para los nombres, pero olvidé de qué se trata.
Mike Two
3
Si la sintaxis es un problema, elija un idioma que tenga la sintaxis mínima. Lisp / Clojure?
Quirón
1
Estos días no paso todo el día programando, pero sí paso algún tiempo programando todos los días. Y programo en un montón de idiomas que no se parecen. Programa en C, Java, Javascript, Lisp, VBA, PL / SQL, Ruby, Python, Perl, Smalltalk e incluso un pequeño Prolog de vez en cuando. Solo busco la sintaxis.
Mike Sherrill 'Cat Recall'
44
Si lo hacen, lo he estado fingiendo durante unos 13 años.
ElGringoGrande
1
Las universidades ciertamente lo enseñan como si necesitaras buena memoria, lo cual es completamente estúpido. El mío es particularmente notorio por requerir que los exámenes finales de CS valgan al menos el 50% (siempre a libro cerrado) y los exámenes parciales usualmente son al menos del 30-40%.
Rei Miyasaka
Respuestas:
34
La sintaxis de un idioma no es tan difícil como cree recordar, si lo usa a diario. Finalmente se vuelve muy fácil. Recordar todas las funciones de la biblioteca podría ser mucho más difícil y no creo que la mayoría de la gente pueda recordar más que las más comunes que usan, pero está bien si tienes acceso a la Web, a un libro o algo más que " recuerda "todos los otros detalles para ti.
+1. Realmente se convierte en una segunda naturaleza. Miro hacia atrás en código y ni siquiera recuerdo haber hecho ninguna de las reglas de formato que sigo ...
Reid
1
Las guías de bolsillo de O'Reilly me ayudan a llevar un registro de las cosas. Altamente útil
Ingeniero mundial
17
Parece que uno tiene que recordar todo tipo de sintaxis para poder
programar un lenguaje natural.
Si uno no tiene buena memoria para recordar
palabras de nombres , ¿será más difícil aprender a programar
hablar?
No puede ser cierto que las personas tengan una instalación "natural" con los idiomas, ¿verdad?
No es posible que tengamos hardware neuronal de bajo nivel solo para adquirir idiomas, ¿verdad?
La programación utiliza lenguajes artificiales que siguen muchas de las reglas de los lenguajes naturales.
Los lenguajes naturales tienen un poco más de flexibilidad que los lenguajes de programación.
gramática de todavía estricta. reglas hay muy son cuales Pero
Si puede hablar, puede aprender a programar sin memorizar nada más de lo que memorizó cuando aprendió a hablar.
Si está hablando de memoria a corto plazo, entonces sí . Un programador debe ser capaz de hacer malabarismos con múltiples bits de información simultáneamente al programar / resolver problemas.
No:
Si estás hablando de memoria a largo plazo, entonces no realmente. Hay muchos manuales y referencias + herramientas que pueden ayudar significativamente a recordar información. Ciertamente, memorizar esta información a largo plazo lo convertirá en un desarrollador más rápido (en general), pero no es un requisito previo.
+1 Para hacer una comparación útil entre la utilidad de la memoria a corto y largo plazo en relación con la pregunta. Estaba esperando ver a alguien hacer eso.
KChaloux
8
Una buena memoria es absolutamente esencial, pero no por las razones obvias.
Recordar detalles sobre algoritmos específicos, bibliotecas, nombres de variables, etc. es muy útil, pero no es súper importante. Tiene Google, DuckDuckGo, páginas de manual, documentación específica del idioma y editores inteligentes para ayudar con todo lo anterior. Ayuda si no necesita depender de estas muletas, pero le irá bien si las necesita de vez en cuando.
Donde la memoria es esencial es mantener los detalles de lo que está trabajando en la memoria activa a corto plazo. Ser capaz de visualizar el diseño, el flujo de datos, los algoritmos, las estructuras de datos y cómo interactúan todos para hacer lo que sea que haga su producto separa al programador OK del gran programador. Cuando lo haces activamente, se siente como si estuvieras haciendo malabares con éxito una cantidad gigantesca de pelotas mientras andas en monociclo.
Esto a menudo se conoce como estar en la zona . Las interrupciones, las preguntas estúpidas, los jefes que necesitan informes TPS te sacan de esta zona.
Cuanto mejor sea su memoria, más fácil será ingresar a la zona, más fácil será permanecer allí, y más fácil será regresar a ella después de una interrupción.
Si tienes problemas con este tipo de memoria, te sugiero que aprendas técnicas de meditación y trucos de memoria a medida que tu memoria sea más fácil, mayor éxito tendrás como programador.
De hecho, diría que los requisitos de memoria se reducen si es mejor modularizar el programa y nombrar las cosas correctamente. Si tiene un método de dos páginas con 20 variables, debe recordar mucho más que si tiene un método de 5 líneas con llamadas a otros métodos bien nombrados para realizar subtareas. Además, cada vez que desee modificar algo tan complejo, debe ingresar a "la zona" para hacerlo. Mientras que si es más simple, puede hacer su cambio. Yo diría que "la zona" es una responsabilidad.
Cervo
1
@Cervo: Sí, cuando codifica módulos individuales y pequeñas unidades de código, lo que describo anteriormente no es realmente necesario. Pero cuando está depurando un sistema completo y tratando de encontrar en qué módulo agradable, ordenado y limpio se encuentra el problema, ayuda a tener en cuenta tanto estado como sea posible.
antipático
¿Por qué en el mundo esto tenía solo un voto? No puede diseñar su código correctamente sin recordar cómo encaja en las cosas que lo rodean. Una gran cantidad de programación moderna se trata de reducir la cantidad de detalles que esto conlleva, pero eso simplemente reduce la cantidad que debe recordar, no el hecho de que debe recordarlo para hacer su trabajo.
Loren Pechtel
5
Voy a ir en contra de la corriente y decir que sí . Un buen recuerdo es ser un activo increíble como programador. Mi memoria siempre la he visto como un problema de programación, así que he aprendido algunos trucos para compensar mi discapacidad:
Debería poder recordar cómo se deletrea esa variable (que usó 3 líneas antes). Si no puede aprender a usar Intellisense (o cualquiera que sea su forma de autocompletar está en su editor o IDE).
Debería poder recordar rápidamente lo que estaba haciendo la última vez que trabajó en este proyecto. Esto pudo haber sido hace días, podría haber sido justo antes del almuerzo. Si no puede, aprenda a escribir cosas . Mantenga un cuaderno a su lado y escriba lo que estaba (o está haciendo), TODOS los elementos y las cosas que necesita recordar sobre cómo encaja el código actual en el que está trabajando.
La depuración y el control de calidad es difícil. Idealmente, debe mantener un cuaderno muy detallado sobre los pasos que siguió al intentar reproducir un error o depurar algo. Esto es algo que sé que debo hacer, pero con lo que aún lucho.
La Guía de Guerrilla para las entrevistas (versión 3.0) es una referencia común que señala que ser inteligente y hacer las cosas son los puntos importantes de la programación. Smart incluye algunas habilidades de memoria, pero no necesariamente tanto como puede pensar.
Intellisense puede ayudar mucho en lo que respecta a la sintaxis si desea ayuda en ese aspecto. Saber cómo aprende para que pueda aplicar rápidamente lo que aprende de una manera significativa es más importante que poder responder preguntas de trivia.
Creo que recordar nombres es una función cognitiva bastante diferente de recordar procesos, que es diferente de recordar vocabularios. Ha habido casos de personas que han recibido lesiones cerebrales que eliminaron por completo la capacidad de recordar nombres y funcionar perfectamente bien de lo contrario.
Entonces diría que la capacidad de recordar nombres no está relacionada con el aprendizaje de lenguajes de programación.
Sin embargo, sería útil poder recordar patrones lógicos, reglas y vocabulario.
Estoy bastante seguro de que tienes razón. El indicador de tipo Myers-Briggs dice que los INTP (que son especialmente adecuados para convertirse en programadores) tienen problemas para recordar los nombres de las personas. Sé que eso es cierto en mi caso. Puedo recordar los nombres de tus mascotas, la matrícula de tu auto y dónde puse la copia impresa de un rastro de pila que me diste el año pasado que tenía las extrañas nuevas líneas como 0x0D0A0D. Sin embargo, tu propio nombre, lo olvidaré 10 minutos. (Cuando era más joven, me tomó tres años obtener los nombres de todas las personas en mi equipo de fútbol).
Mike Sherrill 'Cat Recall'
2
No. La profundidad de memoria de las herramientas (Intellisense, Google, compiladores, generadores de código) es infinita en comparación con la memoria humana. Por lo tanto, un programador con buena memoria no es mucho mejor que uno con un agujero en la cabeza.
Lo que los programadores realmente necesitan es la "velocidad máxima de ganancia de enfoque" cuando cambian entre niveles de abstracción. Cuanto más rápido puedas, mejor serás como programador. Algunos tienen una velocidad de latido del corazón de 500 ms, con la llegada de la primera onda de sangre al cerebro en el que estás concentrado. Algunos tienen un reloj de enfoque redondeado al ciclo de fumar, aproximadamente 2 horas. Algunos necesitan una ducha matutina, así que unas 24 horas. etc. La diferencia entre programador bueno y malo se declaró una vez hace 1:80 veces, y la brecha solo está creciendo.
No, solo necesitas entender cómo funciona Google para obtener lo que quieres
Tengo un recuerdo horrible, pero mis habilidades en Google son increíbles ^ _ ^
Con toda seriedad, siempre que sepa dónde encontrar la sintaxis, no necesita recordarla. Para eso sirven Intellisense, archivos de ayuda, guías de referencia, Internet, etc.
En primer lugar, aprender a programar es difícil para todos. Tener una buena memoria ayuda, estoy seguro. Pero, la dedicación y el amor por el aprendizaje permanente son más valiosos. La sintaxis de aprendizaje es como cualquier otra cosa, la repetición.
No hay nada mágico o sobrehumano en la habilidad de programar. Solo pasa alrededor de 10,000 horas en él ... y serás un maestro como cualquier otra habilidad. Por supuesto, eso son 10,000 horas de entrenamiento, no repetir ciegamente y aturdir los errores del pasado.
Escribiste esta publicación en inglés, con la sintaxis adecuada. Claramente puedes recordar cómo usar un idioma. Solo necesita aprender un nuevo idioma y usarlo con la frecuencia suficiente para acertar todo el tiempo. A diferencia de los lenguajes orientados a los humanos, los lenguajes de programación de computadoras siempre le avisarán cuando haya usado una sintaxis incorrecta, por lo que en realidad es más fácil. :-)
Estoy de acuerdo en que hay una gran variedad de cosas que un programador promedio puede saber para llevar a cabo sus tareas, solo piense en todas las palabras, sintaxis, técnicas que básicamente debe controlar para construir un sitio web simple (en la parte frontal: html, css, javascript (puede contar también algunos frameworks Js como jquery), ajax, en el back-end: Php o ASP o ASP.Net, y no se olvide de las bases de datos, mySql o SqlServer u Oracle o MongoDB, etc. Hay una gran lista de lenguajes, paradigmas, sintaxis, patrones, etc., es imposible recordarlo todo.
Piensa que lo que hace a un buen programador es practicar, practicar con algoritmos más que con lenguajes, y con eso eventualmente recordará las cosas que usa con más frecuencia, por lo demás, siempre hay google = P
Si puede hacer malabares con docenas de bits de información en su cabeza a la vez, será mucho más fácil darle sentido (y con suerte reescribir) ese horrible fragmento de código heredado que es crítico para el proyecto pero tan complicado que todos los demás tienen miedo tocarlo
Por otro lado, ese horrible fragmento de código que es crítico para el proyecto pero tan complicado que todos los demás tienen miedo de tocarlo probablemente fue escrito por alguien con una capacidad increíble para hacer malabares con docenas de bits de información. Si tienes un gran recuerdo, trabaja mucho para cultivar un aprecio por la elegancia de la simplicidad.
Aprender la sintaxis de un lenguaje de programación no requiere una gran memoria. Como otros han dicho, la sintaxis se refuerza tanto en su memoria que rápidamente se convierte en una segunda naturaleza. ¿Alguna vez olvidaste en qué lado de la carretera debes conducir? ¿Qué símbolos aritméticos representan suma y resta? Si no, dominará las partes más comunes de la sintaxis de su idioma elegido sin demasiados problemas, y puede buscar los bits menos comunes cuando aparezcan.
Algunas bibliotecas tienen cientos o miles de funciones, clases y / o métodos. A un extraño le parecería una tarea imposible aprender a usar toda esa funcionalidad. Pero casi siempre hay una estructura subyacente en la biblioteca. En lugar de tratar de recordar todas esas funciones, un programador inteligente intenta comprender cómo está organizada la biblioteca y qué puede hacer. Una vez hecho esto, generalmente es bastante fácil encontrar la función que necesita cuando la necesita.
En resumen, la memoria es mucho menos importante que la comprensión.
Depende. Dentro de Java y .NET, las bibliotecas estándar están en una especie de jerarquía y están bien documentadas. Por lo tanto, si sabe que se trata de redes, vaya a system.net en C # y desde allí puede profundizar en los objetos / llamadas específicos que necesita. Entonces, desde ese punto de vista, no necesita memorizar los detalles y allí.
En su propio programa, se trata de cómo organizar / nombrar las cosas. Si está utilizando nombres como a $, b $, c $ ... o g $ de Basic de antaño, entonces buena suerte. si nombra las cosas de la manera en que las considerará como Nombre, Apellido, es mucho más fácil. Muchos idiomas tienen estándares de nombres que también ayudan. En Java, por ejemplo, existe una convención de setX, getX para obtener / establecer atributos específicos de una clase, así como convenciones de capitalización. Entonces, si sabe que una persona tiene nombre, entonces probablemente se llama firstName y el getter / setter es probablemente getFirstName y setFirstName ..... Entonces esas convenciones ayudan mucho ...
Además, los métodos / funciones más cortos te ayudan a mantener menos en tu cabeza al mismo tiempo. Y usar nombres propios lo ayuda a no tener que ir a buscar. Por ejemplo, si nombra las cosas por lo que hacen, cuando lea un procedimiento que llame a getMaximumValue probablemente no necesitará leer getMaximumValue para descubrir qué hace ... Pero a medida que las funciones / métodos se alargan y se anidan más, entonces una mejor memoria Definitivamente ayuda.
Dejé de lado el intellisense que JB King mencionó, pero para C # realmente también ayuda. Tiendo a usar editores para Java que no lo tienen :( Sin embargo, el resto aún se aplica, si mantiene métodos más cortos, cumpla con las convenciones de nomenclatura, entonces intellisense funciona aún mejor. Si tiene 50 variables en un método, entonces intellisense podría dejar que un poco abrumado.
Cervo
Cervo Soy principalmente un desarrollador de C #, pero últimamente he hecho más y más en Java. Prueba IntelliJ Idea. Su última versión tiene bastante buena inteligencia. No es Visual Studio bueno pero cercano.
Adrian
0
La memoria no es tan importante. Si está preocupado por eso, regularmente olvido mi billetera o llaves en mi casa por la mañana. Llamo a todos por el nombre equivocado al menos una vez (incluidos mi familia y mi novia). Simplemente me olvido de hacer cosas en la casa todo el tiempo.
Al final del día, los principios de programación seguirán en tu cabeza como "nunca olvidas cómo andar en bicicleta". Los detalles específicos y los detalles de implementación no son tan importantes. Siempre puedes buscarlos en Google.
De Joel On Software sobre la productividad de un programador
La productividad depende de poder hacer malabarismos con muchos pequeños detalles en la memoria a corto plazo de una sola vez.
Por lo tanto, la memoria a corto plazo es muy importante para un programador dado una tarea crítica.
Pero no creo que la memoria a largo plazo importe tanto.
De una lectura rápida, no vi a nadie hablando de memoria en el sentido general de programación en lugar de una tarea singular de escribir un programa.
La memoria es útil para dos cosas:
Recordando la semántica / bibliotecas básicas:
Esto es fácilmente suplantado por la repetición y Google. IOW, la cantidad de memoria con la que naces tiene que ser ridículamente baja para no poder superar este problema.
Recordando el contexto en grandes programas:
Aquí es donde está el truco. A medida que los programas se hacen más grandes (y usted se hace mayor), las decisiones que toma se relacionan totalmente con la cantidad de su conocimiento del sistema y la capacidad de recuperarlo en cuestión de milisegundos si va a ser de alguna utilidad en discusiones de proyectos, depuración, reaccionar ante emergencias operativas, etc. Cuando el empuje llega a su fin, ninguna cantidad de documentación / entradas de wiki lo ayudará; el "asistente" de su equipo será su única opción. Esta es una de las razones por las cuales los ingenieros principales son valorados / pagados tanto. Es posible que la mayoría de ellos no dediquen todo su tiempo a codificar en este momento, pasan más tiempo manteniéndose al día con la imagen completa y aplicándola para cualquier problema / mejora. Los buenos solo se mantienen en contacto haciendo un montón de CR y un cambio de codificación aquí y allá / creación de prototipos de revisiones más nuevas.
IOW, puede ser un programador razonable con el n. ° 1 solo, pero si alguna vez va a ser el próximo Linus, será mejor que tenga mucha memoria, al menos lo suficiente como para abarcar el problema que está resolviendo.
Según mis observaciones, incluso podría decir que la memoria de trabajo es casi directamente proporcional al valor de la persona.
Un pequeño descargo de responsabilidad para concluir: si tiene memoria eidética pero cero / bajo poder intelectual para aplicar esa lógica, no será bueno para un proyecto que una cámara.
Si tiene dificultades para recordar los nombres de las personas que conoce, aún podría convertirse en un gran programador.
Olvido los nombres de las personas todo el tiempo. Soy un programador senior con casi una década de experiencia. En mi caso, mi terrible memoria auditiva se compensa con una gran memoria visual.
Aun así, el requisito esencial para un buen programador es la capacidad de abstraer. No importa cuánto o qué poco recuerde, si no puede comprender el concepto de una variable y cómo usarla en un programa, no se convertirá en un buen programador.
Mi sugerencia es que pruebe un curso corto de programación o complete el tutorial de Python para ver cómo le gusta.
Eso debería darle una buena idea sobre si la programación es una carrera que podría interesarle seguir.
Actualmente estoy aprendiendo JAVA & C #. Todas las pruebas son de libro cerrado, por lo que para JAVA todo es 100% de memoria que codifica todas las aplicaciones en los exámenes.
Además, cada vez es más difícil. Ahora estoy en el punto donde necesito comenzar a usar trucos de memoria como mnemónicos, etc.
Yo diría que un alto coeficiente intelectual, buen conocimiento general, buen vocabulario, polimatismo, conocimiento matemático superior, escritura táctil y buena memoria son todos activos para un programador.
Conozco programadores muy inteligentes que no pueden escribir con letras o hacer cálculos matemáticos más altos, etc. Si lo hicieran, podrían ser mucho mejores.
El mundo real no es libro cerrado. En casi todos los casos, las pruebas de libros cerrados son una indicación de un maestro que no sabe cómo hacer buenas pruebas.
Respuestas:
La sintaxis de un idioma no es tan difícil como cree recordar, si lo usa a diario. Finalmente se vuelve muy fácil. Recordar todas las funciones de la biblioteca podría ser mucho más difícil y no creo que la mayoría de la gente pueda recordar más que las más comunes que usan, pero está bien si tienes acceso a la Web, a un libro o algo más que " recuerda "todos los otros detalles para ti.
fuente
No puede ser cierto que las personas tengan una instalación "natural" con los idiomas, ¿verdad?
No es posible que tengamos hardware neuronal de bajo nivel solo para adquirir idiomas, ¿verdad?
La programación utiliza lenguajes artificiales que siguen muchas de las reglas de los lenguajes naturales.
Los lenguajes naturales tienen un poco más de flexibilidad que los lenguajes de programación.
gramática de todavía estricta. reglas hay muy son cuales Pero
Si puede hablar, puede aprender a programar sin memorizar nada más de lo que memorizó cuando aprendió a hablar.
fuente
Si:
Si está hablando de memoria a corto plazo, entonces sí . Un programador debe ser capaz de hacer malabarismos con múltiples bits de información simultáneamente al programar / resolver problemas.
No:
Si estás hablando de memoria a largo plazo, entonces no realmente. Hay muchos manuales y referencias + herramientas que pueden ayudar significativamente a recordar información. Ciertamente, memorizar esta información a largo plazo lo convertirá en un desarrollador más rápido (en general), pero no es un requisito previo.
fuente
Una buena memoria es absolutamente esencial, pero no por las razones obvias.
Recordar detalles sobre algoritmos específicos, bibliotecas, nombres de variables, etc. es muy útil, pero no es súper importante. Tiene Google, DuckDuckGo, páginas de manual, documentación específica del idioma y editores inteligentes para ayudar con todo lo anterior. Ayuda si no necesita depender de estas muletas, pero le irá bien si las necesita de vez en cuando.
Donde la memoria es esencial es mantener los detalles de lo que está trabajando en la memoria activa a corto plazo. Ser capaz de visualizar el diseño, el flujo de datos, los algoritmos, las estructuras de datos y cómo interactúan todos para hacer lo que sea que haga su producto separa al programador OK del gran programador. Cuando lo haces activamente, se siente como si estuvieras haciendo malabares con éxito una cantidad gigantesca de pelotas mientras andas en monociclo.
Esto a menudo se conoce como estar en la zona . Las interrupciones, las preguntas estúpidas, los jefes que necesitan informes TPS te sacan de esta zona.
Cuanto mejor sea su memoria, más fácil será ingresar a la zona, más fácil será permanecer allí, y más fácil será regresar a ella después de una interrupción.
Si tienes problemas con este tipo de memoria, te sugiero que aprendas técnicas de meditación y trucos de memoria a medida que tu memoria sea más fácil, mayor éxito tendrás como programador.
fuente
Voy a ir en contra de la corriente y decir que sí . Un buen recuerdo es ser un activo increíble como programador. Mi memoria siempre la he visto como un problema de programación, así que he aprendido algunos trucos para compensar mi discapacidad:
Debería poder recordar cómo se deletrea esa variable (que usó 3 líneas antes). Si no puede aprender a usar Intellisense (o cualquiera que sea su forma de autocompletar está en su editor o IDE).
Debería poder recordar rápidamente lo que estaba haciendo la última vez que trabajó en este proyecto. Esto pudo haber sido hace días, podría haber sido justo antes del almuerzo. Si no puede, aprenda a escribir cosas . Mantenga un cuaderno a su lado y escriba lo que estaba (o está haciendo), TODOS los elementos y las cosas que necesita recordar sobre cómo encaja el código actual en el que está trabajando.
La depuración y el control de calidad es difícil. Idealmente, debe mantener un cuaderno muy detallado sobre los pasos que siguió al intentar reproducir un error o depurar algo. Esto es algo que sé que debo hacer, pero con lo que aún lucho.
¡Espero que esto ayude!
fuente
La Guía de Guerrilla para las entrevistas (versión 3.0) es una referencia común que señala que ser inteligente y hacer las cosas son los puntos importantes de la programación. Smart incluye algunas habilidades de memoria, pero no necesariamente tanto como puede pensar.
Intellisense puede ayudar mucho en lo que respecta a la sintaxis si desea ayuda en ese aspecto. Saber cómo aprende para que pueda aplicar rápidamente lo que aprende de una manera significativa es más importante que poder responder preguntas de trivia.
fuente
Creo que recordar nombres es una función cognitiva bastante diferente de recordar procesos, que es diferente de recordar vocabularios. Ha habido casos de personas que han recibido lesiones cerebrales que eliminaron por completo la capacidad de recordar nombres y funcionar perfectamente bien de lo contrario.
Entonces diría que la capacidad de recordar nombres no está relacionada con el aprendizaje de lenguajes de programación.
Sin embargo, sería útil poder recordar patrones lógicos, reglas y vocabulario.
fuente
No. La profundidad de memoria de las herramientas (Intellisense, Google, compiladores, generadores de código) es infinita en comparación con la memoria humana. Por lo tanto, un programador con buena memoria no es mucho mejor que uno con un agujero en la cabeza.
Lo que los programadores realmente necesitan es la "velocidad máxima de ganancia de enfoque" cuando cambian entre niveles de abstracción. Cuanto más rápido puedas, mejor serás como programador. Algunos tienen una velocidad de latido del corazón de 500 ms, con la llegada de la primera onda de sangre al cerebro en el que estás concentrado. Algunos tienen un reloj de enfoque redondeado al ciclo de fumar, aproximadamente 2 horas. Algunos necesitan una ducha matutina, así que unas 24 horas. etc. La diferencia entre programador bueno y malo se declaró una vez hace 1:80 veces, y la brecha solo está creciendo.
fuente
No, solo necesitas entender cómo funciona Google para obtener lo que quieres
Tengo un recuerdo horrible, pero mis habilidades en Google son increíbles ^ _ ^
Con toda seriedad, siempre que sepa dónde encontrar la sintaxis, no necesita recordarla. Para eso sirven Intellisense, archivos de ayuda, guías de referencia, Internet, etc.
fuente
En primer lugar, aprender a programar es difícil para todos. Tener una buena memoria ayuda, estoy seguro. Pero, la dedicación y el amor por el aprendizaje permanente son más valiosos. La sintaxis de aprendizaje es como cualquier otra cosa, la repetición.
No hay nada mágico o sobrehumano en la habilidad de programar. Solo pasa alrededor de 10,000 horas en él ... y serás un maestro como cualquier otra habilidad. Por supuesto, eso son 10,000 horas de entrenamiento, no repetir ciegamente y aturdir los errores del pasado.
fuente
Escribiste esta publicación en inglés, con la sintaxis adecuada. Claramente puedes recordar cómo usar un idioma. Solo necesita aprender un nuevo idioma y usarlo con la frecuencia suficiente para acertar todo el tiempo. A diferencia de los lenguajes orientados a los humanos, los lenguajes de programación de computadoras siempre le avisarán cuando haya usado una sintaxis incorrecta, por lo que en realidad es más fácil. :-)
fuente
Estoy de acuerdo en que hay una gran variedad de cosas que un programador promedio puede saber para llevar a cabo sus tareas, solo piense en todas las palabras, sintaxis, técnicas que básicamente debe controlar para construir un sitio web simple (en la parte frontal: html, css, javascript (puede contar también algunos frameworks Js como jquery), ajax, en el back-end: Php o ASP o ASP.Net, y no se olvide de las bases de datos, mySql o SqlServer u Oracle o MongoDB, etc. Hay una gran lista de lenguajes, paradigmas, sintaxis, patrones, etc., es imposible recordarlo todo.
Piensa que lo que hace a un buen programador es practicar, practicar con algoritmos más que con lenguajes, y con eso eventualmente recordará las cosas que usa con más frecuencia, por lo demás, siempre hay google = P
fuente
Un gran recuerdo puede cortar en ambos sentidos.
Si puede hacer malabares con docenas de bits de información en su cabeza a la vez, será mucho más fácil darle sentido (y con suerte reescribir) ese horrible fragmento de código heredado que es crítico para el proyecto pero tan complicado que todos los demás tienen miedo tocarlo
Por otro lado, ese horrible fragmento de código que es crítico para el proyecto pero tan complicado que todos los demás tienen miedo de tocarlo probablemente fue escrito por alguien con una capacidad increíble para hacer malabares con docenas de bits de información. Si tienes un gran recuerdo, trabaja mucho para cultivar un aprecio por la elegancia de la simplicidad.
Aprender la sintaxis de un lenguaje de programación no requiere una gran memoria. Como otros han dicho, la sintaxis se refuerza tanto en su memoria que rápidamente se convierte en una segunda naturaleza. ¿Alguna vez olvidaste en qué lado de la carretera debes conducir? ¿Qué símbolos aritméticos representan suma y resta? Si no, dominará las partes más comunes de la sintaxis de su idioma elegido sin demasiados problemas, y puede buscar los bits menos comunes cuando aparezcan.
Algunas bibliotecas tienen cientos o miles de funciones, clases y / o métodos. A un extraño le parecería una tarea imposible aprender a usar toda esa funcionalidad. Pero casi siempre hay una estructura subyacente en la biblioteca. En lugar de tratar de recordar todas esas funciones, un programador inteligente intenta comprender cómo está organizada la biblioteca y qué puede hacer. Una vez hecho esto, generalmente es bastante fácil encontrar la función que necesita cuando la necesita.
En resumen, la memoria es mucho menos importante que la comprensión.
fuente
Depende. Dentro de Java y .NET, las bibliotecas estándar están en una especie de jerarquía y están bien documentadas. Por lo tanto, si sabe que se trata de redes, vaya a system.net en C # y desde allí puede profundizar en los objetos / llamadas específicos que necesita. Entonces, desde ese punto de vista, no necesita memorizar los detalles y allí.
En su propio programa, se trata de cómo organizar / nombrar las cosas. Si está utilizando nombres como a $, b $, c $ ... o g $ de Basic de antaño, entonces buena suerte. si nombra las cosas de la manera en que las considerará como Nombre, Apellido, es mucho más fácil. Muchos idiomas tienen estándares de nombres que también ayudan. En Java, por ejemplo, existe una convención de setX, getX para obtener / establecer atributos específicos de una clase, así como convenciones de capitalización. Entonces, si sabe que una persona tiene nombre, entonces probablemente se llama firstName y el getter / setter es probablemente getFirstName y setFirstName ..... Entonces esas convenciones ayudan mucho ...
Además, los métodos / funciones más cortos te ayudan a mantener menos en tu cabeza al mismo tiempo. Y usar nombres propios lo ayuda a no tener que ir a buscar. Por ejemplo, si nombra las cosas por lo que hacen, cuando lea un procedimiento que llame a getMaximumValue probablemente no necesitará leer getMaximumValue para descubrir qué hace ... Pero a medida que las funciones / métodos se alargan y se anidan más, entonces una mejor memoria Definitivamente ayuda.
fuente
La memoria no es tan importante. Si está preocupado por eso, regularmente olvido mi billetera o llaves en mi casa por la mañana. Llamo a todos por el nombre equivocado al menos una vez (incluidos mi familia y mi novia). Simplemente me olvido de hacer cosas en la casa todo el tiempo.
Al final del día, los principios de programación seguirán en tu cabeza como "nunca olvidas cómo andar en bicicleta". Los detalles específicos y los detalles de implementación no son tan importantes. Siempre puedes buscarlos en Google.
fuente
De Joel On Software sobre la productividad de un programador
Por lo tanto, la memoria a corto plazo es muy importante para un programador dado una tarea crítica.
Pero no creo que la memoria a largo plazo importe tanto.
fuente
De una lectura rápida, no vi a nadie hablando de memoria en el sentido general de programación en lugar de una tarea singular de escribir un programa.
La memoria es útil para dos cosas:
Recordando la semántica / bibliotecas básicas:
Esto es fácilmente suplantado por la repetición y Google. IOW, la cantidad de memoria con la que naces tiene que ser ridículamente baja para no poder superar este problema.
Recordando el contexto en grandes programas:
Aquí es donde está el truco. A medida que los programas se hacen más grandes (y usted se hace mayor), las decisiones que toma se relacionan totalmente con la cantidad de su conocimiento del sistema y la capacidad de recuperarlo en cuestión de milisegundos si va a ser de alguna utilidad en discusiones de proyectos, depuración, reaccionar ante emergencias operativas, etc. Cuando el empuje llega a su fin, ninguna cantidad de documentación / entradas de wiki lo ayudará; el "asistente" de su equipo será su única opción. Esta es una de las razones por las cuales los ingenieros principales son valorados / pagados tanto. Es posible que la mayoría de ellos no dediquen todo su tiempo a codificar en este momento, pasan más tiempo manteniéndose al día con la imagen completa y aplicándola para cualquier problema / mejora. Los buenos solo se mantienen en contacto haciendo un montón de CR y un cambio de codificación aquí y allá / creación de prototipos de revisiones más nuevas.
IOW, puede ser un programador razonable con el n. ° 1 solo, pero si alguna vez va a ser el próximo Linus, será mejor que tenga mucha memoria, al menos lo suficiente como para abarcar el problema que está resolviendo.
Según mis observaciones, incluso podría decir que la memoria de trabajo es casi directamente proporcional al valor de la persona.
Un pequeño descargo de responsabilidad para concluir: si tiene memoria eidética pero cero / bajo poder intelectual para aplicar esa lógica, no será bueno para un proyecto que una cámara.
fuente
Si tiene dificultades para recordar los nombres de las personas que conoce, aún podría convertirse en un gran programador.
Olvido los nombres de las personas todo el tiempo. Soy un programador senior con casi una década de experiencia. En mi caso, mi terrible memoria auditiva se compensa con una gran memoria visual.
Aun así, el requisito esencial para un buen programador es la capacidad de abstraer. No importa cuánto o qué poco recuerde, si no puede comprender el concepto de una variable y cómo usarla en un programa, no se convertirá en un buen programador.
Mi sugerencia es que pruebe un curso corto de programación o complete el tutorial de Python para ver cómo le gusta.
Eso debería darle una buena idea sobre si la programación es una carrera que podría interesarle seguir.
fuente
¡Digo un enfático SÍ!
Actualmente estoy aprendiendo JAVA & C #. Todas las pruebas son de libro cerrado, por lo que para JAVA todo es 100% de memoria que codifica todas las aplicaciones en los exámenes.
Además, cada vez es más difícil. Ahora estoy en el punto donde necesito comenzar a usar trucos de memoria como mnemónicos, etc.
Yo diría que un alto coeficiente intelectual, buen conocimiento general, buen vocabulario, polimatismo, conocimiento matemático superior, escritura táctil y buena memoria son todos activos para un programador.
Conozco programadores muy inteligentes que no pueden escribir con letras o hacer cálculos matemáticos más altos, etc. Si lo hicieran, podrían ser mucho mejores.
fuente