Como a programação é afetada pela aptidão espacial? [fechadas]

19

fundo

Quanto mais trabalho em um projeto, menos claro ele fica. É como se eu não pudesse mais separar várias classes / objetos na minha cabeça. Tudo começa a se confundir e é extremamente difícil desmontar tudo de novo. Começo a colocar funções em classes onde elas realmente não pertencem e cometo erros tolos, como escrever código que mais tarde acho 100% obsoleto; as coisas não são mais claramente mapeadas na minha cabeça. Não é até dar um passo atrás por várias horas (ou dias, às vezes!) Que eu posso realmente ver o que está acontecendo novamente e ser produtivo.

Normalmente, eu tento lutar com isso, sou tão apaixonado por codificação que nem sei pela vida o que mais eu poderia estar fazendo. É quando as coisas ficam realmente esquisitas, fico tão na cabeça que perdi o contato com a realidade (em certa medida), pois várias ações, como derramar um copo de água, não acontecem mais em um nível consciente. Isso acontece no piloto automático, durante o qual praticamente toda a minha concentração consciente (isso é alguma coisa?) É dedicada à solução de problemas sem sentido (tentando separar elementos do código). Parece uma batalha perdida.

Por isso, fiz um teste de QI há um tempo (a Wechsler Adult Intelligence Scale, acredito que fosse) e constatou que minha Aptidão Espacial estava bastante baixa. Ainda tenho uma pontuação total decente , um pouco acima da média, por isso não terei que mexer nas coisas com a vida, mas estou um pouco preocupado que isso seja uma desvantagem ao escrever / projetar programas de computador que ganhei ' nunca será capaz de fazê-lo a sério ou profissionalmente.

Questão

Estou muito interessado no que as outras pessoas pensam disso ...

Poderia uma baixa aptidão espacial ser a causa dos problemas descritos acima?

Como a programação é afetada pela aptidão espacial?

Talvez eu devesse procurar mais, de acordo com o ADD ou algo semelhante, porque fui diagnosticado com ADD aos 17 anos (5 anos atrás), mas o medicamento que recebi não pareceu me afetar tanto, então nunca tomei tudo tão sério.

Até onde eu sei, as pessoas nascem com baixa / média / alta aptidão espacial, então acho interessante descobrir se os mais afortunados são melhores programadores por direito de nascimento.

natli
fonte
5
it turned out my Spatial Aptitude was quite low. I still got a decent score, just above average,Não sou psicóloga, mas se leio corretamente o inglês e entendo a definição de média, realmente não entendo como isso se traduz em quite low... Talvez você esteja pensando demais nisso ... :)
haylem
1
Ah, também, os testes de QI são uma porcaria, para resumir a pesquisa sobre eles sem rodeios. Você mora nos EUA? (Apenas perguntando porque parece haver uma maior utilização de testes de QI - e grosseiramente superestimadas medo da ADD - nos EUA do que em qualquer outro lugar)
haylem
1
@ psr: Eu não ficaria surpreso, na verdade. Pode não parecer que tenha muito a ver com isso, mas as pessoas que têm problemas com representações espaciais e enjôo crônico de movimento geralmente têm mais dificuldade para lidar com muitas coisas. Eu não acho que isso seja um pouco diferenciador (mas não sou psicólogo ou neurologista), e que suas habilidades e paixão reais de programação são o que o diferenciará do resto do grupo.
haylem
2
@haylem que eu não conheço em geral, mas a maioria dos testes de QI online serão classificados em vários eixos. Aptidão espacial, habilidade lógica, etc, etc. Acho que o que Natli está dizendo é que a média de todas elas estava um pouco acima da média, mas a pontuação de aptidão espacial foi bastante baixa.
Izkata
1
Eu anseiam por um trabalho onde eu picar as coisas com uma vara.
Dan Ray

Respostas:

27

Na verdade, existem alguns dados de pesquisa sobre isso, coletados principalmente nos últimos 35 anos, e também experimentei alguns fenômenos semelhantes, embora não regularmente. Veja abaixo mais.

