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

Estude como um Jovem Milionario Europeu!: Uma explicação ciêntifica/psicologica para a sua dificuldade em programação.

Um psicologo russo chamado Vigostki fez na area da psicologia, o que os físicos sonham em fazer com a física. Praticamente ele criou um campo unificado na psicologia, ou seja, ele conseguiu juntar conceitos complexos e tratados separadamente em algo unico.

Vigotski nasceu no meio da União Sovietica(URSS) e foi influênciado pelas ideias comunistas, mas não o comunismo politico, o comunismo cientifico filosofico. O comunismo é antes de tudo, uma grande obra cientifica muito interessante. Basicamente, comunismo é uma segunda visão do Darwnismo, porém sociologica. Vigotski juntou isso para mostrar tanto no aspecto biologico quanto sociologico, tudo muda, inclusive a relação do homem com outros homens, e do homem com o mundo.

A genialidade da obra de Vigotski está no fato de abraçar e conseguir juntar de forma clara e precisa muitas areas da ciencia psicologica e cognitiva. É uma das vertentes psicologicas mais novas e modernas, e embora eu esteja tentando resumir, ela é uma das mais complexas. Mas guarde o fato, é importante: Tudo passa por uma transformação, tudo evolui.

Vigotski trabalhava com crianças e ele focou seu trabalho na anatomia do aprendizado. A sua primeira descoberta foi a fala. O homem deixou de ser um macaco quando começou a usar "signos", e signos não é o de Áries, signos são recursos psicologicos que usamos o tempo todo! Por exemplo, o Assembly foi uma criação de simbolos para representar o código binário/hexadecimal usado para escrever os programas no processador. Criamos simbolos para tudo, e tudo é simbolo. Inclusive esse texto é um uso softiscado e complexo de simbolos para armazenar meu pensamento e transmitir a outros o que penso... deu pra sacar, certo?

Em um experimento com grupos de crianças, foi pedido para que o grupo A realizasse uma tarefa, apenas isso. O grupo B, realizava a mesma tarefa, porém em silencio, eles não podia falar. O grupo B apresentou grande dificuldade em realizar a tarefa e de fato na média não conseguiram.

Vigostki percebeu o caracter da fala, fala é pensamento, pensamento é fala, fala é signo, signo é fala que é pensamento. Entendeu? kkkk eu também não. O pensamento é um complexo uso de simbolos/signos para representar o mundo exterior e o processamento dessas informações também é feito e expresso por signos. Você não pensa enquanto fala porquê quando fala está transmitindo de forma direta seu pensamento, por isso falamos bizarrices em momentos errados rsrs.

Aqui entra o caracter Biologico e Comunista. Simplesmente algumas pessoas apresentam uma aptidão para certos assuntos e outras não. Algumas pessoas tem uma habilidade sobre humana com numéros enquanto outros tem dificuldade em resolver problemas relativamente mais simples. Vigostki criou um negocio que foi traduzido para nós como Janelas de Aprendizado. Burrice não é conseguir saber/usar um assunto/tema, burrice é não querer aprende-lo. Guarde essa frase anterior também.

O caracter comunista? Bom, comunistas gostam de revolução(sou quase um humorista)... Não não, brincadeiras a parte, é isso mesmo. Tudo passa por evolução e revolução, certo? Logo, isso acontece com os processos internos do cerebro. Na verdade essa é uma parte muito complexa do trabalho do Vigostki, ele vai trabalhar aspectos biologicos, darwnistas, comunistas e neurologicos.

Até agora tentei trazer uma base para entendermos o funcionamento do pensamento do Vigotski, agora vamos de fato para a parte que vai nos ajudar a aprender qualquer coisa, inclusive qualquer linguagem de programação.

JANELAS DE APRENDIZADO E POTENCIAL: POTENCIAL E POTENCIAL REAL.

Dentro das Janelas de aprendizado, temos os potenciais. O potencial é aquilo que o individuo pode aprender, e o potencial real é aquilo que ele já sabe.

Se você conhece C, tem uma noção mais "fixa e focada" do funcionamento do PC/Processador. Então seu potencial real é C, mas seu potencial pode ser Assembly.

