¿Qué técnicas ayudan a retener el conocimiento de programación? [cerrado]


44

¿Cómo recuerdas programar cosas relacionadas? ¿Ha tenido la sensación de haber encontrado el error que tenía antes, hace algunos años y podría jurar que sabía la causa en ese momento, pero ahora lo ha olvidado?

¿Trabajó con el análisis de la cadena de xsl hace algún tiempo pero ahora no puede recordar exactamente cuáles son las funciones de cadena de xsl y tiene que comenzar desde cero? O tal vez se olvide de alguna característica de Apache Commons como "filtrar una colección por algún predicado" que seguramente utilizó en el pasado.

Entonces, ¿cómo lo haces? Intenté tener un blog, pero cuando desarrollo aplicaciones, nunca encuentro el tiempo para actualizar el blog o escribir sobre mis experiencias. Además, usar un wiki es algo agradable, pero luego me resultó difícil mantener una separación limpia entre ellos, ya que muchas veces necesitaba cambiar una publicación de blog para agregar nueva información sobre ese tema. Esto me hizo pensar que en realidad debería haber puesto este tema en la wiki en lugar del blog.

¿Tiene algún sistema que lo ayude a recordar su experiencia de programación? ¿Cuál es tu configuración?


82
mi configuración: 1.google 2. página de marcador 3. olvidarse del marcador 4. goto-> 1.
e-MEE

44
Utiliza un Wiki personal. Anote cada problema que resolvió para que usted y otros puedan verlo más tarde. Solo hazlo por un par de meses y tendrás una gran cantidad de información. Yo uso WikidPad y es bastante agradable
Ubermensch

2
Google es fantástico para las respuestas, pero no creo que realmente aborde esta pregunta sobre las técnicas de memoria. Por supuesto, es solo un comentario.
Michael Durrant

44
Mi cerebro es mi CPU y caché. Puse cosas en mi caché al hacerlo. El resto de mi conocimiento está en otros lugares, como el código fuente antiguo, notas y stackoverflow.com.
Distortum

55
@ e-MEE: aunque la situación que describiste a menudo se usa, es una mala práctica y no puedes confiar en ella. Es lento y redundante. Puedes usar ese tiempo para construir características increíbles, no reinventar la rueda :)
Claudiu Constantin

Respuestas:


64

Olvidar las cosas es normal. No recordar algunos trucos que te ayudaron en el pasado también es normal. Este es el primer paso que uno debe reconocer. Luego hay algunas formas en que puede "almacenar" el conocimiento para una revisión adicional:

  • Encuentra tiempo y blog sobre eso . El futuro, estarás muy agradecido con el presente;
  • Trabaje con pequeñas demostraciones y archívelas de alguna manera. Seguramente recorrerás este archivo muchas veces;
  • Utilice su perfil de stackexchange . Marque preguntas / problemas / problemas / consejos / trucos interesantes como favoritos para futuras investigaciones;
  • Sigue haciendo , sigue programando. Cuanto más use una determinada parte de un marco, más se familiarizará con él y más recordará.

55
+1 para la parte de "seguir haciendo", algo así como actualizar el conocimiento.
tehnyit

El punto 1 me recuerda un episodio de The Office ...
JBRWilkinson

Me registré aquí solo para votar tu respuesta. Perfecto
Martin.

3
+1 por el valor de un registro / diario. El registro mejora el éxito de las dietas, las finanzas, el estado físico, casi todo ... las personas que no se toman el tiempo para escribir un registro piensan que el beneficio de un registro es buscar algo, pero el valor real es obligarlo a pensar sobre eventos pasados ​​recientes, considere críticamente esos eventos y conviértalos en una historia. Este proceso ayuda a la memoria y hace que el escritor piense en el futuro. El beneficio de un registro para la mayoría no está en leerlo después del hecho, sino en el valor personal y real durante su creación.
Quaternion

El blog es el mejor. Mantengo un blog de algunas cosas que hago, algunas publicaciones sobre problemas que encuentro (y rara vez sobre cosas que me gustan o me parecen interesantes). De esta manera, cuando encuentro algún problema (¿cómo instalo esta biblioteca aquí otra vez?), Voy a la publicación de mi blog y sigo adelante. Funciona de maravilla, y además podría ayudar a alguien algún día.
MatthewRock