Dados de Pesquisa

Parece haver alguma correlação, porém menor, com base nas pesquisas realizadas e resumidas nos trabalhos a seguir. No entanto, como geralmente ocorre com a pesquisa, os modelos de estudo diferem entre os estudos e devem ser revisados ​​de perto para entender por que os resultados apresentam diferenças nas conclusões.

Leve-o com uma pitada de sal: alguns são relativamente antigos, os testes de QI podem ter mudado desde então. Não fiz uma pesquisa aprofundada para encontrar citações de cada artigo para ver se elas foram confirmadas ou desmascaradas posteriormente.

Alguns links (especialmente o tipo [PDF]) podem não funcionar para você se você não tiver uma afiliação a uma biblioteca que dê acesso a esses conteúdos online.


Opinião pessoal

Aviso e divulgação: Eu sou NEM um psicólogo NOR um neurologista, mas tenho vindo a estudar e ensinar programação para ambas as crianças pequenas (começando 6) e estudantes universitários (até 60!).

Tendo estudado com AND e ensinado alunos como professor universitário, incluindo alguns alunos afetados por problemas espaciais (e outros com deficiências mais fortes), devo dizer que, embora pudesse ter sido (não acompanhei meus alunos com base em deficiências, obviamente) que alguns teriam se registrado em uma parte inferior da curva geral, ainda me lembro claramente de uma pontuação alta (e mesmo uma em particular sendo a principal da turma por pelo menos 2 anos).

O que quero dizer é que, embora possa ter um efeito e, como mostra algumas das pesquisas acima, não é responsável pela maior parte de sua capacidade de aprender a programar e pensar como um programador. É irrelevante, pois isso não o impedirá de aprender se você realmente deseja, e não o impedirá de trabalhar no caso geral, embora isso possa (como pode ser o seu caso) tornar um pouco mais difícil para você.

Praticamente não há limite para o que e com que rapidez você pode aprender .

Afinal, nenhum programador não gosta de um bom desafio, certo? (Eu estou olhando para você, RSI)


Experiência pessoal (possivelmente não relacionada)

Pode ser que você seja muito apaixonado. Quantas horas você trabalha por dia e por semana? Você faz intervalos regulares?

Um caso semelhante?

Em um período da minha vida, trabalhei dias de pelo menos 14 horas todos os dias da semana, durante todo o ano, a ponto de culminar em gravar semanas de 120 horas de trabalho na frente de uma tela de computador . Sim, faltam apenas 48 horas por semana para comer, dormir, viajar de e para o trabalho ( dica: evite dirigir !! ), tomar banho e outras funções vitais. Nesse ponto em particular, eu quase conseguia dormir num piscar de olhos (embora geralmente tenha problemas para dormir), masEu quase sempre ficava sonhando com código, e de repente percebia no chuveiro ou mesmo ao caminhar, correr ou executar tarefas domésticas que minha mente voltava a ele no piloto automático, como você mesmo disse. Infelizmente, eu não magicamente resolvia problemas enquanto dormia; estaria mais próximo do que você parece descrever e experimentar: um gigantesco turbilhão de pensamentos confusos girando na minha cabeça, o que meio que (parece) faria sentido em uma escala maior, mas não expressaria claramente nenhuma solução e sem muito sucesso agarrando um desses pensamentos para focalizá-lo, dissecá-lo claramente e transformá-lo em algo útil. E isso geralmente era bastante cansativo e angustiante.

O relaxamento pode ajudar

Talvez você precise se acalmar um pouco, relaxar e trabalhar menos. Tente encontrar algo para tirar sua mente. Naquela época, acabava renunciando muitas horas preciosas de sono para fazer algo que realmente pararia essa louca linha de pensamento. Parece contraproducente, mas na verdade eu preferia fazer algumas coisas em que realmente relaxava do que dormir mais e não descansar. A distração para as baterias nervosas e o sono para as baterias físicas, em certo sentido.