Então você teve relativa facilidade em aprender Assembly, poi estava em seu potencial.
Mas se você programa em Javascript, seu potencial real é o proprio Javascript. Seu potencial pode ser Typescript, mas Assembly é algo distante do seu habitual, então Assembly será mais dificil de entender e aprender.

Perceba que o ambiente é importante, um dev JS não precisa se preocupar com memoria, então ele não usa controle de memoria, logo ele não precisa necessariamente dessa habilidade, está fora do seu ambiente, e se ele não exercita, está fora do potencial.

Potencial tem uma relação importante com ambiente, só evoluimos com estimulos do ambiente, certo? Darwinismo puro e simples aqui. Seu potencial é explorado e estimulado pelo ambiente. Geralmente isso é expressado em uma frase muito louca: A Ontogenia recapitula a Filogenia. Seu ambiente muda sua composição biologica, ou seja, você se adapta, Ontogenia refere-se ao individuo e não uma raça, logo, um individuo pode modificar suas capacidades evolutivas em determinado ambiente, mas ele não evolui de fato, apenas aprendeu se adaptar. Um papagaio aprende falar como humanos, papagaios não tem fala, nem mesmo podem criar um idioma, mas dentro de uma casa, com humanos, ele aprende um pouco. Seus filhos não nascem falando, mas podem aprender como ele a imitar a voz humana. Sua especie não evolui para falar, mas o individuo pode aprender frases.

Sua genetica pode ser horrivel em relação a numeros(sim, existem pesquisas que afirmam ser um traço genetico habilidades matématicas) mas não impede que você aprenda algebra linear. Simplesmente depende do seu estimulo, lembre-se que Einsten não foi o mais brilhante de sua turma, mas por fatos e estimulos, aprendeu a calcular muito bem. Tenha em mente que Vigotski trabalhava e pesquisava crianças, então sua teoria e prática é muito focada no surgimento e desenvolvimento da aprendizagem em crianças, mas não impede que adultos usem suas idéias, outra coisa é que por trabalhar com crianças, Janelas de aprendizagem são usadas originalmente para traçar periodo de tempos onde crianças estão abertas a aprender certas coisas, por exemplo: melhor época para aprender outras linguas é quando o cerebro está aprendendo uma lingua, ou seja, uma criança aprenderá inglês melhor quando também estiver aprendendo português. Seu cerebro e seu potencial de linguas tem o auge de suas capacidades na infancia, entre 3 e 8 anos. Mas você ignorar o caracter tempo/faixa etária, funcionará com qualquer um.

 COMO USAR TUDO ISSO A SEU FAVOR: JANELAS DE APRENDIZAGEM NA PRÁTICA.

Até aqui temos uma visão superficial das teorias de Vigotski, acredito ser o suficiente para entendermos o funcionamento e porquê funciona as Janelas de Aprendizagem. Agora vamos ver porquê não aprendemos programação!

Linguagens de programação tem, cada uma, varias diferenças de sintaxe ou de fluxo, ou algo do tipo, mas quase todas funcionam de forma parecida. Então porquê você aprende Python mas Java é um inferno?
Imagine dois devs Jr, A(Python), B(Java), agora vamos analisar as duas e aplicar em uma janela de aprendizado:

  • Python: Python é simples e curta, orientada a objetos, facil de entender e desenvolver, tem quase tudo que outras linguagens tem.
  • Java: É simples também, orientada a objetos, e é facil de aprender.

ONDE ESTÁ O PROBLEMA?? COMO ASSIM JAVA É FACIL COMO PYTHON???!!

O problema do Java não é o Java, é o dev! Veja, Java é verboso, enquanto python é curta. Um dos problemas da nossa educação atual é a má formação das pessoas, temos muitos individuos formados com dificuldade em interpretação de texto.

Quando temos uma linguagem verbosa, com comandos maiores, eliminamos individuos com essas dificuldades, eles terão mais dificuldade em reter e lembrar dos comandos. Por outro lado, pessoas que apresentam essas dificuldades de leitura/escrita tem mais afinidade com numeros, pois são mais fáceis de interpretar, logo uma linguagem curta como Python torna o processo de leitura e escrita mais facil.

Aplicando: Embora as duas sejam orientadas a objetos, Python parece mais facil porque o potencial real do dev A é interpretar numeros e instruções mais curtas. O dev B tem mais facilidade em reter informações mais longas. Os dois vão aplicar a mesma lógica, mas o dev A não vai desempenhar um bom papel com Java.