20

Mi clave es

Variedad


Repetición. Una vez puede ser fugaz. ¡Ver el evento número 100 hace la diferencia!

Memoria con los dedos . Recuerdo el código mucho mejor cuando lo he escrito algunas veces.

Biblioteca de códigos : mantenga una reserva personal de códigos y trucos que haya usado y visto.

Centralización. Mantengo 1 archivo con todos mis nombres de usuario (cientos) en 1 PC. Le aplico seguridad.

Disciplina : mencionó que no tiene tiempo / hacer el esfuerzo de actualizar su propio blog, etc. En el que solo tiene que trabajar más y asegurarse de hacerlo.

Aceptación : las habilidades y técnicas y las cosas que aprendiste la semana pasada serán frescas. Algunos de los artículos que dice hace 3 años serán difíciles de recordar. Eso es normal ya que el cerebro deja espacio para más.

Múltiples sentidos : a veces uso mnemotecnia, a veces dejo caer una imagen con conceptos clave dibujados de formas distintivas. Leo, escucho podcasts, veo videos, uso el color en los editores. Cuanto más sentido uso, mejor.

Mnemotécnicos , p. Ej., Orden de borde css Tarball (TaRBalL) TopRightBottomLeft. También uso colores y formas para recordar palabras y temas. ¡A menudo, cuanto más extraño, más memorable!

Uso continuo : este es el efecto 'úsalo o piérdelo'. Todo el conocimiento se desvanece con el tiempo. Time ++ Fade ++

La red de intercambio de pila : estoy usando Stack Overflow en múltiples áreas para tratar de mantener tantas habilidades y técnicas diferentes "actuales" y "recordadas" incluso si no las estoy usando en mi trabajo / proyecto actual.

Dropbox : mantengo archivos pequeños comunes con elementos relacionados con la memoria

Libros : todavía me gusta la tontería y la sensación de los libros físicos. También tengo múltiples Kindle y otros libros técnicos en línea a los que puedo referirme en cualquier lugar. Obviamente, mi biblioteca técnica puede ser accesible desde cualquier lugar cuando es digital, lo cual es enorme.

El efecto Google : ninguna lista de elementos estaría realmente completa sin mencionar esto. Esto es más acerca de lo que no necesita recordar, porque puede buscarlo en Google y encontrarlo. Esta es una consideración importante también. A medida que más personas se vuelven más expertas en esta forma de obtener conocimiento, la necesidad de memorizar un hecho determinado está disminuyendo. Sin embargo, esto también está 'elevando el listón' para los trabajadores del conocimiento que están encontrando cada vez más que se requiere una comprensión conceptual profunda para desempeñarse en el entorno actual. Por supuesto que fuera para CME's !

Mi propio blog

Mi propio sitio de marcadores .

  • ¿Cómo mantengo mi blog y mis marcadores actualizados? Bueno, al final del día, creo que es disciplina e ingenio.es decir, sí, se requiere una cierta dedicación. Sin embargo, si fuiste a la escuela para obtener un título y pagaste $ 100,000 (o incluso $ 10,000) o eres autodidacta, sabes el significado de dedicación y persistencia. Esto no es diferente. El ingenio, o 'factor ingenioso' es que cuando ves un sitio web genial con un tutorial o técnica genial o lo que sea, o superas un difícil problema espinoso, te vuelves "¡oye, ingenioso!" - Entonces, cuando sienta esto (o cualquier frase que use), ahora asocie eso con "Debo bloguear eso o grabar ese marcador". Existe una buena posibilidad de que no esté en una PC, actualizando su blog en ese mismo momento, así que envíe un correo electrónico, un mensaje de texto o incluso un mensaje de voz, o una nueva tarea en su lista de tareas, lo que sea que funcione para usted- para recordarte que lo hagas! Por ejemplo, mi teléfono Android tiene una aplicación de tareas que es útil para esto.

Gracias por tu atenta respuesta. ¿Te mantienes disciplinado sobre la actualización de tu blog? Creo que el problema que tengo es la pereza o no publico algo porque no creo que otros se beneficien de ello.
Kyle Hayes