Identificando gatilhos

Se esse não for o seu caso, talvez haja algo mais envolvido no desencadeamento desse estado para você. Tente isolar os elementos presentes nessas situações e verifique se é possível reproduzir essa condição em outros ambientes, para ver se você também encontra esses elementos. Isso acontece mais no trabalho ou em casa, etc ...

Isolamento

Além disso, você já deve ter ouvido e tentado isso, mas eu tenho um amigo com uma deficiência espacial menor, e geralmente ajuda para ele, se estiver trabalhando em computadores, ficar em uma sala mais escura, para evitar ter vistas e janelas complexas demais. aberto (para evitar distrações) e, em geral, para manter as coisas um pouco minimalistas (tanto em termos de design e cores, quanto em termos de conteúdo e representação).

Tente também fazer intervalos regulares e deixar sua mente livre por curtos períodos de tempo a cada 1 ou 2 horas, com base no que funciona melhor para você. Talvez adote a técnica Pomodoro ou algo semelhante (não tenho pesquisas sobre correlação com isso, mas pode ser útil para forçar você a fazer pausas).

haylem
fonte
Uma pergunta muito interessante, quando você começa a se aprofundar, e no começo eu não tinha pensado em minha própria experiência. Espero que ajude. Para mais trabalhos de pesquisa, uma rápida pesquisa no Google Scholar por "programação de aptidão espacial" gera uma tonelada a mais de resultados. O uso da ferramenta de citação pode ajudar a identificar os trabalhos mais citados.
haylem
1
Obrigado por colocar tanto esforço em sua resposta, algumas informações realmente boas lá. Eu definitivamente escrevo código cerca de 10 horas por dia, às vezes mais. O relaxamento pode ser fundamental aqui, mas isso será difícil de realizar. Como você disse, eu provavelmente sou muito apaixonada por meus próprios projetos; Eu não quero estar fazendo outra coisa. Então, embora eu esteja fisicamente fazendo algo diferente de programação, minha mente ainda estará trabalhando nisso ... Eu não acho que seja possível impedir sua mente de fazer o que bem quiser.
Natli
@natli: é um pouco a mesma abordagem de abandonar o hábito. Se você quiser parar de fumar, precisará substituir algo pelo cigarro. Algum hobby em particular que você realmente gosta, além da programação? Então use isso. Para algumas pessoas, atividades intensas poderiam fazer (pegar abóbora, por exemplo ...), enquanto para outras é o contrário: elas precisam de algo extremamente passivo. Talvez você possa tentar meditar. Aprender a limpar sua mente é uma habilidade importante para aprender. Ajudou muito com meus problemas de sono, por exemplo.
2111 haylem
@natli: Eu não me importei com o "esforço". Achei uma pergunta interessante e a maioria dos artigos era de boa leitura. Às vezes, esse tipo de pesquisa pode, com freqüência, ao tentar identificar fatores psicológicos e neurológicos, ser um pouco vago, pois é difícil especificar um bom modelo de estudo. Também é potencialmente assustador quando a pesquisa tende a ir na direção de "fechar portas" para as pessoas. Obviamente, essa não é a intenção: você não orienta a pesquisa; mas pode ser o resultado mesmo assim. Ainda assim, fiquei feliz ao descobrir que é uma área de pesquisa ativa . Obrigado por isso, e feliz que ajudou.
585 haylem
+1 para a técnica Pomodoro. Eu usei isso para estudar para os meus exames quando eu ainda estava na Universidade. Deve ter funcionado, porque passei em tudo <- a frase inteira é baseada em ciência desonesta, para não ser levada a sério.
Jamie Taylor
4

Ech ... isso merece mais do que um comentário.

"Eu costumo tentar lutar contra isso"