A solução:
Para Vigostki e as escolas que aplicam as teorias dele, não tem solução e procurar solução é uma perca de tempo. Se o dev A tem afinidade com Python, tudo bem, é melhor que ele aprenda C, Lua, Julia... As teorias de Vigotski são uma critica ao modelo de ensino atual, onde somos forçados a aprender coisas que não estamos abertos a aprender, e isso cria uma barreira de aprendizado ao invés de estimulos. Nesse caso, o potencial do dev A pode ser C, que embora possa até ser mais dificil que Java, tem instruções mais curtas, permitindo uma melhor aplicação da lógica pelo dev A.

Observe que isso é um exemplo superficial, e o contexto muitas vezes é muito mais complexo. Outro fator é que nosso modelo de aprendizado é voltado para o mercado de trabalho, enquanto Vigotski desenvolveu suas idéias em um ambiente socialista. O foco para Vigotski é formar individuos especialistas, plenos em suas habilidades, e não individuos generalistas.

Outro coisa, o modelo de ensino de Vigotski é mais conhecido e aplicado na Europa, geralmente em escolas particulares com individuos com situações "especiais"(muito ricos!), na verdade, escolas como essas nem tem professores! Elas usam pequenas turmas autosificientes, que ditam o proprio ritmo e os próprios assuntos a estudar, contam apenas com um orientador. Na média, escolas com esse modelo formam mais individuos bem sucedidos intelectualmente em relação ao modelo tradicional. Isso torna o ensino nesse modelo pouco aplicado fora da Europa/EUA, poís exige que o estudante tenha poucas "exigencias" fora da escola.

Como você vai ignorar a matematica e focar totalmente no estudo de linguas se embora você seja MUITO bom nisso, ainda vai precisar trabalhar de caixa no supermecado da esquina quando acabar a aula? Entendeu?

MEU CASO COMO EXEMPLO: COMO USEI ISSO PARA APRENDER C, C++, JAVA AO MESMO TEMPO.

contexto:
Minha primeira linguagem foi Python, era até bom nisso, mas nunca consegui usar OOP com Python, sim, simplesmente nunca aprendi, e estudava, estudava de novo, e de novo...

Então entrei no curso de Psicologia em 2016 e parei de estudar programação. Voltei a estudar programação porquê sempre gostei disso. Me matriculei num curso de Redes EAD e então aconteceu: Comecei a estudar lógica, ignorei completamente portugol e essas baboseiras(pra mim rsrs), mas teve uma coisa que me chamou atenção, as tabelas AND, E, XOR... eu nunca tinha visto isso como autodidata. Comecei a entender e me interessar pelo básico, aprendi o tal binário, converter para hexadecimal, converter para octal, e fui entendendo como as coisas funcionavam.

Então aprendi C no modulo 2 de lógica. Sempre achei C interessante mais nunca tentei aprender C porquê nem sabia usar OOP com Python, quem dirá aprender C, certo? haha

Então descobri que gosto muito de C, mas preciso trabalhar como programador(em busca da primeira vaga) e então comecei a estudar JAVA, e logo vi que aprendia Java, mas esquecia 1 dia depois... então descobri o C++, que parecia com C, eu li por volta de 3 horinhas sobre C++ e aprendi tudo que li! Fazia bastante sentido e eu estava gostando, entendi OOP pela primeira vez, o que era um contrutor, metodos, etc. Hoje eu também aprendi JAVA, e estudo C++ com JAVA. Mas porquê toda essa confusão aconteceu?

explicação:
Eu usava Python de modo procedural, foi tudo o que consegui aprender na epoca, ou seja, escrever e entender funções era o meu potencial real. Quando vi C, era muito parecido com o que eu fazia em python, logo, C era meu potencial. Quando aprendi a usar C, parti pro Java, que era diferente do que eu estava acostumado, logo, OOP não fazia parte do meu ambiente, não era como eu estava acostumado a pensar. Por isso eu esquecia tudo que aprendia, não encaixava direito.