+1 por variedad. Realmente funciona y lo he experimentado muchas veces.
Karthik Sreenivasan

Buena pregunta de Kyle, he actualizado mi respuesta. Sin embargo, mi respuesta es aún más sobre la necesidad de estar actualizado en lugar de cómo me mantengo disciplinado. En algún momento se reduce a la motivación personal.
Michael Durrant

7

Durante el año pasado, Evernote se convirtió en un programa del que no podía prescindir. Copié todo en Evernote. Recortes de código, capturas de pantalla, datos de contacto, historial de versiones, etc. Así que no tengo que recordar tantos detalles. Solo sé que está allí en alguna parte.

La versión básica es gratuita. ¡Así que pruébalo!


1
Entonces, ¿qué harías el día que los servicios de evernote estén caídos, o no haya Internet (porque tu operador ha sido destruido por ejemplo)? No recomiendo confiar en "la nube" para almacenar importantes conocimientos.
Mister Smith

Actualmente estoy usando Evernote, pero si pones todo allí, la sección de etiquetas estará muy abarrotada y comenzarás a usarla menos. Si tienes buenos trucos sobre esto, ¡sería de gran ayuda compartirlo! ¡Gracias!
luz brillante

@danleadgy, estoy de acuerdo con las etiquetas. He tenido que ser más selectivo, lo que realmente no debería preocuparme.
Kyle Hayes

Después de hacer esta misma pregunta sobre Stack Overflow, comencé a usar Evernote y funciona muy bien. Además de la información de programación, almaceno procesos prácticos. Por ejemplo, cómo configurar mi máquina de desarrollo desde cero (instalar SO, instalar software, configurar). Eso ha sido extremadamente útil. Además, puede acceder a la misma información desde cualquier dispositivo. Entonces puede leer en una computadora o tableta y trabajar en otra.
B Seven

6

Sherlock Holmes dijo una vez algo como "La mente de un hombre es como un ático. Si lo llenas de trivialidades, no hay espacio para nada realmente importante. Para todos estos detalles, tenemos la enciclopedia".

A menos que tenga una memoria fotográfica y sus problemas, no recordará todo. Cree un conjunto de recursos, una biblioteca personal de información y técnicas de resolución de problemas.

Puede que no recuerde la respuesta, y puede que ni siquiera recuerde dónde está escrita la respuesta. Pero, si sabe cómo resolver el problema, siempre puede encontrar la respuesta nuevamente. Con suerte, esto incluirá documentar su solución de una manera que se pueda buscar y reutilizar.


4

Bueno, tal vez mi caso es particular ... pero: tengo cada fragmento de software que escribí desde 76 en mi computadora portátil, programas, scripts, configuraciones, etc. Así que con el tiempo (debo confesar), mi carga de memoria ha cambiado de recordar ' cosas 'para recordar metadatos sobre cosas. Claro, muchas de ellas ya no son relevantes, pero lo que encuentro es que lo difícil es tener ideas, no implementarlas. Entonces, los metadatos son básicamente un índice de qué 'ideas' se pueden encontrar dónde.

Cuando llego a un nuevo terreno, hoy en día, tiendo a encontrar una base de código grande que utiliza los nuevos aspectos, y paso un tiempo de calidad con la base de código. Lo estudio, trato de hacer que funcione en un entorno de prueba, luego trato de aumentarlo para que pueda acceder a nuevas herramientas (bibliotecas, idiomas, tecnología de construcción, etc.). Este proceso me permite mapear mis patrones, ideas, en un ejemplo. Puedo tomarme un tiempo para hacer algunos de estos mini proyectos y elegir como referencia el que más me hace sentir en casa. Una vez hecho esto, eventualmente cambiaré el propósito de esa base de código para construir el esqueleto de mis propias aplicaciones.

Cuando los archivos personales fallan, llego a la red, a la que recientemente agregué SO. Obtendré un éxito en los conceptos 'nuevos' (nuevos desde un punto de vista personal) en SO antes de gaagle. De hecho, rara vez (hoy en día) regreso al gaagle. La primera respuesta relevante sobre esto suele ser un enlace a algunas preguntas interesantes sobre SO.