Pare de brigar. Você está torcendo as coisas e cometendo erros, certo? Você pode ter alguns problemas únicos, mas a maneira pela qual seu cérebro está se rebelando é normal para quem passa muito tempo hiper-focado em um problema. Quando eu era mais jovem, passava muito do meu dia pensando naquele nível altamente consciente e eu não estava fazendo nenhum favor a mim mesma. Seu problema não é que você não está se esforçando o suficiente, é que você não sabe quando parar.

Finalmente aprendi a apreciar o valor de colocar as coisas em segundo plano quando descobri que a única maneira de dormir a uma hora razoável era pensar em absolutamente nada e fiquei chocado ao descobrir que em 10 minutos mais ou menos Adormecia enquanto normalmente pensava, pensava, pensava por pelo menos algumas horas antes de cair de exaustão mental.

A partir daí, achei mais fácil aprender a reconhecer quando estava colocando um excesso de pensamento consciente em um problema e deixá-lo passar por um tempo. Fiquei surpreso ao descobrir o quanto isso realmente contribui para ajudá-lo a resolver um problema.

Eu recomendo o seguinte:

  • Quando algo está ficando torcido na sua cabeça e você não tem o luxo de dar um tempo e dar um passeio ou algo assim, tente mudar de marcha e se concentrar em um problema muito diferente por um tempo.

  • Nunca pule o almoço e sempre saia do escritório. Dê a si mesmo até chegar à porta para chegar a um ponto de parada ou simplesmente soltá-la. Qualquer coisa que valha a pena ter em mente estará lá quando você voltar a ela e todas as coisas que você não precisava desaparecerão. Quanto mais você descobre isso, mais fácil fica.

  • Regularmente, você mesmo pensará em nada durante o dia. Mesmo que seja apenas por um minuto enquanto você pega esse copo de água.

  • Tente aproveitar o OOP ou qualquer outra abordagem arquitetônica centrada no domínio do problema para pensar em menos. Quem são os atores no seu código no nível mais alto? Eles não devem ter relacionamentos complexos um com o outro. Isso permite que você se concentre mais em uma parte do problema de cada vez.

Alguns princípios de codificação que podem ajudar

  • DRY é uma prática geral de codificação, pois "Roubar é errado" pode ser aplicado a quase toda ética / moralidade. Existem exceções muito raras. Mantenha-os muito raros.

  • Se você tem o hábito de resolver em excesso os problemas que poderá enfrentar no futuro, pare com isso. Nada é mais à prova de futuro ou "escalável" do que o código que não é mais complexo do que precisa ser. "Empresa" é mentira.

  • Padrões complexos geralmente prometem longas listas de recompensas. Existem apenas três coisas que devem importar na maioria das vezes. É fácil de ler. É fácil de reutilizar. É fácil de modificar. Pense em termos de uso mínimo de força que um artista marcial possa e aplique esse princípio à complexidade. Exatamente o suficiente para resolver o problema é ideal.

  • Escreva sua interface primeiro. E não, não quero dizer as construções C # / Java que devem ser usadas apenas quando necessário, quero dizer a API de seus objetos. O que a classe / objeto precisa fazer? Escreva esses métodos vazios e dê a eles nomes de argumentos. Não preencha os espaços em branco até terminar completamente. Não há problema em fazer ajustes mais tarde, mas depois de estabelecer o que ele precisa ser capaz de fazer, você pode se concentrar em como cada coisa, uma de cada vez, precisa ser feita. O motivo pelo qual você pode tentar manter tanto em sua mente como costuma fazer pode ser porque você tem implementações acontecendo para problemas que deveriam ter sido resolvidos muito antes de você chegar a um determinado estágio de um processo. Tem muito é e tem métodos? É disso que estou falando.

Diagnóstico?

Eu acho que a preocupação de conscientização espacial foi bem coberta. O que quer que você decida nessa área, eu daria uma revisada no ADD, principalmente se você relutasse na primeira vez. Definitivamente, isso parece muito com o hiper-foco ao extremo. Por fim, deixe que o amor pela codificação o leve a encontrar maneiras de mitigar esses problemas, e espero que sua carreira dê certo.

