Executando verificação de segurança...
16

[DISCUSSÃO] O que é "ser bom em matemática"?

Para programar, precisa ser bom em matemática?

A pergunta acima é uma das principais entre pessoas que estão pensando em optar pela área. E a resposta, que na maior parte das vezes vai dos céus aos infernos, causa polêmica.

Alguna dirão que não é necessario ser bom em matemática. Afinal, em um país como o Brasil, onde o ensino é pífio, matemática assusta.

Outros não abrirão mão da ideia de que matemática é primordial, inclusive defendendo os extensos cursos de cálculo das boas faculdades. (Enquanto as ruins tentam minimizar ao máximo o contato do aluno com a matemática, afinal aluno desmotivado leva a taxas de evasão altas, que levam a queda no faturamento).

Mas, o que é ser bom em matemática?

O que eu vou expor em seguida é apenas uma opinião, uma visão pessoal. Use os comentários para expor a sua e vamos discutir esse assunto.

A história do seu Zé

Seu Zé, homem de meia idade e pouca escolaridade, é pedreiro. Quando precisamos de alguém para realizar uma reforma, logo o chamamos.

E o seu Zé parece uma calculadora humana. Basta você levá-lo ao terreno vazio onde você pretende erguer o puxadinho, que em minutos o seu Zé cospe números e mais números: quantidade de tijolos, lajotas, areia, pedra, ferro...

Como ele consegue olhar para o vazio e dizer que é necessario 750 tijolos pra levantar o novo cômodo? Este homem não chegou à quinta série!

Não há, no mundo, quem nao diga que seu Zé não seja bom de matemática.

Mas, espere! Seu Zé não sabe o que é um pi, nunca ouviu falar em uma derivada ou função composta. Será que o pedreiro é mesmo bom em matemática?

Meu ponto de vista

Na minha opinião, sim: seu Zé é otimo em matemática.

Pois penso que ser bom em matemática é conseguir utilizar esta disciplina como ferramenta para conseguir chegar ao seu alvo desejado.

Dona Maria, lá na quitanda, toda vez que precisa dar o troco, começa uma ininteligível ciência do "se vc me dar 25 centavos, eu te devolvo um real e aí você me dá cinco e eu te dou o troco certo". E a gente fica com cara de interrogação em frente ao caixa.

Tanto o Zé quanto a Maria sabem matemática o suficiente para garantir que vão conseguir realizar bem o seu trabalho do dia a dia. Eles não precisam saber cálculos complexos para dar troco e calcular metragem de areia, mas eles sabem matemática o suficiente.

Ao contrário de boa parte de nós, brasileiros — inclusive o Zé e a Maria —, que tem pouco poder analítico quando o assunto é financas, e por isso, vivem endividados. Nesta área, são poucos que parecem dominar a matemática necessária para perceber de cara quando o banco está oferecendo um produto ruim.

Para programadores, penso eu, também não chegam a serem necessários os cálculos da NASA, mas é necessario, pelo menos, saber o suficiente para conseguir realizar bem o seu trabalho.

Por mais que um desenvolvedor, na maior parte do tempo, tenha um ORM abstraindo seu contato com um banco de dados, saber teoria dos conjuntos é primordial.

Se você tem dificuldade em entender joins, seu problema nao é SQL: é matemática. Se você não consegue algoritmizar uma matriz, seu problema é matematica. Se suas funções não são bem definidas, se seu código é sujo, se você têm dificuldades para abstrair problemas do mundo real, seu problema não é Angular, nem React: é matemática.

Concluindo

Falar que, para ser programador precisa ser bom em matemática, parece um muro grande demais para nós brasileiros, na "zona do rebaixamento" do PISA, ultrapassarmos. Mas, ser bom em matemática para programar não é ser o novo Einstein: é saber fazer o arroz com feijão.

Programadores precisam ser bons em matemática pelo menos o suficiente para conseguir usar a matematica para resolver seus problemas de programação. Estudar matemática discreta, penso eu, já é um ótimo início: matéria nível ensino médio, que poucos programadores dominam.

Se você não sabe nem isso, você é pior de matemática que o seu Zé, pois ele consegue usar matemática como ferramenta para realizar seu serviço; já você, não.

6

O grande problema, principalmente aqui no Brasil, é que ensinam matemática como decoreba de equações, o que é extremamente equivocado. Matemática é sobre reconhecimento de padrões, assim como na programação, e aplicando seus conhecimentos de como resolvê-los.