C++ por outro lado era parecido com C, então C++ passou a ser meu potencial, pois C era meu potencial real. Coincidentemente ao ler sobre C++ eu entendi porquê era muito similar ao que estava acostumado a ver. Eu nunca tinha entendido que um metodo é só uma função! Perceba como meu potencial e meu potencial real foi mudando enquanto eu também mudava e mudava meu foco.

Hoje eu estudo de forma cruzada: Estudo Java, faço os exercicios em C++ e depois reescrevo-os em JAVA. Eu não uso ponteiros, e se for necessario usar ponteiros, faço o exercicio em Java mesmo. Faço exercicios simples mas com matematica, pois sou péssimo em matematica, então busco exercicios que envolvam calculos para também ter que estudar calculos.

Para projetos pessoais como idéias, pequenos scripts, eu uso C(Eu penso melhor dessa forma).

Também estudo, mas de forma mais espaçada sobre Assembly e Cobol, gosto muito de linguagens antigas e acho bem interessantes. Quando adolescente aprendi eletronica com meu tio, então ler sobre processadores e controladores tem feito sentido pra mim, por isso me interessei por assembly nos ultimos meses.

MINHAS DICAS A VOCÊ:
  • Estude o básico: Existe o básico, e o básico do básico. No nosso caso o básico do básico as vezes é mais dificil! kkk Estudar binário e conversão é desnecessario se você nao vai programar em código de maquina. Mas É MUITO IMPORTANTE entender o básico de um computador, de um compilador, das linguagens em si. Se você aprende o básico como a Lógica, Algoritmos, seu potencial será muito mais amplo, e você aprenderá QUALQUER linguagem de programação.

  • Estude com relação ao seu potencial real: Identifique o que você já sabe, o que você tem mais facilidade em aprender? Qual linguagem entra na sua cabeça e qual é indecifravel? Você é bom com CSS mas SQL não? Então melhor ser Frontend, certo? Parece obvio, mas somos ensinados a focar no que somos ruins, e não no que somos realmente bons.

  • Aprenda a revolucionar: Um dos perigos do metodo é estagnar, é possivel que um individuo chegue ao seu potencial e não consiga passar dele, existe um termo pra isso mas não lembro agora. Eu aprendi equação do primeiro Grau, mas tenho dificuldade em fazer calculo de subtração(isso é real), ou seja, nem tudo é linear. Se você estagnou, pode ser que você não consiga mais evoluir, mas pode ser que você ficou confortavel nesse estágio e não esteja buscando, ou não saiba buscar, o proximo passo que seria o seu proximo potencial. Mas tecnicamente, sempre existirá um proximo potencial em relação ao seu potencial real.

  • Cuidado com seu ambiente: Você não é um macaco pré-historico precisando evoluir. Mas você é um papagaio morando com pessoas barulhentas. Temos muitas pessoas criando barulho na internet, vendedores, enganadores, falsários, plagiadores, etc. Aprenda a buscar as informações corretas nos lugares corretos. Você não é um GPT reproduzindo o que viu, aprenda a pensar e repensar. Por exemplo: Estudando sobre kernels, eu vi que precisava escrever o Bootload em Assembly porquê C precisava da pilha, logo, pensei "então um bootload em C é impossivel! como vou iniciar o bootload C se ainda não foi iniciado a pilha?? no minimo precisa do assembly para isso.". Certa vez perguntei a um dev com mais experiencia em C e ele disse que NÃO! Um bootload em C é apenas diferente, mas tudo é binário, então Assembly ou C não faz diferença. Eu assumi uma informação sem questionar o básico sobre ela e guardei como verdade absoluta. Tenha elasticidade para aprender tudo, reaprender tudo.

  • É muito fácil cair na ilusão: Eu aprendi C, e entendi sobre ponteiros, pensei "vou aprender coisas mais complexas, tá facil ser programador..." eu sou muito curioso, então fui escrever um pequeno kernel. Tudo perfeito! QEMU é maravilhoso, eu criei um bootload em assembly que iniciava um "kernel"(aprendi na internet kkkk) e então tomei a maior surra de todas: Pra que o sistema seja considerado um novo sistema, ele não pode ter as libs do sistema onde está sendo desenvolvido, então vamos criar uma função pra exibir uma mensagem na tela, certo? Como que faz um printf()????? Isso mesmo! VOCÊ SABE IMPLEMENTAR UMA FUNÇÃO PRINT NA SUA LINGUAGEM SEM USAR LIBS DA LINGUAGEM? COMO VOCÊ DEV JS, FARIA UMA FUNÇÃO PRINT SEM USAR CONSOLE.LOG OU DOCUMENT.WRITE? até hoje não aprendi fazer isso, e como aprendizado eu NUNCA irei olhar o printf() original do C, esse será meu parametro rsrs vou me considerar um programador quando conseguir fazer isso(sim, eu sei que tenho que usar o buffer vga ou algo assim).

