Quais são as suas sugestões para aprender a pensar? [fechadas]

22

Antes de tudo, essa não é a pergunta genérica 'faça de mim um programador melhor', mesmo que o resultado de fazer essa pergunta possa parecer semelhante. Em programmers.SE, eu li e vi estes serem fechados aqui , aqui , aqui , aqui e aqui .

Todos sabemos que há uma infinidade de sugestões genéricas para aprimorar suas habilidades de programação (por exemplo, ler SO, ler livros recomendados, seguir blogs, envolver-se em projetos de código aberto etc.). Isso é não o que eu estou atrás.

Também reconheço os leitores ativos neste site e espero que funcione a meu favor, obtendo ótimas respostas. Da leitura da correspondência aqui, parece haver um grande número de pessoas experientes que estão trabalhando, ou já trabalharam, em campos relacionados à programação. E a maioria de vocês pode transmitir pensamentos de uma maneira eloquente e concisa.

Recentemente, notei a distinção entre alguém capaz de programar e um programador que pode realmente pensar . Recuso-me a acreditar que, para nos tornarmos excelentes programadores, simplesmente nos submetemos a uma vida inteira de comportamento semelhante a uma esponja (ou seja, absorvemos tudo relacionado ao nosso campo lendo, ouvindo, assistindo etc.). Eu diria mesmo que, simplesmente conhecendo cada conceito de programação que permite resolver o problema X mais rapidamente do que todos os que estão ao seu redor, se você não consegue pensar , está se limitando enormemente - você é apenas um robô rápido.

Eu gosto de acreditar que existe uma outra cara de ser um grande programador que não tem relação com o quanto você sabe sobre programação, mas é com que facilidade você pode entrelaçar novos conceitos e aplicá-los à sua profissão ou hobby de programação. Não vi ninguém se aprofundar ou abordar essa faceta da mente e da programação humanas. (Sim, também é possível que eu não tenha me esforçado o suficiente - desculpe se esse for o caso.)

Portanto, para quem passou algum tempo pensando sobre o que eu mencionei acima - ou talvez todos aqui, porque estou um pouco atrasado no meu desenvolvimento pessoal / profissional - quais são suas sugestões para aprender a pensar? Além da leitura usual, o que mais você fez para ser melhor do que as outras pessoas em sua / nossa área?

JK
fonte
Você deveria pensar como eu, porque eu sou ótima.
ChaosPandion
Use drogas pesadas, como Steve Job.
Job
A programação funcional ensina a pensar. Tudo o resto ensina a programar;) #
Dario

Respostas:

13

Minhas sugestões para aprender a pensar:

  • Aprenda novos idiomas . Linguagens naturais e de programação. Tenha sempre um novo idioma para aprender na sua mão. Pensar é feito mais e menos em um idioma. Cada idioma tem uma "visão" diferente sobre o pensamento. Mais idiomas que você conhece, mais "ferramentas mentais", conceitos, pontos de vista e abstrações estão disponíveis para você.

"A linguagem molda a maneira como pensamos e determina o que podemos pensar." - Benjamin Lee Whorf

E mais importante, a linguagem determina o que não podemos pensar.

  • Leia vorazmente . Leia amplamente. Não apenas sobre programação, mas história, sociologia, biologia, artes, etc. Amplie suas perspectivas. Obtenha informações novas. Você não é apenas o que você come - você também é o que lê. Novas idéias são mais sobre a combinação de duas (aparentemente) idéias diferentes, do que um flash divino de criatividade do nada.

"A sorte favorece a mente preparada." -- Louis Pasteur

  • Humildade . Você deve saber muito, para entender o quão pouco você sabe. A humildade ajuda a manter a mente aberta para novas formas de pensar.
  • Pergunte por que? Não se contente com como.
  • Aprenda matemática . Uma ferramenta realmente poderosa, um tipo de linguagem, para trabalhar com lógica e abstrações. Estudar matemática fortalece seu cérebro. Equivalente mental de "ir à academia".
Maglob
fonte
Não tenho tanta certeza das línguas naturais. Aprendê-los tem valor, mas para pensar? Em um contexto de programação? O valor das palavras para pensar às vezes é exagerado - podemos ter idéias que não podemos expressar facilmente em palavras, portanto, não somos totalmente dependentes de palavras para formar idéias. Além disso, o vocabulário mais relevante (jargão para matemática e outros campos técnicos) é muito compartilhado entre os idiomas.
Steve314
6

