Quais áreas de especialização em programação você recomendaria para um iniciante [fechado]

StackOverflow https://stackoverflow.com/questions/17320

  •  08-06-2019
  •  | 
  •  

Pergunta

Sou um estudante que estuda desenvolvimento de software e acho que programação, em geral, é um assunto muito amplo para tentar saber tudo.Para ser proficiente, você deve decidir em quais áreas concentrar seu aprendizado e compreensão.Certos conjuntos de habilidades têm sinergia entre si, como desenvolvimento web baseado em dados e experiência em SQL.No entanto, toda a experiência da API win32 no mundo pode não se aplicar diretamente ao desenvolvimento Linux.Isso me leva a acreditar que, como programador iniciante, devo começar a decidir onde quero me especializar depois de ter um conhecimento geral dos princípios básicos do desenvolvimento de software.

Esta é realmente uma questão com várias partes:

  1. Quais são as especializações comuns em programação de computadores e desenvolvimento de software?
  2. Quais destas especializações têm mais valor a longo prazo, tanto como base para outras especializações e/ou como competências comercializáveis?
  3. Quais conjuntos de habilidades se complementam?
  4. Existem áreas de especialização que dificultam a sua capacidade de desenvolver outras áreas de especialização?
Foi útil?

Solução

Ben, quase todos os programadores experientes ainda são estudantes de programação.Você nunca para de aprender nada quando é um desenvolvedor.Mas se você está realmente começando sua carreira, então deveria se preocupar menos com a especialização.Todas as APIs, estruturas e habilidades que você espera que proporcionem uma existência de longo prazo na área não vão acontecer.A tecnologia parece mudar muito e você deve ser versátil e flexível o suficiente para aprender qualquer coisa.O conhecimento que você adquire em uma plataforma/API/framework não morre.Você pode aplicar as habilidades à próxima melhor plataforma/API/framework.

Dito isto, você deve parar de se preocupar com o futuro e concentrar-se no básico.Estruturas de dados, análise e design de algoritmos, design de compilador e design de sistema operacional são o mínimo necessário.Além disso, você deve estar disposto a voltar e ler livros nessa área a qualquer momento de sua carreira.Isso é tudo que é necessário.Boa sorte.

Desculpe se pareci um grande conselheiro;mas é isso que eu penso.:-)

Outras dicas

Não quero rejeitar diretamente sua premissa, mas na verdade acho que ser generalista é uma boa posição em programação.Você certamente desenvolverá conhecimentos em áreas específicas, mas é provável que seja um produto de interesse pessoal ou de necessidade profissional.Com o tempo, o que você consegue transferir entre linguagens e domínios de problemas está no cerne do que torna bons programadores.

Acho que a questão mais importante é:Em quais áreas de especialização você está mais interessado?

Depois de saber, comece a aprender nessa área!

Eu acho que a maior habilidade de todas seria se adaptar aos tempos, porque se o seu empregador puder ver esse potencial em você, então seria sensato segurá-lo com firmeza.

Dito isto, aconselho você a mergulhar na área que VOCÊ gostaria. A aprendizagem é movida pelo entusiasmo.

Como meu emprego atual é em um provedor de Internet, considero o conhecimento de redes particularmente útil.Mas algum dia gostaria de brincar com gráficos 3D (não necessariamente jogos).

Vá o mais fundo que puder começando em um ambiente, win32, .net, Java, Objective C...qualquer que seja.

É importante construir uma compreensão profunda de como o X funciona...para que você possa traduzir os mesmos conceitos para outras linguagens ou plataformas/ambientes, se desejar.

"Existem áreas de especialização que dificultam sua capacidade de desenvolver outras áreas de especialização". Mais ou menos, mas nada permanente, eu acho.

Como sou relativamente verde (menos de 4 anos), venho de uma mentalidade realmente OOP.Raramente saio do .NET, então tive dificuldades em um trabalho ao entrar em contato com código incorporado.Com programadores embarcados temendo a criação de objetos e a perda de desempenho da herança.Eu tive que aprender o ambiente, memória muito baixa e tempos de relógio lentos, de onde eles vinham.São tempos de crescimento, me diverti melhor porque entendi muito bem a minha área.

Eu direi que se você escolher algo em que se especializar em termos de comercialização e dinheiro, provavelmente se esgotará rapidamente.Se você começar a se especializar, escolha algo que goste.Eu adoro programação GUI e odeio coisas do lado do servidor, meu amigo é o oposto, mas nós dois amamos nossos trabalhos.Se ele tivesse que fazer o meu trabalho e eu o dele, nós dois ficaríamos loucos de tédio.

Como estudante, recomendo esquecer o que você está programando e focar no próprio processo de software.Entenda como analisar um problema e fazer as perguntas certas;aprenda todos os padrões de design que puder e realmente aplique todos eles obter uma verdadeira compreensão e apreciação do design orientado a objetos;escreva testes e codifique apenas o necessário para que os testes sejam aprovados.Acho que a melhor maneira de realmente aprender é codificar o máximo que puder - a linguagem e o domínio não são importantes, navegue sourceforge e carne fresca para qualquer projeto que pareça interessante e envolva-se.O importante é compreender os fundamentos da engenharia de software.

E sim, isso inclui C.Ou Montador.Essa é a maneira mais fácil de entender bem como seu computador funciona e o que seu código de alto nível está realmente fazendo.

Finalmente, nunca pare de aprender - Arquitetura orientada a serviços, inversão de controle, linguagens específicas de domínio, gerenciamento de processos de negócios estão mostrando enormes benefícios, por isso é importante estar ciente deles - Mas quando você terminar de estudar e ingressar na força de trabalho que sabe qual será a próxima grande novidade?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top