4

Como otros, llevo un registro de las cosas usando marcadores.

Solía ​​usar Delicious, pero ahora me he mudado a Pinboard.

Pero no lo uso tanto como solía hacerlo. Parece que cada problema de programación que encuentro es una pequeña búsqueda en Google. ¡Y en el último año más o menos, comencé a usar Stackoverflow como uno de mis términos de búsqueda!

Cada vez que vengo a hacer una pregunta de SO por un tema particularmente difícil, lo prefiero para rastrearlo, por lo que esta es otra forma de marcadores.


También solía ser deliciosa en el pasado, pero ese proyecto ha hecho un desastre. Ahora uso Diigo para marcadores y destacados. Tendré que revisar Pinboard.
jmq

3

"Recuerda la pintura, olvida los trazos finos"

Es absolutamente normal no recordar los detalles más finos. Sin embargo, de lo que debe preocuparse es de olvidar las cosas más importantes. Si solucionó un error, al menos debería tener una idea conceptual sobre cuál era el problema.

Marcadores, blogs, cuadernos están bien para guardar esos detalles más finos. Pero en última instancia, aún debe recordar la "imagen" más grande. De lo contrario, volver a descubrir esos detalles "más finos" será mucho más difícil.


2

Mantenga sus propias notas, expresando las cosas en sus propias palabras. Su público objetivo es usted , nadie más, por lo que puede darse el lujo de ser conciso. (Sin embargo, una publicación de blog realmente debe ser clara y estar bien editada, lo que lleva mucho tiempo). Si encuentra buenos artículos / publicaciones de blog, registre la URL, pero aún explique las cosas con sus propias palabras.

Mantengo una gran jerarquía de archivos pequeños, cortos y de un solo tema. Los archivos son en su mayoría de forma libre, pero estoy cambiando a usar Markdown. Buscar usando grep / find. Mantengo la carpeta en mi DropBox, por lo que siempre está disponible para mí.


Solía ​​hacerlo también como archivos como este, pero también encontré que Evernote es un buen repositorio para este tipo de datos.
Kyle Hayes

1

Cada uno puede tener su propio estilo al que está acostumbrado. Para mí, separo el conocimiento en categorías:

  • Libros

  • Artículos

  • Colecciones (Cosas que encuentro interesantes limitadas a unos pocos párrafos. En realidad copio la información y algunas veces anoto la fuente). Por ejemplo: Desarrollo de OOD, Genéricos, ... etc.

  • Código reutilizable (texto y fragmentos): cada uno en un archivo separado bajo una buena organización de árbol. Por ejemplo, el nodo DataValidation contendría muchas técnicas para validar diferentes elementos de datos, cada uno en un archivo separado

  • Proyectos completados

  • Video tutoriales personales (a veces grabo videos de cómo hacer las cosas cuando hay demasiados pasos involucrados).

  • Enlaces

Organizo lo anterior por materia, con cada materia en una estructura de árbol apropiada.

Algunas veces hay cosas superpuestas, pero logro encontrar lo que quiero.

Además, usando Google Desktop, encontrar texto o archivos es muy rápido.


Sería interesante ver su árbol si estuviera dispuesto a compartir.
Kyle Hayes

@KyleHayes, puedo proporcionar una muestra
NoChance

0

Yo uso OneNote. Tengo muchos lenguajes de programación diferentes con los que trabajo, así que tengo diferentes secciones para cada idioma y diferentes pestañas para diferentes tipos de notas.

Ahora, estoy empezando a usar Stack Exchange también.


-1

Debe estar equilibrado entre la memoria y el "almacenamiento". Si confía demasiado o por cosas incorrectas en la memoria, == problema, si confía demasiado en almacenar todo == inútil.

Mis reglas:

-¡No embellecer más! escribe las cosas importantes incluso si el tamaño de la fuente varía en tu documento :)

-No sobre orginizar. Convénzase usted mismo de que la organización de sus pensamientos no necesita una estructura de árbol de 10 niveles.