Da minha experiência, tudo se resume a duas coisas:

  1. Paixão, se você estiver interessado no ofício, aprenderá, se adaptará e será mais rápido a pensar fora da caixa do que muitos programadores que estão no campo da mesma maneira que o trabalho. (Alguns dos quais não têm computadores em casa.)
  2. Algumas pessoas nascem com a capacidade de resolver problemas técnicos. Algumas pessoas naturalmente têm a capacidade de abstrair uma solução flexível.

Além disso, todos são bastante diferentes na maneira como pensam sobre programação ou aprendem novas habilidades de programação. Eu sugiro que você continue tentando coisas novas e mantenha o que funciona bem para você.

jzd
fonte
Bons pontos, particularmente o segundo ponto.
Orbling
5

Quais são as suas sugestões para aprender a pensar?

Prática. Prática. Prática.

Sério, atividade mental (isto é, pensar) é como atividade física. Quanto mais você faz, melhor você o faz. (De fato, a atividade física também envolve um tipo de atividade mental. Os melhores esportistas não têm apenas os músculos no lugar certo ...)

Então, como você praticaria (efetivamente) o pensamento?

(Aqui estou generalizando de outra coisa ...)

Acho que você identificaria problemas de pensamento que considera difíceis (mas não impossíveis) e tentaria resolvê-los (pense neles) e mais parecidos com eles.

Stephen C
fonte
Eu meio que apoio isso. Sempre que estou fazendo algo repetitivo que não requer pensamento, estou pensando em outra coisa. Também costumo fazer isso quando faço coisas repetitivas em que devo pensar, como dirigir, mas, de alguma forma, sinto que dirijo melhor quando não penso nisso.
Earlz
1
@Earlz - Eu não entendo o seu ponto. Se você está fazendo algo repetitivo, não precisa pensar nisso. Estou falando de praticar a solução de problemas que exigem pensamento.
Stephen C
a experiência supera tudo (sei que tipo de afirmação geral), mas você aprende com o tempo, quero dizer com que frequência você teve um problema que levou uma eternidade para resolver, apenas para encontrá-lo novamente e cuidar dele em questão de minutos. Também a sua a maneira como você se aproximar de um problema, não se concentrar em ser preso, sempre se concentrar no que não tentei ainda, desde o mais simples ao mais complexo
farinspace
Prática deliberada . Você precisa aprender algo com cada iteração.
4

Você pode se interessar por essas duas coisas a seguir:

O fluxo

Mihály Csíkszentmihályi , professor de psicologia húngaro, introduziu o conceito de fluxo .

Fluxo é o estado mental de operação em que uma pessoa em uma atividade está totalmente imersa em um sentimento de foco energizado, envolvimento total e sucesso no processo da atividade.

Tenho a sorte de poder entrar no fluxo todos os dias usando uma técnica antiga que aprendi com meu aplicativo de GTD, que é a próxima ação .

Posso dizer que realmente faz a diferença. Quando estou no fluxo, produzo maior qualidade e mais rápido do que quando não estou nesse estado. Estou totalmente focado no que faço e, portanto, penso com mais eficácia.

Mindfulness

Eu fiz uma pergunta sobre meditação há um tempo atrás, porque estava preocupada com o fato de a meditação poder diminuir minhas habilidades de programação (e criativas).

Acabei de iniciar o treinamento do método Jon Kabat-Zinn , por isso é muito cedo para compartilhar experiências extensas com você, mas das poucas que aprendi até agora, posso dizer que isso provavelmente é algo que você deseja fazer.

Comunidade
fonte
+1 Embora eu odeie o fato de haver um livro e uma "teoria" inteira sobre o que equivale a uma abordagem de senso comum a um problema, o GTD certamente tem pernas.
Orbling
1
@Orbling: oh, eu concordo totalmente com você sobre isso. Mas, como na maioria dos livros, há porcaria e valor. O que é porcaria e valor depende de quem está lendo o livro. O problema com o GTD é que ele é tão poderoso que pode esmagá-lo se você não reservar um tempo para reduzir sua entrada, em vez de se concentrar no gerenciamento, independentemente do tamanho. Esse foi o meu erro;)
O problema que tenho na minha vida é que há tanta informação e muito a fazer, que não teria tempo para implementar tal procedimento. Embora eu possa certamente ver o valor nele.
Orbling
1
@Orbling: Eu acho que é a chave. Filtrar sua entrada é a melhor técnica de produtividade, além de Covey ou GTD. Requer ser muito forte mentalmente.
Acho que precisa de mais pessoas para realizar as tarefas que você filtra, lol.
Orbling
2