Por exemplo, vamos supor que eu tenha que calcular o lado de um triângulo retângulo, e é sabido o comprimento dos outros dois. Neste caso, o que eu espero é que você saiba que é possível de se fazer isso por meio do Teorema de Pitágoras, o que não é importante é você saber decorado qual é a equação. Esse problema é extremamente básico, de tal forma que você provavelmente sabe a equação de cor, porém conceitos de cálculo diferencial e integral, estatística e álgebra linear, para mim, são bem legais de ter.

Claro, não é algo que você vai usar no dia-a-dia, mas se um dia aparecer o problema, você tem alguma noção por onde partir e vai fazer como qualquer problema de código: pesquisar na internet.

2
1

Além dos "professores" que passam esses tipos de "estudo", as pessoas estão começando a ir atrás de decorar e não aprender, muita gente pula a teoria, sendo que é uma das partes que mais te revela o poder e a utilização de cada ferramenta.

3

Eu já disse o que penso sobre matemática e programação aqui e aqui.

Mas pra resumir:

Quando dizemos "matemática", muita gente associa com aquilo que vemos na escola: decorar fórmulas e sair fazendo contas sem entender pra que serve. Na minha opinião é essa forma equivocada de ensino que fez com que gerações inteiras odiassem matemática, e achem até hoje que é inútil.

Mas matemática é algo que vai muito além. Entre outras coisas, ela é uma ferramenta para resolver problemas através da criação de abstrações, e no fundo é isso que fazemos o tempo todo ao programar.

Para criar um programa qualquer, pegamos entidades do mundo real e tentamos encaixar nas estruturas e mecanismos que as linguagens nos dão (arrays, classes, funções, etc). Traduzimos algo concreto para uma representação abstrata, e a matemática te dá a capacidade de fazer isso. O problema é que esse ganho é indireto e geralmente demora para ser percebido (em parte, é um dos motivos de muita gente achar que não precisa). Tem mais detalhes sobre isso nos links que indiquei no começo.


Enfim, alguém pode ser bom naquilo que a escola ensinou (decorar fórmulas e fazer contas), mas isso não necessariamente a tornará boa em programação. Porque pra isso precisa da outra parte que geralmente a escola não ensina direito.

3

Ser bom em matemática significa ser bom em perceber padrões. Por mais que possa estudar e praticar (e de fato melhorar, muito) isso é essencialmente uma habilidade nata.

Muita gente acha que matematica tem haver com fazer contas ou computar qualquer coisa, mas não! A matematica é ciencia que estuda os padroes - e atraves deles, todo o universo!

1

Acrescentaria mais

Existem diversas áreas da matemática, não apenas a percepção de padrões:

Percepção espacial - localização, geometria
Percepção física - força, empuxo, velocidade
Percepção numérica - calculos, frações, porcentagens
Percepção algorítmica - como ir de A a B

Dá pra estudar todas essas áreas (e provavelmente outras que esqueci) a partir de experiências, treino, estudo, leitura, prática...

Também não diria que a matemática é apenas relacionada a padrões, mas sim, que o estudo de padrões é essencial em toda matemática.

2

A matemática é muito ampla, tem muitos aspectos e funções diferentes. Por exemplo, na história do seu zé podemos dizer com toda a certeza que ele é ótimo em Aritmética, mas o mesmo não poderia ser dito para Álgebra ou cálculo. Frequentemente na escola e no dia a dia temos contato com a aritmética, com propriedades básicas das operações e os conjuntos numéricos mais simples, contudo, isso está muito longe de "ser bom" em matemática.

A maioria dos programadores jamais terá contato com o que realmente é matemática, pois normalmente apenas pensamos em suas aplicações. A matemática no geral é muito formal, lógica e precisa, sendo necessário muita habilidade em pensar de forma abstrata, capacidade de argumentação, fundamentações lógicas e criatividade. Como programador você utiliza os resultados do cálculo, como matemático você deve entender o porquê eles funcionam, entende a diferença?

Pensar apenas na aplicação é diminuir toda a ciência envolvida na matemática, que é o que faz ela ser relevante e importante. Resultados que séculos atrás pareciam inúteis, como os que se referem a números primos, hoje são os fundamentos da segurança da informação. Muito conhecimento é formado dessa forma, a partir de coisas aparentemente inúteis, mas que se colocadas em seu devido contexto se tornam valiosas.

