Ok, eu tenho ensinado a um amigo como programar por um tempo agora. Ele é um aluno muito rápido e é muito bom em programação até agora. No entanto, ele tem um "problema" que continuo tentando corrigir.
Ele entra em cena e começa a fazer programação de alto nível sem aprender alguns conceitos básicos (ele criou um aplicativo da Web completo, mas ainda não conhece o gerenciamento de paginação ou sessão).
Este não é o problema. Ele continua pulando para novas tecnologias (Node.js, MongoDB, EC2, etc). Tentei dizer a ele que ele deveria aprender algumas noções básicas sobre o RDMS de sua escolha (MySQL), pois ele o usa todos os dias antes de investir muito tempo aprendendo o básico do MongoDB (e provavelmente mudar para algo novo).
Eu sou o que está errado aqui, ou ele deve tentar se concentrar em uma coisa de cada vez e ficar realmente bom nisso?
fonte
Respostas:
Pessoalmente, acho que pode ser uma ótima idéia experimentar diferentes tecnologias e idiomas ao aprender a programar. O foco em uma tecnologia tem o benefício óbvio de torná-lo muito bom nisso, mas a desvantagem óbvia de conhecer apenas uma única tecnologia.
Mas acho que a desvantagem mais sutil mais importante é que linguagens e estruturas geralmente vêm com uma ideologia. Existem muitos programadores (talvez a maioria dos programadores) que aplicam apenas uma ideologia em tudo o que programam. Isso ocorre porque eles aprenderam muito bem uma estrutura em um idioma e agora não conseguem ver nada sem esses óculos.
Especialmente para alguém que está apenas aprendendo a programar, não acho realmente um problema querer experimentar o que está por aí e esperar para focar em algo até mais tarde. Afinal, será difícil escrever algo substancial sem conhecer uma tecnologia decentemente bem.
fonte
Há um bom raciocínio de ambos os lados dessa questão. Saber "o suficiente " sobre muitas tecnologias diferentes é certamente valioso. Conhecendo " um pouco " sobre muitas tecnologias diferentes? Não muito.
O conhecimento profundo de tecnologias específicas certamente pode ser valioso - SE houver uma demanda contínua por elas. Sabendo " tudo o que há para saber " sobre uma tecnologia específica? ... provavelmente um exagero.
Então, está tudo na balança. Se ele acaba criando aplicativos maravilhosos com nosql, por que ele precisaria saber a diferença entre o mecanismo InnoDB e o mecanismo MyISAM?
fonte
Eu concordo em parte. Ele precisa conhecer os princípios subjacentes - mas ele não precisa apenas se sentar em uma coisa e ficar realmente bom nisso. Ninguém faz.
Ao sentar com uma coisa e ficar muito bom
Atualmente, estou trabalhando com C # e Microsoft XNA para criar um jogo. Estou aprendendo muito sobre o XNA e, embora já seja bastante competente em C #, meu conhecimento está se expandindo pouco a pouco (hoje aprendi sobre restrições nos parâmetros de tipo ).
No entanto, não há necessidade de me tornar 'realmente bom' em XNA ou C #. Se eu terminasse meu projeto agora e seguisse em frente e nunca mais usasse nenhum deles, ficaria completamente satisfeito e meu aprendizado continuaria em outro lugar.
Embora os princípios sejam importantes
Pelo menos eu entendo os princípios subjacentes. Quando crio coisas em C # e XNA, entendo o que estou fazendo - e, se não, aprendo sobre isso.
Se eu escrevesse paginação, entenderia como a paginação funciona. Se seu amigo criou alguma paginação e não tem idéia de como funcionou, isso é um problema. Se ele não criou a paginação, não há motivo para que ele precise saber.
A questão aqui é: ele sabe o que o @ $ #! ele está fazendo ou é um programador que não tem idéia de como programar?
fonte
Acho que ele está tentando outras línguas porque tem algo que deseja construir. Você sempre pode retornar a um idioma ou estrutura e aprender mais.
Há uma linha tênue entre aprender a teoria / construir uma fundação e tentar permanecer motivado.
Pelo menos ele não está preso em um único idioma. Às vezes você toma o bem com o mal.
fonte
Acho a atitude dele como um ativo e não um passivo. Sua capacidade de fazer pesquisas está acima da média. Sua curva de aprendizado também é superficial. Por que não explorar essas características se você quer que ele aprenda alguma coisa.
Sua mente inquisidora está sempre em movimento, por que não lhe fornecer orientação. Comece dizendo a ele por que a paginação é importante e essencial. Deixe-o dar uma olhada em sites com paginação e sites sem esses.
Que tal dar uma crítica construtiva ao que ele está fazendo. "Uau, você fez algo excelente, mas não seria melhor fazer isso dessa maneira, com ênfase na otimização e nas melhores práticas.
Eu acho que fazer uma comparação entre uma boa prática e uma má prática pode realmente estimular sua mente.
Não o restrinja, ele acabará encontrando algo que gostaria e se contentará com isso por algum tempo. Se eu fosse você, forneço a ele muito material de aprendizado sobre coisas pelas quais ele é tão apaixonado.
Eu acho que ele está fazendo a abordagem de cima para baixo, enquanto você, por outro lado, quer que ele faça uma abordagem de baixo para cima
fonte
Por que isso é ruim?
Pelo contrário, acho muito bom! Mostra curiosidade e vontade de aprender. Além disso, ele quer encontrar a ferramenta certa para o trabalho certo! Melhor do que ficar com uma tecnologia inadequada de primeira escolha. ;)
Na verdade, eu faço o mesmo, como programador experiente. E eu recomendo. Sempre que tenho um novo projeto, meu comportamento é o seguinte:
Eu acho que faz todo sentido.
fonte
Pessoalmente, se alguém tivesse que se concentrar apenas em uma tecnologia, eu diria que deveria ser C # / Java, usado junto com o SQL.
A partir disso, acredito, você pode se adaptar a qualquer outra tecnologia.
Mas aderir a uma tecnologia pode ser limitante se um cara quiser entrar no ambiente corporativo.
Idealmente, uma plataforma orientada a objetos, uma plataforma móvel, uma plataforma web e, em seguida, muito bom conhecimento de SQL (ou qualquer outro ambiente de banco de dados).
E o básico primeiro, caso contrário ele ficará preso mais tarde!
fonte
Não é ruim se ele é iniciante em programação.
Ele verá como algumas coisas funcionam. Mas se ele não entende o que está fazendo, é melhor não fazer nada.
Eu tive esse problema comigo mesmo, quero saber tudo sobre Java, C, C ++, C #, Phyton, ASP.NET ... etc, mas percebi que não posso saber tudo, então me concentrei em algumas coisas e é muito Melhor.
Então, o que ele deve fazer (aconselhá-lo):
Eu não concordaria com @arnaud se você sempre explorar e aprender coisas novas quando um novo projeto estiver à sua frente (bem, não completamente). Leva muito tempo para explorar e aprender coisas novas várias vezes e alguns projetos têm um limite de tempo. Mas, por outro lado, se você precisar aprender algumas coisas simples, tudo bem: D.
fonte
Concordo com você, às vezes é fácil obter um conhecimento superficial de uma estrutura, tecnologia ou linguagem específica, mas obter um entendimento real é o melhor para se envolver em um desenvolvimento do mundo real até a conclusão e mantê-lo - torne-se alguém que os outros pedir conselhos. É preferível se tornar um valete de todos os negócios, mestre de um, em vez de apenas um valete de todos os negócios, mestre de nenhum . Dito isto, eu não o desencorajaria de aprender coisas novas, porque ele obviamente tem um bom nível de entusiasmo.
fonte