Sempre acreditei que bons engenheiros nascem, não são feitos.

Você precisa da mentalidade para isso, a mente lógica, analítica e dedutiva, combinada com a tenacidade e a inquisição necessárias para obter uma visão geral e uma visão estrutural de um problema de maneira eficiente e caminhar rapidamente de A para B, direcionando sua mente através a solução.

Há muita pesquisa sugerindo que essa habilidade é enormemente impulsionada pela boa exposição precoce a essas coisas, a música também ajuda. Depois de um certo ponto no tempo, seus mapas mentais estão bem conectados. Não em termos do que você pensa, mas como você pensa.

Você pode aprender a pensar como adulto? Bem, certamente você pode aprender técnicas para resolver problemas, mas, depois de ter algoritmos a seguir, pode se tornar um "robô rápido", como eloquentemente coloca. A compreensão intuitiva é provavelmente inata.

Isso não se limita à nossa profissão, pois muitas habilidades são dominadas por habilidades inatas, em vez de respostas adquiridas. As pessoas podem não querer que isso seja verdade, mas é mais provável.

Orbling
fonte
2

Encontre um fórum on-line sobre algo pelo qual você é apaixonado. Algo que tem algum tipo de comunidade. De preferência, não programação - os fóruns de programação geralmente são mais orientados a soluções do que orientados a discussões. Tome uma posição. Defenda-o. Use argumentos. Você também pode blogar, mas ter um oponente é melhor. O objetivo é ter uma comunicação significativa e escrita sobre algo com alguém. Onde você troca pedaços de texto um pouco maiores.

Você aprenderá a comunicar suas idéias e argumentá-las. Como você terá que defender seus pontos de vista, precisará apoiá-los com fatos. Você terá que pensar em algo, articular sua posição e apoiá-la; talvez até mude.

Posteriormente, use essa capacidade de analisar o problema, sintetizar a opinião e aplicá-la a qualquer coisa. Mesmo programação.

Domchi
fonte
Devo dizer que é uma maneira de praticar o pensamento. Não é o único.
Domchi 12/02
2

Uma coisa em que penso é que é preciso ver as coisas como sistemas, e todos os sistemas estão relacionados. Cada um no universo. A humanidade, os planetas, a galáxia, as plantas, a luz solar, a fotossíntese, os insetos, as rochas, os oceanos, todos os sistemas em interação. Da mesma forma, com o tempo, ciclos: nascimento, crescimento, decadência, morte, de insetos, pessoas, civilizações, montanhas, sistemas estelares. A luta sem fim por energia. Todos os sistemas.

Este é o estudo da vida e da natureza no grande sentido do estudo. Veja tudo relacionado, veja tudo interagindo. Concentre-se nisso quando assistir o pôr do sol e sentir a profundidade das forças da gravidade que nos giram ao redor do Sol, nos puxa para a superfície do planeta e a luz do sol que se esvai antes de entrar em sua retina a 300.000.000 metros por segundo e fazer imagens no seu cérebro de primata.

Quando você começa a pensar nisso, em como tudo está relacionado, em como o preço do ouro e do trabalho escravo e as tempestades no Pacífico e nos complexos industriais no Japão estão relacionados, e você gasta algum tempo, realmente gasta um tempo para sentar e pense em tudo isso, então seu "músculo" pensante realmente se flexionará e crescerá.

Agora, muito disso estará abaixo do limiar da expressividade, mas não deixe que isso o impeça. Seu cérebro é mais poderoso que o computador mais poderoso. Empurre-o. Eu não acho que é possível fazer overclock.

Lembro-me de uma imagem em preto e branco que mostrava Albert Einstein descansando em uma cadeira de jardim na praia olhando o oceano. A legenda dizia: "Aqui está Albert Einstein. Com o cérebro".

O próximo desafio é poder comunicar a complexidade e a interdependência de todas as coisas de uma maneira simples. Isso lhe dará algo para fazer até você ficar muito velho.

