Um novo programador deve se concentrar em uma única tecnologia até que seja proficiente nisso? [fechadas]


10

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?


6
Parece uma boa oportunidade para exigir que seu aplicativo da Web suporte sessões e paginação. Isso não resultaria nele aprendendo?

Também qual tecnologia única deve ser aprendida?

@ ThorbjørnRavnAndersen Não é apenas uma tecnologia única, mas a pilha LAMP é a que ele trabalha todos os dias. Eu acho que ele deve aprender todos os detalhes básicos / relevantes para seu trabalho sobre MySQL, Apache, PHP e JavaScript, no mínimo.
Brandon Wamboldt

11
Então você respondeu essencialmente sua própria pergunta com "não".

11
Ele já não está aprendendo várias tecnologias como web, banco de dados etc. de uma só vez? Quais são os limites do que constitui uma tecnologia aqui?
JB King.

Respostas:


18

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.


2
+1 no segundo parágrafo. Eu acrescentaria que olhar para diferentes linguagens, estruturas e APIs pode ensinar muito sobre POR QUE os designers escolheram implementar uma determinada linguagem / estrutura / API da maneira que eles fizeram. Proporcionar ao aluno uma compreensão mais profunda da programação e do software como um todo. Pelo menos, imho
Jamie Taylor

+1 Existem situações em que você aprenderá a se concentrar, como quando tiver um trabalho de programação "real". Mas como você consegue um emprego se apenas foi exposto a uma estrutura? Aprenda a escrever algo em mais de uma estrutura / biblioteca, para que você possa preencher seu currículo e mostrar que não é tendencioso a uma tecnologia específica. ;-) Você pode aprender coisas como paginação e RMDB mais tarde, depois de obter o contexto real para fazê-lo.
Spoike

@Spoike Ele tem um trabalho de programação "real", daí a razão pela qual eu estou tentando levá-lo a concentrar-se na tecnologia que ele usa todos os dias para esse trabalho
Brandon Wamboldt

11
@RougeCoder: dê a ele as tarefas apropriadas (pagine esta lista gigantesca, filtre itens, faça um diagrama com amostras agrupadas etc.) para permitir que ele aprenda como executar os conceitos que você deseja que ele conheça. Se não houver tais tarefas, não haverá contexto para ele aplicar esse conhecimento.
Spoike

11
Eu costumava pensar que era BS, ou pelo menos um exagero, quando as pessoas diziam coisas como "aprender programação funcional faz você pensar de maneira diferente". Acontece que eles estavam cortando o efeito que isso tem no seu código. Meu código já é completamente diferente e ainda não sou proficiente na minha linguagem funcional de escolha, nem estou tentando mudar a maneira como escrevo o código. É realmente um abridor de olhos.
9118 Steven Evers

5

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?


Bem, a diferença entre o InnoDB e o MyISAM é basicamente transações. Se ele não entende as transações, que chance ele tem de trabalhar corretamente com conceitos como "consistência eventual"?
18712 Michael Borgwardt

Perdão? Ninguém disse que ele não entendia transações, e o que eu escrevi não implicava isso.
PBR

3

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?


Você levanta bons pontos. O problema é que, com algumas coisas que ele sabe o que está fazendo, mas com outras, ele não (acho que ele simplesmente não quer aprender, então ele continua copiando de outros projetos). Por exemplo, ele escreveu paginação, eu examinei peça por peça, mas ele ainda não entende. Eu sei que ele conseguiu entender, porque é um conceito super simples, e ele fez coisas muito mais complexas.
precisa saber é o seguinte

Sim, e isso é um problema. Se ele está escrevendo código, não entende que está a meio caminho de ser um programador de copiar e colar e ser um programador que não tem ideia do que está fazendo.
Doppelgreener

3

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.


3

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


1

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:

  1. explorar (as tecnologias potenciais que podem ser úteis)
  2. experimento (com os que parecem promissores)
  3. escolha seus técnicos (ou experimente um pouco mais até saber)
  4. cumpri-lo (desenvolva seu aplicativo e faça o download)

Eu acho que faz todo sentido.


1

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!


0

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):

  1. Pense no que você quer fazer
  2. Explore todas as opções
  3. Encontre o que combina com você
  4. Aprenda
  5. Nunca pare de aprender

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.


0

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.