Perceba que mesmo sabendo tudo isso, eu descubri tudo por acaso, na tentativa e erro. Só recentemente resolvi organizar meu conhecimento de psicologia para me ajudar com programação.

Seja inteligente e pegue o que for util para você, monte sua propria forma de estudar ou pesquise mais sobre esse modelo. Estude como um comunista, ou como um jovem ricaço europeu. Boa sorte!


Por favor, peço que não crie comentarios discutindo politica, pois uso o comunismo na explicação porquê é parte importante na teoria, e não para apoiar uma ideologia ou para criar discussão sobre isso.

Eu sou um dev junior buscando meu primeiro emprego, tenho visto muitos posts sobre aprender programação, como aprender, etc. Resolvi escrever esse post para tentar ajudar outros devs, escrevi de forma corrida e sem pausa, da forma como veio a mente, tem erros gramaticais e minhas experiencias pessoais como autodidata e depois como estudante de TI.

Se você tem outras dicas, compartilhe nos comentarios.

Carregando publicação patrocinada...
2

Acho que entendi o conceito de "potencial" apresentado no post.
Mas eu penso de outra forma, o potencial é mais amplo, não deveria ser aplicado para os "tipos de linguagem de programação" e sim para áreas da TI.
Existem pessoas com o "potêncial" para Segurança, Desenvolvimento de Software, Administração, etc.. (e a programação é uma habilidade necessária para certas áreas da computação)
Um programador deve saber criar código para absolutamente qualquer coisa (não em qualquer linguagem), se não ele não sabe de fato programar.
Existe sim uma barreira que dificulta o programador A, acostumado com a escrita da linguagem Y, de ler, entender ou escrever código na linguagem X, mas não é por isso que ele deve ser incapaz de usar a linguagem X.

E como podemos alcançar o nível "Programador Elite"?
Muitos diriam que é impossível, mas um "Programador nível Elite" não é o programador perfeito, e sim o ideal, o que sabe lidar com a máquina, não é necessário só estudar o básico para se tornar um "Programador nível Elite" e sim entender o funcionamento de um computador.

Então, o "potêncial" mostrado no post se trata de dificuldades que todos os programadores tem, acredito que biológicas (não entendo muito sobre psicologia kkkk), mas elas não impedem nenhum programador de ter o domínio da máquina.

1

Mas eu penso de outra forma, o potencial é mais amplo, não deveria ser aplicado para os "tipos de linguagem de programação" e sim para áreas da TI.

Muito válido, e na verdade, a noção de potencial pode ser aplicado a qualquer coisa ou tamanho. Por exemplo, na segurança da informação existem muitos campos a estudar: Redes, Programas, Ataques e Defesas, Firewals, Protocolos, Virús, Sistemas Linux, Windows, Etc. O estudante dessa area poderia aprender todas, ou ser bom em apenas uma e ter muita dificuldade nas outras, mas como eu disse, o negocio é mais complexo.

Eu usei linguagens de programação como exemplo porquê muita gente tem voltado a postar sobre aprendizado, qual linguagem escolher/aprender, etc. Eu quis ajudar essas pessoas, mas poderia ser qualquer grupo de pessoas, qualquer atividade, entende?

Realmente eu não tinha pensado nisso, faz muito sentido levar para areas de TI também, mas como já é um assunto complexo, acho que deixaria tudo mais confuso rsrsrs

Obrigado por contribuir, LeoPato.

1

