Que técnicas ajudam a reter conhecimento de programação? [fechadas]

44

Como você se lembra de programar coisas relacionadas? Você já teve a sensação de que encontrou o erro que tem antes de você agora, há alguns anos e poderia jurar que sabia a causa, mas agora esqueceu?

Você trabalhou com a análise de strings do xsl há algum tempo, mas agora você não consegue se lembrar exatamente quais são as funções de string do xsl e você precisa começar do zero? Ou talvez você se esqueça de algum recurso do Apache Commons como "filtrar uma coleção por algum predicado" que você certamente usou no passado.

Então, como você faz isso? Eu tentei ter um blog, mas quando desenvolvo aplicativos, nunca encontro tempo para atualizar o blog ou escrever sobre minhas experiências. Além disso, usar um wiki é uma coisa boa, mas depois achei difícil manter uma separação clara entre eles, pois muitas vezes eu precisava alterar uma postagem no blog para adicionar novas informações sobre esse tópico. Isso me fez pensar que eu deveria ter colocado este tópico no wiki em vez do blog.

Você tem algum sistema que o ajude a lembrar sobre sua experiência de programação? Qual é a sua configuração?

    
por shining-light 19.03.2012 / 11:15
fonte

12 respostas

64

Esquecer as coisas é normal. Não lembrar de alguns truques que ajudaram você no passado também é normal. Este é o primeiro passo que se deve reconhecer. Depois, há algumas maneiras de "armazenar" conhecimento para revisão adicional:

  • Encontre tempo e blog sobre isso . O futuro, você será muito grato ao presente você;
  • Trabalhe com minúsculas demos e arquive-as de alguma forma. Você certamente irá percorrer este arquivo muitas vezes;
  • Use seu perfil stackexchange . Marque perguntas / problemas / questões / dicas / truques interessantes como favoritos para uma investigação mais detalhada;
  • Mantenha fazendo , continue programando. Quanto mais você usa uma certa parte de uma estrutura, mais você se familiariza com ela e mais se lembra.
por 19.03.2012 / 11:36
fonte
20

Minha chave é

Variedade

Repetição. Uma vez pode ser passageiro. Ver a centésima ocorrência faz diferença!

Memória pelos dedos . Eu me lembro muito melhor do código quando eu realmente digitei algumas vezes.

Biblioteca de códigos - Guarde um código pessoal e truques que você usou e viu.

Centralização. Eu mantenho 1 arquivo com todos os meus nomes de usuários (centenas) em 1 pc. Eu aplico segurança a ele.

Disciplina - você mencionou que não tem tempo / se esforça para atualizar seu próprio blog, etc. É necessário trabalhar mais e garantir que você o faça.

Aceitação - habilidades e técnicas e coisas que você aprendeu semana de moça serão frescas. Alguns dos itens que você diz há 3 anos serão difíceis de lembrar. Isso é normal, pois o cérebro abre espaço para mais.

Múltiplos sentidos - às vezes eu uso mnemônicos, às vezes eu coloco uma foto com conceitos-chave desenhados de formas distintas. Eu leio, ouço podcasts, assisto vídeos, uso cores em editores. Quanto mais sentido eu uso o melhor.

Mnemônicos , por exemplo ordem de fronteira css Tarball (TaRBalL) TopRightBottomLeft. Eu também uso cores e formas para lembrar palavras e temas. Muitas vezes, o mais bizarro, o mais memorável!

Uso contínuo - Este é o efeito 'use ou perca'. Todo o conhecimento desaparece com o tempo. Time ++ Fade ++

A Stack Exchange Network - Estou usando o Stack Overflow em várias áreas para tentar manter as diferentes habilidades e técnicas "atuais" e "lembradas", mesmo que eu não as use no meu trabalho / projeto atual.

Dropbox - Eu mantenho comuns arquivos pequenos com itens relacionados à memória

Livros - Eu ainda gosto do tolo e da sensação dos livros físicos. Eu também tenho vários kindles e outros livros técnicos on-line que eu posso consultar em qualquer lugar. Obviamente, minha biblioteca técnica pode ser acessada em qualquer lugar quando é digital, o que é enorme.