-HASTA TIEMPO en encontrar qué grabar. Puede encontrar 5 soluciones para el mismo problema. en el momento en que los escribes TODOS pierdes. Escribe 1-2 que REALMENTE te ayuden. NO te permitas decirte que no tienes tiempo para esto ahora. Es bastante extraño, pero se aplica: "Pasó tiempo para tener tiempo"

No me gusta poner estas cosas en algún "producto" porque quiero estar seguro de que existirá 20 años después y no quiero migrarme a varias plataformas.

¿Entonces lo que hay que hacer?

Cualquier cosa que pueda obtener la información con el mínimo esfuerzo.

Por ejemplo, instale phpBB y escriba a usted mismo. obtienes la funcionalidad de búsqueda lista para usar, es gratis y puedes extraer datos con simples sentencias SQL y ponerlos en archivos. puedes tener un cronjob exportando tus pensamientos en archivos para archivar. Entonces, si alguna vez necesita colocarlos en otro sistema, está listo con el mínimo esfuerzo.

Otro problema es que nadie garantiza que los enlaces que encuentre funcionen mañana (imagínese 5 años después). Así que intenta duplicar la información:

-Descargue el video con cierta extensión del navegador y adjúntelo, por ejemplo, a su publicación phpBB (o wordpress o lo que sea).

Acéptalo: eres un programador y creas aplicaciones para otras personas. Haga uno simple para usted y conviértase en SU ​​mejor cliente.

mi 2c


-1

Respuesta corta:

Practica, practica, practica.

Respuesta no tan corta:

¿Cómo recuerdas cómo caminar? ¿Cómo recuerdas cómo hablar? Por supuesto, estas habilidades no son exactamente las mismas y no requieren un conocimiento aparentemente enciclopédico (al menos para principiantes), pero estás usando lo mismo: memoria.

Si bien admito que, para los principiantes, la programación puede parecer un tema increíblemente grande cuando comienzas a estudiarla, se vuelve como cualquier otro tema una vez que has aprendido lo básico.

Tan pronto como lo descubrí, comencé a dividir las cosas en trozos cada vez más pequeños (mi propia versión personal de abstracción). De esa manera, algo que parecía difícil de recordar se vuelve más fácil (al menos conmigo lo hace).

Anotar las cosas ayuda más de lo que piensas (después de haber trabajado en Educación, sé que esto puede tener efectos positivos masivos en la retención). Especialmente si puedes ponerlo en tus propias palabras, en lugar de solo copiarlo textualmente. Si puedes parafrasearlo o equipararlo con algo que ya sabes, aún mejor.

Por ejemplo: en C #, los objetos de cadena son inmutables. Esto significa que cada vez que le digo a mi programa que cambie el contenido de un objeto de cadena, lo que realmente sucede es que la cadena original se destruye (técnicamente se coloca en el nivel más bajo del recolector de basura). Exactamente como cuando un artista comete un error al crear una escultura de mármol: no se puede cambiar, por lo tanto, se destruye y se crea una nueva.

No es un gran ejemplo, pero muestra los conceptos básicos de lo que quiero decir.

La documentación de calidad también ayuda. Algo que mi profesor de Programming 101 me dijo una vez me quedó grabado:

Haz tus comentarios detallados. No hasta el punto de la estupidez, pero debes poder escribir comentarios que un no programador pueda entender. De esa manera, sabes que alguien más en el proyecto puede entenderlo perfectamente. Imagine que pasaría meses implementando un sistema, pero usted estuvo involucrado en algún tipo de accidente horrible en el camino al trabajo. A otra persona se le asignará su trabajo, especialmente si está cerca del momento crítico, y si no pueden descubrir qué está haciendo su código, entonces la producción se detiene.

Los buenos libros también son un excelente recurso. Un tutor diferente me dijo una vez que si un libro no tiene un índice (y hay muchos de ellos que no lo tienen), entonces no vale la pena comprarlo.

Google puede ser un recurso increíble, pero tenga en cuenta los codificadores de copiar y pegar. Manténgase alejado de los sitios que solo le dan un bloque de código sin explicación. Prefiero leer un artículo completo sobre pequeños bloques de código, de esa manera te vas sabiendo exactamente lo que el bloque de código debe hacer, cómo lo hace y por qué el programador lo escribió de esa manera.

Espero que ayude

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.