Para Vigotsky uma zona de potencial é qualquer zona que esteja próxima o suficiente daquilo que você já sabe (zona real), mas que ainda não sabe.
Nesse caso, é possível aplicar para absolutamente qualquer coisas.
Você domina matemática básica. Não adianta querer aprender algebra linear, isso está muito longe de matemática básica. Você precisa aprender algo que esteja dentro da zona de potencial, talvez aprender Cálculo 1 seja essa zona.
Dentro da teoria do Vigotsky o que importa é sempre o aluno trabalhar dentro da zona de desenvolvimento proximal (aquilo que está entre o real e o potencial) afim de transformar o potencial em algo real.
É como se fosse uma escadinha que nós vamos subindo.

1

O texto é extremamente bom, por isso votei o que pude. Tem vários pontos muito bons, espero que boa parte perceba todas elas, porque algumas são mais sutis.

Só quero fazer algumas ressalvas.

OOP não é ́ fácil. Só acha isso quem aprende errado. E o texto deixa claro isso para quem sabe interpretar texto, para quem lê com atenção e não fica em cima apenas de informação rasa.

Embora eu concorde com a premissa, é importante entender que se a pessoa não consegue aprender certas coisas, ela pode programar, pode até trabalhar na área, mas tem uma possibilidade razoável dela não ter vocação para isso. Todo mundo tem o direito de fazer o que quer, e procurar o mais fácil para ela é um caminho, mas ele não entregará o melhor resultado. Novamente o texto fala que você deve se desafiar, apesar de que o maior potencial dela fará ela aproveitar melhor.

Em muitos casos não é a ferramenta que está errada na vida da pessoa, é a escolha geral, é ela se forçar fazer algo que está na moda. Ela seria mais feliz e se frustraria menos fazendo o que é importante para ela.

É um fato que a pessoa quer algo mais estimulante, e para isso deve ser mais fácil para a pessoa, entregar o que a pessoa quer. Mas o que ela quer pode não ser o que o mercado quer. Pelo menos não pagando bem e com vaga sobrando. É preciso ter isso em mente. Você escolhe seu caminho e paga o preço. Eu costumo dizer que deve procurar o que te deixa feliz em primeiro lugar, mas é preciso ter consciência das consequências.

Reforço a parte que muitas vezes a pessoa não quer aprender algo. Não chamaria de burrice como foi citado. Até pode ser em algum caso, mas pode ser só inadequação.

Sorte de quem acha algo adequado para ela que seja muito recompensador. Eu queria ter algo assim, talvez estivesse milionário. Mas escolhi o que me dava conforto pessoal.

Ninguém deve se sentir mal por não conseguir fazer certas coisas. Imagine todo mundo querendo ser o Elon Musk (nem sei se o exemplo é bom, pra alguns pode ser bom não ser igual :)). Faça o seu melhor e seja você. Mas naõ deixe de se comprometer com o que faz. Se não consegue ter esse compromisso, está fazendo a coisa errada.

Me lembro de um aluno meu que queria ser programador. Eu falava que o potencial dele era com infra. Ele insistiu. Nunca se deu muito bem, nunca se satisfez. Veja bem, ele programava melhor que boa parte das pessoas. Mas ele tinha potencial para outra coisa. Quando assumiu isso de vez, se desenvolveu, evoluiu, e hoje trabalha em projeto high profile com infra. E faz questão de me agradecer.

Um amigo meu de longa queria fazer teatro. Muitos diziam que ele ia morrer de fome. Mas ele queria mesmo. Se e resolveu que seria bom nisso. Foram anos fazendo o básico, dignamente. Agora algumas pessoas estão vendo o trabalho dele todos os dias na Globo.

Não se esqueça que depois de aprender vai trabalhar em uma área exigente e de alta pressão.

Eu sei que algumas pessoas podem ficar bravas quando digo isso, mas não muda o fato. A pessoa pode ignorar, aproveitar ou ter vontade de me atacar, o fato permanece.

Espero ter ajudado. Aproveita quem quer.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1

Em muitos casos não é a ferramenta que está errada na vida da pessoa, é a escolha geral, é ela se forçar fazer algo que está na moda. Ela seria mais feliz e se frustraria menos fazendo o que é importante para ela.

É isso mesmo! Meu objetivo com o texto era mostrar isso, e conduzir meus colegas jr a tentarem encontrar o quê é mais facil para eles aprenderem. Acho que não consegui deixar tão claro assim, mas esse é um ponto importante que eu devia ter colocado e você trouxe "se frustraria menos fazendo o que é importante para ela.".