Christopher Mahan
fonte
2

Uma abordagem é a prática deliberada .

A repetição simples não leva a nenhuma aquisição de habilidades - você precisa ser introspectivo, avaliar seu desempenho, identificar maneiras de fazer as coisas melhor.

Uma ilustração: Um parente próximo compete no esporte do tiro de pistola. Durante o treinamento, muita concentração continua revendo cada tiro, concentrando-se nos passos que correm corretamente. Contra-intuitivamente, não há muito foco em fotos ruins, porque repetir (ensaiar) o erro o reforça.

Simplesmente disparar 100 tiros abaixo do alcance não faz nada. A prática deliberada de disparar 20 tiros reforçará bons hábitos e levará a um melhor desempenho.

O mesmo se aplica à programação - pense no que você faz. Não faça isso mensalmente, semanalmente ou diariamente - faça momento a momento, ação por ação.

  • Por que esse defeito ocorreu no meu código?
  • Como eu poderia ter evitado criar esse defeito?
  • Como eu encontrei a solução mais rapidamente?
  • Qual suposição minha estava errada?
  • Eu pedi ajuda rápido o suficiente? muito rápido?
  • Eu já cometi esse erro antes?
  • Esse defeito é isolado ou faz parte de um padrão?
  • Existe um defeito de design subjacente?
  • Se sim, posso fazer algo a respeito?

E assim por diante ...

Bevan
fonte
grande ponto de, mais uma vez tudo isso vem com o tempo / experiência
farinspace
1
@farinspace, apenas se você reservar um tempo para avaliar e aprender após cada iteração.
1

Vá cutucar algo que você ama até encontrar uma vantagem.

Respiração profunda,

Passar por cima ...

...

... Diga aos outros o que encontrou.

Paddy3118
fonte
1

Então você quer pensar

Muitas sugestões excelentes de outros pôsteres sobre como pensar ou como aprender a pensar: o fluxo, a atenção plena, a matemática, a paixão, a prática ... então eu não irei lá, coberto de chão.

Mas nada sobre o porquê. Qual é o propósito?

Pessoalmente, eu entendi isso antes que você possa pensar que precisa saber o porquê.
A melhor coisa a fazer é ouvir e olhar. (Eu tomo os dois como uma unidade, você não pode separá-los)

A única maneira de melhorar a programação, seja reunindo requisitos, transformando-os em especificações detalhadas do sistema, combinando isso com documentos de design, implementando o código, depurando para sua vida útil, se você pular algum ou todos esses estágios, se você tem cinco minutos para encontrar uma solução ou 20 anos, precisa ouvir e procurar.

Ouça o que o usuário deseja, ouça o que o usuário diz que aconteceu, ouça a pessoa de suporte que você viu. Ouço. Ouça mesmo que não faça sentido. Ouça mesmo se você estiver convencido de que eles estão tão errados. Ouça e não julgue.

Procure pistas, não pesquisando, mas abrindo os olhos. Veja a realidade. Você não pode começar a procurar respostas antes de olhar para a cena do crime. Você não pode encontrar uma solução até ter provado a falha.

Um único exemplo da minha experiência(na resolução de bugs, mas poderia ser adaptado a qualquer coisa realmente). Por razões óbvias (legais e outras), vou manter detalhes interessantes disso. Em um sistema crítico de segurança, um operador relatou uma falha grave. Na verdade, algum dispositivo de rastreamento geográfico perdeu o rastreamento quando "não deveria", com impacto potencial em vidas (esse "deveria" foi o verdadeiro erro e paralisou nossas investigações por muito tempo). Felizmente, embora isso tenha sido encontrado semanas mais tarde quase por acaso, pois havia outro sistema em operação em um local remoto para o qual outro operador veio provar que o rastreamento não havia sido perdido naquele sistema. Isso nos fez pensar novamente. Nosso principal fornecedor de software não acreditou em nós nem um segundo, então tivemos que sair e provar o assunto. O único caminho era através do enxerto: construindo uma simulação para replicar a exata situação operacional. Tivemos que filmar a prova para que o fornecedor acreditasse em nós. Eventualmente, a simulação produziu informações além de nossas esperanças e nos levou a entender todo o problema. Não demorou muito para corrigir depois disso.