Um exemplo que sempre gosto de citar é o algoritmo de Euclides para encontrar MMC, como programador você está preocupado em implementar e testar, como matemático você está preocupado em provar que funciona. São duas abordagens que funcionam, mas a abordagem matemática é mais ampla e definitiva.

1

Acredito que, neste caso, entre a diferença entre saber teoricamente e saber aplicar matemática.

Um programador não precisa "zerar" a matemática para ser um excelente programador, mas precisa, com ctz, saber usar matemática para resolver problemas de programação.

Se for possivel ir além, sempre melhor. Comhecimento nunca é demais. :)

1

Cara, achei bem interessante seu ponto de vista. Já fui muito teórico em algumas coisas (principalmente relacionado a estudos) e hoje em dia tenho me esforçado pra partir mais para o lado prático.

Tenho feito um esforço para me ater apenas áquilo que vou utilizar (pelo menos no primeiro momento).

Tive uma experiência em um curso recentemente onde o professor estava entrando em pontos avançados do JS sendo que eu mal dominava o básico em outros aspectos, e aí chegou no ponto que pensei: "cara, mas eu não vou usar isso tão cedo, então por que me esforçar agora se é algo que não vou usar agora?"

Não me interprete mal, não sou contra aprender, só quero dizer que concordo com seu ponto de vista quando você diz que temos que aprender o necessário pra atingir nossos objetivos.

Espero ter agregado de alguma forma, vlw!

1
2

Realmente Bruno, não faz mal nenhum ir além e eu particularmente gosto, mas falando de mim, meu problema muitas vezes foi mergulhar tanto na teoria que esquecia da prática. Atualmente, num primeiro momento, tenho focado em aprender o necessário pra execução, e depois vou aprofundando no decorrer da jornada.

1

se seu código é sujo, se você têm dificuldades para abstrair problemas do mundo real, seu problema não é Angular, nem React: é matemática.

O desafio aqui não é apenas na matemática. Muitos algoritmos numéricos desenvolvidos pela academia são tão complexos por debito técnico que parecem criptografados por natureza. Um exemplo notável é o código utilizado no simulador de Covid do Imperial College.

Ser proficiente em matemática não garante automaticamente habilidades em programação.

1

Também existe a questão de que código otimizado é código sujo. Por exemplo, a biblioteca Lapack é a mais importante para a computação científica e é escrita totalmente em Fortran 77 e Fortran 90. Ler o código da Lapack é extremamente massante e uma tarefa quase impossível, contudo, ela já é tão otimizada e utilizada que refatorá-la seria um crime. Todos utilizam da Lapack, mas ninguém precisa se preocupar com o código.

1
1

Eu sempre fui péssimo em matemática na escola. Mas não porque eu era burro mas sim porque eu era vadio. Aluno da última mesa que ficava jogando truco no meio da aula, ou matava aula pra jogar bola.

Me envergonho e não me orgulho disso e fui sentir falta das aulas de matemática da sétima série quando comecei aprender a programar, por não ter exercitado meu raciocínio lógico na época da escola.

Mas nada que horas de estudo e comprometimento não resolvam isso.

Salvo exceção que você tenha algum problema cognitivo, qualquer pessoa é capaz de aprender o que quiser, desde que tenha dedicação e tenha um porquê forte para aprender.

Então, nunca é tarde pra correr atrás e estudar matemática. Comecei a estudar com foco a matemática já como um programador profissional( aquele que recebe para escrever código e não quer dizer que eu já era um Profissional ) mas me tornei um profissional melhor depois de corrigir déficits que eu tinha na matemática.

O que eu quero dizer com isso. Estude.

1

Sempre fui bom em matemática e minha memória sempre foi muito boa. E isso me deixa com um pé bem atrás para exaltar essas qualidades.

Quando a pessoa é boa em alguma coisa, ela tende a cair no viés de achar que todo mundo tem que ser bom no que ela é bom. Caso contrário a pessoa é "burra" ou "incompetente".

É um viés que te prejudica bastante pois te cega e te priva de desenvolver outras qualidades que também são úteis e também fazem muita diferença no que você faz.

Desenvolvimento de softwares exige uma grande variedade de habilidades, matemática é só uma delas.

Por mais que eu seja bom em matemática eu jamais vou dizer que os outros precisam ser também. Pois tenho capacidade suficiente para entender que há outras qualidades que também são importantes na área e que podem fazer alguém ser bom no que faz mesmo não sendo bom em matemática.

Para mim a pessoa precisa ser muita boa no que ela faz, seja lá o que for. É a única coisa que eu "cobro" das pessoas.