Acredito que nos frustramos porquê temos muita pressa em ganhar o prometido salário de 10k em 2 meses, aprender as linguagens X e Y + 200 frameworks e 3 linguas. Quando não damos conta, nos excluimos e ficamos deprimidos por se achar inferiores ou fora de um grupo que queremos fazer parte. O mercado é realmente mau e vai mastigar todos nós, mas muitas vezes nós mesmos é que criamos a angustia e o mal estar sem nem ter entrado no mercado ainda.

Obrigado por contribuir, maniero.

1

Esse seu complemento é muito importante. Eu acho que já tinha dado para entender, mas sempre é bom ficar mais explícito para algumas pessoas.

Eu sempre falo que o erro é a atitude. Não é se a pessoa sabe isso ou aquilo. Por isso é difícil, não tem fórmula mágica, não tem algo que você estuda e tudo se resolve. QUando eu tenho a atitude certa eu me dou bem, quando não tenho eu me dou mal. Mudar a atitude é muito difícil.

Somos todos humanos e tentamos fazer nosso melhor. Para isso precisamos entender como somos. Não tem prognóstico certo com diagnóstico errado.

1

Como e onde aprender OO do jeito certo?
O pouco que sei de OO é que não tem padronização alguma!
kkkkk

Cada linguagem implementa o que quer e como quer, e usam sintaxes muito diferentes uma da outra.

A propria definição de OO não existe de verdade kkkk
Isso era um assunto controverso nos anos 80.

Em 87, Peter Wegner, publicou um artigo na OOPSLA que resolveu a questão (pelo menos entre aqueles que concordam com o Wegner)
Para uma linguagem ser Orientada a Objetos ela precisa segundo Wegner

ser baseada em objetos, ou seja, deve ser fácil programar objetos que encapsulam dados e operações;

ser baseadas em classes, ou seja, cada objeto pertence a (ou é fabricado a partir de) uma classe; e +
permitir herança, ou seja, deve ser fácil agrupar classes em hierarquias de subclasses e superclasses.

Outros estudiosos (chatos?) acrescentam outros itens à lista: (eu não concordo - Wegner)
enlace dinâmico, tardio (late binding)

Essa deve ser a definição mais usada que conheço.

Mas sabemos que existem linguagens oo que não se encaixam na definição deste home!

Self é um exemplo!

Eu realmente quero aprender OO do jeito certo.
Sempre vejo você falando disso, mas não acho material.

Passe os links pro amiguinho aqui
rsrs

1

Isso é um enorme problema. O fato de ter escolas diferentes ajuda a fazer ser difícil, inclusive porque existem versões híbridas. E muito material foi feito porque quem aprendeu errado.

Vai fazer 35 anos que eu comecei com OOP. Passei por todas as fases, e só mais recentemente entendi que eu sempre fiz errado, e agora é bem difícil corrigir vícios. E como sempre falo, se treinar o erro é ele que fará para sempre. Eu falo isso por experiência própria. Só é preciso não teimar no erro, e ainda será difícil, mas pode corrigir.

Para aprender bem tem que estudar vários materiais, manter a mente aberta, e não casar com o erro, e claro, precisa juntar muito texto e entender, que é o aprendizado, o oposto de só repetir o que alguém disse. é um processo longo, lento e contínuo, não é um texto que vai resolver a questão.

A sintaxe das linguagens não importa tanto, é mais a questão conceitual que complica. Claro que elas podem influenciar o acerto e o erro, mas a maneira de pensar é o que determinará o sucesso ou não.

OOP é difícil porque exige fazer certo. Formas mais livres são mais fáceis de fazer certo. Depois que fez errado refatorar uma classe pode ser mais complicado.

O paper é importante, mas ele só coloca uma visão possível. Ele meio que cria mais uma escola. Muitas pessoas discordam dele, em alguns pontos.

OOP certo é saber fazer a modelagem, é entender bem requisitos. Claro, deve também cumprir alguns requisitos semânticos específicos, mas o problema é como cria o modelo.

Ah, eu não acho que agora sei programar OO corretamente. Eu já estou vacinado e sei que posso ainda estar errado. Mudo assim que eu percebo que algo mais faz sentido. Só tenho um pouco mais de confiança porque agora estudei profundamente, mas só ajuda, não garante nada.