A única maneira de chegarmos ao final foi conectando logicamente um sistema remoto a outro, executando um trabalho semelhante, mas não exatamente o mesmo trabalho. Essa é a busca de pistas (veja). Isso só foi possível confiando no relatório único e não descartando-o como uma falha aleatória no sistema (Listen) e depois ouvindo novamente o segundo relatório que contradiz o primeiro (Listen).

Portanto, quando você tiver as pistas certas (depois de ouvir e olhar), definir a área do problema, entender a causa raiz ou os principais princípios, poderá pensar em soluções para entender melhor primeiro (tentativa e erro, simulações, demonstração, prova de conceito, mock-up, alfa, beta) e, eventualmente, oferecer uma solução sólida (que às vezes pode ser melhorada após algumas operações na vida real).

Ser capaz de ouvir e olhar assim exige uma mente aberta, confiança e dedicação absoluta aos seus objetivos. Esse é o combustível que você precisa pensar, ou mais precisamente para que seu pensamento seja focado no alvo certo (geralmente o problema não é a incapacidade de pensar, mas a falta de um alvo bem definido para se exercitar).

asoundmove
fonte
Marque com +1 a sua resposta, é essencial estudar o domínio do problema e ouvir os usuários. Embora -1 para o comentário "sim, certo", não há alterações.
Orbling
@Orbling: Ok, você está certo, isso foi um pouco exagerado. Comentário removido. Não acho que o talento inato esteja certo, mas não há necessidade de mencioná-lo.
asoundmove
Bem, se você tivesse -1 minha resposta em vez disso, eu teria marcado a sua da mesma forma, mas isso evitou isso, corrigido agora. É bom mencionar isso errado, se você não concordar com o que eu disse.
Orbling
@Orbling, nah Eu não gosto de votar -1 em ninguém, prefiro seguir em frente ... Apenas cenários extremos justificam -1, apenas discordar não.
asoundmove
Concordo com você nos outros sites, pois eles estão certos / errados, principalmente. Programmers.SE é diferente do resto, pois é subjetivo; portanto, a votação é basicamente acordo, desacordo. Se você acha que é útil ou inútil. Só voto negativo se discordo totalmente de alguém. No momento da redação deste artigo, 2,6% dos meus votos são negativos. Afinal, as opiniões devem ser contestadas.
Orbling 13/02/11
1

Eu acho que você precisa fazer a distinção entre diferentes tipos de pensamento.

Pensamento criativo - como apresentar novas idéias, soluções inovadoras e resultados inesperados. Existe toda uma ciência por trás disso, procure Edward de Bono, técnicas de criatividade etc. Poucos programadores investigam essa área.

Pensamento analítico - com isso quero dizer processo científico. Observe entradas, saídas, meça o que é importante e chegue a conclusões lógicas. A maioria dos desenvolvedores está familiarizada com a técnica científica, mas nunca a utiliza realmente. Faça isso!

Pensamento crítico - acho que isso é mais filosofia. Afaste-se e olhe para a foto maior, revise suas suposições, você realmente faz o que diz que são seus valores? Estudar filosofia, há um monte de grandes autores e idéias por aí.

Richard
fonte
0

A matemática ensina como pensar. Aplicação requer criatividade e experiência.

Recuso-me a acreditar que, para nos tornarmos grandes programadores, simplesmente nos submetemos a uma vida inteira de comportamento semelhante a esponjas

Boa visão. Em termos gerais, os requisitos para "grandeza" dependem da sua definição pessoal de "grandeza" ... e mudaram ao longo do tempo. Hoje, o sucesso do projeto consiste em ser capaz de reunir conceitos rapidamente e sem se aprofundar em todos os detalhes. O sucesso pessoal pode ser definido como o domínio de C # como Jon Skeet.

Leia o codificador no trabalho . Codificadores muito mais experientes do que eu discuto isso em detalhes.

P.Brian.Mackey
fonte
0

Trabalhe na aplicação de idéias e conceitos de áreas aparentemente não relacionadas. Para mim, o brilhantismo do iPod não era a engenharia por trás de criar um ótimo MP3 player, mas a ajudar a resolver um enorme problema que a indústria do entretenimento musical estava tendo com músicas piratas e com o modelo de CD / álbum de venda de músicas. Jobs provavelmente aplicou mais do que aprendeu na Pixar ao lidar com a indústria cinematográfica. Ele sabia qual era o verdadeiro problema.

JeffO
fonte