1

Um bom ponto: desenvolver software exige comhecimento em várias vertentes. Aqui no grupo, ja falamos sobre português, saber se expressar... O @Maniero fala bastante sobre filosofia... Acho que quão mais holística é a sua visão, mais criativo você se torna.

1

Tenho um pensamento um pouco diferente sobre o seu Zé, acredito que pela descrição que foi dada, seu Zé não incorpora a essência da Matemática para sí, apenas faz uso de processos mecânicos da Matemática para resolver problemas em seu trabalho.

Acredito que as pessoas podem ser boas programadoras sem necessariamente terem ido bem em matemática na escola, e também tenno fé que pessoas que são boas programadoras tem um ótimo potencial para serem boas em matemática se as mesmas se dedicarem aos estudos.

Meu ponto é, Matemática e Programação são independentes uma da outra, porém, ambas dependem da lógica e do pensamento para realizar a criação de processos mecânicos que resolvem problemas.

Processos mecânicos não dependem de lógica e pensamento, pois são apenas processos, e se fossem tão importantes seu Zé não seria comparado a uma calculadora e sim a um Matemático, a um Físico ou algum Gênio que já tenha existido ou que exista.

1

Eu tenho discalculia e a parte mais difícil no meu dia é justamente perceber padrões. A forma como eu chego na solução de problemas é muito "variável" e não existe constância (muitas vezes é tentativa e erro), porque eu enxergo pouco, ou quase nenhum padrão nas coisas. Muita gente diz que "monta a lógica na cabeça" na hora de programar, eu não faço isso, porquê se tentar, em menos de 3 segundos eu esqueço toda a informação, minha memória de trabalho não funciona bem. É por isso que tenho o costume de fazer tudo "na hora", deu na telha eu faço. Não é uma boa prática, mas é como eu aprendi a contornar minha dificuldade.

A pior parte para mim que estou procurando emprego hoje, é empresas que fazem testes para você analisar o padrões, eu não me dou bem com esses testes, não consigo enxergar padrões a não ser que estejam muito óbvios, e o recrutador em 100% dos casos não esteve interessado no fato de eu ter um transtorno de aprendizado que afeta exatamente essa habilidade. Fora quando não há questões matemáticas de interpretação que o candidato tem de resolver em 5 minutos. Eu preciso de no mínimo 20 minutos para fazer uma conta de divisão sem calculadora, não estou brincando.

Mas ainda sim, aprendi a programar com esse transtorno do aprendizado que muitas vezes passa desconhecido pelos pais e professores.

1

Na real, eu depois de transitar de ciência humanas, exatas e mexer com a computacional. Cheguei a conclusão que a América do Sul foi ensinada a usar o que a elite mostra ser bom.

Pois estudando o padrão lógico-matemático de grupos indigénas, vi que são materialistas e contam com as mãos, por exemplo: 0 é putimaã (mão vazia), Yepé (1), Munkui (2), mussapiri (3), inrundí (4), cada um dizendo como tocar o erquivalente a quantidade de coisas, mas o número 5 (Yepepu ou só pu) quer dizer apenas uma mão. Então para contar onze, eles falam duas mão e um (munkui-pu yepé). Logo, podemos ver que, querendo ou não, desenvolveram a base cinco como contagem, algo similar ocorreu com africanos.

E esse sistema de base cinco é usado hoje em nosso sistema monetário, pois se formos contar, tudo começa com a moeda de cinco centavos, eu preciso de 3 moedas de cinco para ter quinze centavos. Mas infelizmente, não é assim que aprendemos matemática, não é através de padrões linguistíscos ou matemáticos seguindo a nossa realidade, nós aprendemos apenas para decorar, e só ousamos mudar a forma de pensar quando algúem de fora mostra uma maneira diferente de pensar, e aí a elite vai vangloriar.

Nessa questão do vangloreio da elite, posso exemplicar com o PIX. Esse sistema de pagamento foi inspirado no sistema de pagamento de SMS do continente africano, e por isso, o EUA nunca quis criar um, pois, foi só o Brasil (quintal dos estadunidenses) se atualizar e criar um versão mais segura do sisitema africano, que o USA investiu em pesquisadores para criar sistemas de pagamentos instantaneos como o do Brasil e da África, porém, foi bem tarde, pois houve um baita investimento em lojas que através de sistemas inteligentes e visão computacional fariam o pagamento sozinho, e no final, perceberam que deram um pulo maior que a perna.