O efeito do Google - nenhuma lista de itens seria realmente completa sem mencionar isso. Isso é mais sobre o que você não precisa lembrar - porque você pode pesquisar no Google e encontrá-lo. Esta é uma consideração importante também. À medida que mais pessoas se tornam mais adeptas dessa maneira de obter conhecimento, a necessidade de memorizar qualquer fato está caindo. No entanto, isso também está 'elevando o nível' para os trabalhadores do conhecimento que estão descobrindo cada vez mais que um entendimento conceitual profundo é necessário para executar no ambiente atual. Claro que fora para CME !

Meu próprio Blog

Meu próprio site favoritos .

  • Como mantenho meu blog e meus favoritos atualizados? Bem, no final do dia eu acho que é disciplina e niftyness , ou seja, sim, há uma certa dedicação necessária para isso. No entanto, se você foi para a escola por um grau e pagou US $ 100.000 (ou até US $ 10.000) ou você é autodidata, você sabe o significado de dedicação e persistência. Isso não é diferente. O niftyness, ou 'fator bacana' é que quando você vê um site legal com um tutorial legal ou técnica ou o que quer, ou você superar um problema espinhoso difícil, você vai "hey isso é bacana!" - então quando você sentir isso (ou qualquer que seja o slogan que você usa), agora associe isso com "Eu preciso blogar ou gravar aquele favorito". Há uma boa chance de você não estar em um PC, atualizando seu blog nesse exato momento, então envie um e-mail, um texto ou até mesmo um correio de voz ou uma nova tarefa na sua lista de tarefas - o que funciona para você - para se lembrar de fazer isso! Por exemplo, meu telefone Android tem um aplicativo de tarefas que é útil para isso.
por 19.03.2012 / 13:20
fonte
7

Ao longo do último ano, o Evernote tornou-se um programa que eu não poderia prescindir. Eu copio tudo para o Evernote. Código de recortes, Screenshoots, dados de contato, histórico de versões e assim por diante. Então não preciso me lembrar de tantos detalhes. Eu só sei que está em algum lugar.

A versão básica é gratuita. Então experimente!

    
por 19.03.2012 / 15:42
fonte
6
Sherlock Holmes disse uma vez algo como "A mente de um homem é como um sótão. Se você preencher com trivialidades, não há espaço para algo realmente importante. Para todos esses detalhes, temos a enciclopédia."

A menos que você tenha uma memória fotográfica e os problemas, você não se lembrará de tudo. Construa um conjunto de recursos, uma biblioteca pessoal de ambas as técnicas de resolução de problemas de informação e .

Você pode não se lembrar da resposta e nem se lembra onde a resposta foi escrita. Mas, se você souber como resolver o problema, poderá sempre encontrar a resposta novamente. Espero que isso inclua documentar sua solução de maneira pesquisável e reutilizável.

    
por 19.03.2012 / 14:27
fonte
4

Bem, talvez o meu caso seja particular ... mas: eu tenho todo o software que eu escrevi desde 76 no meu laptop, programas, scripts, configurações, etc. Com o tempo (devo confessar), minha carga de memória mudou de lembrar "coisas" para lembrar de meta-dados sobre coisas. Claro, muito disso não é mais relevante, mas acho que a parte difícil é ter as ideias, não implementá-las. Portanto, meta-dados é basicamente um índice do que 'ideias' podem ser encontradas onde.

Quando eu bato em uma nova área, hoje em dia, eu tenho a tendência de encontrar uma grande base de código que usa os novos aspectos e passar um tempo de qualidade com a base de código. Eu estudo, tento fazê-lo funcionar em um ambiente de teste e, em seguida, tento aumentá-lo para facilitar as novas ferramentas (bibliotecas, linguagens, tecnologia de compilação, etc ...). Esse processo me permite mapear meus padrões, ideias, em um exemplo. Posso tirar um tempo para fazer alguns desses mini-projetos e escolher como referência aquele com o qual me sinto mais em casa. Uma vez feito isso, eu irei eventualmente reutilizar essa base de código para construir o esqueleto de meus próprios aplicativos.