Eu pretendo fazer algo no futuro, espero que seja certo, porque vai dar muito trabalho. E eu não prometo que será o certo, só não cometerá alguns erros clássicos já bem conhecidos. E não errará porque deixará claro que pode estar errado ainda. O maior erro é ter certeza que está certo quando isso não é possível. Achar erro é mais fácil do que fazer certo. Ter essas coisas claras ajuda muito. Está errado todo mundo que disser que só um jeito é certo. Também não prometo que isso revolucionará os códigos das pessoas, porque se OO não o fez, mesmo que algumas pessoas acham que faz, não será um ajuste nele que fará.

Acho que isso já ajuda um pouco.

1

Passei um bom tempo do meu tempo antes de ir trabalhar em outra área que não é TI, lendo isso, e eu não sei o que falar. Me sinto motivado mas ao mesmo tempo deslocado, eu acho que me potencial é Python, mas o meu potencial real é Javascript.

Hoje eu só programo em Javascript, porém comecei programando em Python, será isso uma influência da primeira linguagem. Cara, esse texto me deixou muito pensativo!

A primeira parte do texto me chamou atenção:

Tudo passa por uma transformação, tudo evolui.

Eu sou cristão, evangélico e congregacional, então eu não acredito muito sobre a nossa evolução vinda de outra espécie, e hoje não evoluímos como antes. Mas esse não é o foco, então nesse caso eu acredito em uma evolução mental, psicológica, como nesse outra parte:

A Ontogenia recapitula a Filogenia.

Esse trecho me lembra de algo que eu sempre acreditei a gente pode mudar por causa de um dia, uma semana ou até por causa de uma hora, porém o foco disso não é o tempo que a gente pode mudar, e sim o fato de que a gente pode mudar!!

1

Minha contribuição:

Se você está tendo dificuldade em aprender algo que está em seu "range" de potencial real, então pule um pouco o potencial real, estude algo que está um pouco adiante disso e depois talvez fará sentido para você as coisas que não conseguia aprender anteriormente.

OBS: O processo de pular o potencial real e avançar 1 pouco além disso tem que ser feito com muito cuidado para não causar problemas maiores.

Não sei se ficou confuso, mas pelo menos para mim isso funcionou muito bem e eu explico aqui nesse post como eu descobri que "dar um passo maior que a perna" pode ser bom para os meus estudos.


Por fim, obrigado pelo post e sempre que tem algo cientifico pautado em dados/publicações cientificas é edificante para nós!

Abraço

1

Olá @walacysilva! Só li agora este artigo e gostei muito, meus parabéns!

É interessante notar que aquilo que é o nosso real, quando buscamos entender o potencial e transitamos pra lá, passamos a olhar nos detalhes da forma como olhavámos para o real assim olhamos para o potencial, e isso é muito louco.

Ou seja, se o real é python, e entendi que o potencial é js, logo quando eu passar a estudar js e focar, os principais detalhes que eu tinha aprendido em python, aprenderei em js e da mesma forma que eu estava evoluíndo em python, também evoluirei em js, até chega num nível de estabilização do conhecimento.

Eu ganho com isso velocidade no aprender uma coisa nova, tudo simplesmente porque eu identifiquei corretamente o meu potencial proximal com o meu real.

Mas É MUITO IMPORTANTE entender o básico de um computador, de um compilador, das linguagens em si. Se você aprende o básico como a Lógica, Algoritmos, seu potencial será muito mais amplo, e você aprenderá QUALQUER linguagem de programação.

Isso me faz lembrar que o príncipal no aprendizado não é aprender tudo sobre tudo logo de cara, mas focar nos PRÍNCIPIOS! Focar em príncipios nos levará mais longe no quesito conhecimento, por simplesmente eles mudarem menos e estarem em todos os lugares, o que vai facilitar sua compreensão de assuntos, o seu avançar no conhecimento.

Recentemente publiquei um compilado sobre aprender a aprender com o objetivo de trazer minha visão sobre o tema meta aprendizado e como o indivíduo poderá evoluir nisso com conhecimento e este artigo combina bastante com este tema, facilitando a compreensão dos assuntos, mostrando onde está a dificuldade e incentivando o aprender de forma inteligente, muito obrigado por este conteúdo mais uma vez!