Erik Reppen
fonte
3

Quantas horas você trabalha antes de começar a ver esse desfoque? Muitos programadores médios a bons que conheço do trabalho 4, podem levar cinco horas antes de tomar um café, almoçar ou algo assim. O mais longo desses sprints que eu já li foi quando Guy L Steele e Richard M Stallman fizeram um sprint de 10 horas ou mais ao escrever o Emacs. Steele continua dizendo que não gostaria de fazer um sprint tão longo novamente.

Se você é relativamente novo em (menos de, digamos, 5000 horas (esse número veio do post de Peter Norvig sobre aprender a programar em dez anos, diminuindo pela metade as 10000 horas que ele recomenda para se tornar um programador especialista)), isso soa muito normal, exceto na parte em que você diz que precisa de dias de folga. Talvez você esteja se esgotando para fazer uma pausa tão longa?

vpit3833
fonte
Acho que não tenho mais de 2000 horas de experiência, embora não seja exatamente como eu continuei acompanhando. Além disso, precisar de um par (leitura; dois) dias de recuperação é bastante raro. Nos primeiros dias, só preciso de uma boa noite de sono para resolver os problemas no dia seguinte, mas provavelmente trabalho demais, tentando lutar contra a confusão. Se eu continuar assim por tempo suficiente, eu definitivamente preciso tirar alguns dias de folga da codificação para poder olhar para o meu código com novos olhos e ver instantaneamente os erros estúpidos que eu estava cometendo. Coisas que levavam horas para fazer, literalmente, levam apenas 15 minutos após o intervalo.
Natli #
1

Pelo que você descreve, seu problema pode ter várias causas:

  • Inexperiência

  • Perda de foco / fadiga

  • Baixas habilidades espaciais

A inexperiência pode ser resolvida com ... bem, ganhando mais experiência, basicamente. Por mais óbvio que possa parecer, praticando mais, você se encontrará em situações complexas de programação com mais frequência e aprenderá progressivamente a lidar com elas. No momento, você pode não ter os esquemas e reflexos mentais para fazer as conexões certas, tirar as conclusões certas e desbloquear essas situações, o que pode fazer você se sentir lento e escrever "código obsoleto", mas esses padrões de solução de problemas serão progressivamente ocorre na sua cabeça à medida que você se torna mais experiente (você tem apenas 22 anos, pelo que entendi, que ainda é muito jovem).

Existem várias técnicas para melhorar seu foco. Pomodoro e Getting Things Done são dois exemplos. No campo da programação, o Desenvolvimento Orientado a Testes também é algo que eu realmente recomendaria, pois obriga você a se concentrar em um objetivo pequeno e alcançável de cada vez (pequenos passos). Com uma abordagem TDD, é muito menos provável que você "coloque funções em classes nas quais elas realmente não pertencem", pois você é forçado a definir claramente uma responsabilidade de sua classe com um teste e, em seguida, se concentrar apenas na implementação quando codificar , em vez de saltar entre várias classes e preenchê-las aleatoriamente, pouco a pouco.

Fadiga e quedas de atenção podem ser evitadas adotando-se um ritmo sustentável com pausas frequentes. Você pode encontrar interesse nessa apresentação de Linda Rising em ser mais produtivo, respeitando nosso cérebro: nascido para o ciclo .

Quanto às baixas habilidades espaciais, receio que não haja muito que você possa fazer sobre isso. No entanto, o trabalho duro pode atenuá-lo e está longe de ser a única habilidade necessária na programação. Coisas como criatividade, paixão, entusiasmo, rigor, habilidades analíticas, nitidez, boa compreensão de questões de negócios, habilidades de colaboração podem mais do que compensar uma visualização mental mais fraca do que a média da base de código.

Em resumo, o que você precisa da IMO é:

  • Disciplina

  • Prática

  • Um ritmo sustentável

guillaume31
fonte