Quando arquivos pessoais falham, eu acerto a rede, à qual recentemente adicionei SO. Eu vou conseguir um hit em 'novos' conceitos (novos do ponto de vista pessoal) em SO antes de gaagle. Na verdade, eu raramente (hoje em dia) volto para a gaagle. A primeira resposta relevante é tipicamente um link para algumas questões interessantes sobre SO.

    
por 19.03.2012 / 11:48
fonte
4

Como outras pessoas, acompanho as coisas usando marcadores.

Eu costumava usar o Delicious, mas agora mudei para o Pinboard.

Mas eu não uso assim tanto quanto costumava. Parece que todo problema de programação que eu encontro é uma pequena busca no google. E no último ano, comecei a usar o Stackoverflow como um dos meus termos de pesquisa.

Sempre que venho fazer uma pergunta sobre SO para um assunto particularmente difícil, eu gosto de rastreá-lo, então essa é outra forma de bookmarking.

    
por 19.03.2012 / 12:36
fonte
3

"Remember the painting, forget the fine strokes"

É absolutamente normal não lembrar os detalhes mais sutis. No entanto, o que você deve se preocupar é esquecer as coisas importantes. Se você corrigiu um bug, você deveria pelo menos ter uma ideia conceitual sobre o problema.

Marcadores, blogs, cadernos de anotações são ótimos para armazenar os detalhes mais sutis. Mas no final você ainda precisa se lembrar da "foto" maior. Caso contrário, redescobrir esses detalhes "mais precisos" será muito mais difícil.

    
por 19.03.2012 / 11:59
fonte
2

Guarde suas próprias anotações, expressando as coisas com suas próprias palavras. Seu público-alvo é você , ninguém mais, então você pode se dar ao luxo de ser concisa. (No entanto, uma postagem no blog realmente precisa ser clara e bem editada, o que consome tempo.) Se você encontrar bons artigos / postagens de blog, registre a URL, mas ainda explique as coisas com suas próprias palavras.

Mantenho uma grande hierarquia de arquivos pequenos, curtos e de tópico único. Os arquivos são em sua maioria de forma livre, mas estou usando o Markdown. Pesquise usando grep / find. Eu mantenho a pasta no meu DropBox, por isso está sempre disponível para mim.

    
por 19.03.2012 / 15:49
fonte
1

Todos podem ter um estilo próprio que ele / ela esteja acostumado. Para mim, eu separo o conhecimento em categorias:

  • Livros

  • Artigos

  • Coleções (coisas que eu acho interessantes limitadas a poucos parágrafos - na verdade copio as informações e às vezes anoto a fonte) - Por exemplo: OODevelopment, Generics, ... etc.

  • Código reutilizável (texto e snippets) - Cada um em um arquivo separado em uma boa organização em árvore. Por exemplo. O nó DataValidation conterá muitas técnicas para validar diferentes itens de dados, cada um em um arquivo separado

  • Projetos concluídos

  • Tutoriais em vídeo pessoal (às vezes, gravo vídeos de como fazer as coisas quando há muitas etapas envolvidas).

  • Links

Organizo o assunto acima por assunto, com cada assunto em uma estrutura de árvore apropriada.

Algumas vezes há coisas sobrepostas, mas consigo encontrar o que quero.

Além disso, usando o Google Desktop, encontrar texto ou arquivos é muito rápido.

    
por 19.03.2012 / 11:59
fonte
0

Eu uso o OneNote. Eu tenho muitas linguagens de programação diferentes com as quais trabalho, então tenho seções diferentes para cada idioma e guias diferentes para diferentes tipos de notas.

Agora, estou começando a usar o Stack Exchange também.

    
por 20.03.2012 / 22:15
fonte
-1

Você deve estar equilibrado entre a memória e o "armazenamento". Se você confia demais ou para coisas erradas na memória, == problema, se você confia demais em armazenar tudo == inútil.

Minhas regras:

-Não acabe de embelezar! escreva as coisas importantes, mesmo que o tamanho da fonte varie em seu documento:)

-Não orginize demais. Convença-se que a organização dos seus pensamentos precisa de uma estrutura de árvore de 10 níveis

