Quais áreas de especialização em programação você recomendaria para um iniciante [fechado]
-
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:
- Quais são as especializações comuns em programação de computadores e desenvolvimento de software?
- 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?
- Quais conjuntos de habilidades se complementam?
- Existem áreas de especialização que dificultam a sua capacidade de desenvolver outras áreas de especialização?
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?