- Tempo de espera para encontrar o que gravar. Você pode encontrar 5 soluções para o mesmo problema. no momento em que você escreve-los todos para baixo você solta. Anote 1-2 que REALMENTE te ajudem. NÃO se deixe dizer que você não tem tempo para isso agora. É bastante estranho, mas se aplica: "Tempo gasto para obter tempo"

Eu não gosto de colocar essas coisas em algum "produto" porque eu quero ter certeza de que ele existirá 20 anos depois e eu não quero me migrar para várias plataformas.

Então, o que fazer?

Qualquer coisa que você possa obter a informação com o mínimo de esforço.

Por exemplo, instale o phpBB e escreva para você mesmo. você obtém funcionalidade de pesquisa pronta para uso, é grátis e pode ter dados extraídos com instruções SQL simples e colocá-los em arquivos. você pode ter um cronjob exportando seus pensamentos em arquivos para arquivamento. Então, se você precisar colocá-los em outro sistema, estará pronto com o mínimo de esforço.

Outro problema é que ninguém garante que os links que você encontrar funcionarão amanhã (imagine 5 anos depois). Então, tente duplicar as informações:

-Faça o download do vídeo com alguma extensão do navegador e anexe-o, por exemplo, à sua postagem do phpBB (ou wordpress ou qualquer outro).

Enfrente: você é um programador e faz aplicativos para outras pessoas. Faça um simples para você e torne-se seu melhor cliente.

meu 2c

    
por 07.04.2012 / 11:06
fonte
-1

Resposta curta:

Pratique, pratique, pratique.

Resposta não tão curta:

Como você se lembra de como andar? Como você se lembra de como falar? É claro que essas habilidades não são exatamente as mesmas e elas não exigem um conhecimento aparentemente enciclopédico (para iniciantes, pelo menos), mas você está usando a mesma coisa: memória.

Embora eu admita que, para iniciantes, a programação pode parecer um assunto imensamente grande quando você começa a estudá-la, ela se torna como qualquer outro assunto depois de você ter aprendido o básico.

Assim que percebi isso, comecei a dividir as coisas em partes cada vez menores (minha própria versão pessoal de abstração). Dessa forma, algo que parecia difícil de lembrar se torna mais fácil (pelo menos comigo).

Escrever coisas ajuda mais do que você imagina (tendo trabalhado na Educação, sei que isso pode ter enormes efeitos positivos na retenção). Especialmente se você puder colocá-lo em suas próprias palavras - em vez de apenas copiá-lo textualmente. Se você pode parafrasear ou equiparar isso a algo que você já conhece, melhor ainda.

Por exemplo: Em C #, os objetos String são imutáveis. Isso significa que sempre que eu digo ao meu programa para alterar o conteúdo de um objeto de string, o que realmente acontece é que a string original é destruída (tecnicamente ela é colocada no nível mais baixo do coletor de lixo). Exatamente como quando um artista comete um erro ao criar uma escultura em mármore - ela não pode ser alterada, por isso é destruída e uma nova é criada.

Não é um ótimo exemplo, mas mostra o básico sobre o que estou recebendo.

Documentação de qualidade também ajuda. Algo que meu palestrante da Programação 101 me disse certa vez ficou comigo:

Make your commenting verbose. Not to the point of stupidity, but you need to be able to write comments that a non-programmer could understand. That way, you know that someone else on the project can understand it, perfectly. Imagine that you'd spend months implementing a system but you where involved in some kind of horrible accident on the way to work. Someone else will be assigned your work - especially if it's close to crunch time - and if they can't figure out what your code is doing, then production stops.

Bons livros também são um excelente recurso. Um tutor diferente me disse uma vez que se um livro não tem um índice (e há muitos deles, que não existem), então não vale a pena comprar.

O Google pode ser um recurso incrível, mas esteja ciente dos codificadores de copiar e colar. Fique longe de sites que só lhe dão um bloco de código sem explicação. Eu prefiro ler um artigo inteiro sobre pequenos blocos de código, assim você vai embora sabendo exatamente o que o bloco de código deve fazer, como ele faz e por que o programador escreveu dessa maneira.

Espero que ajude

    
por 17.04.2012 / 15:06
fonte