Tivemos um palestrante convidado em nossa escola, ele foi tangente em relação àqueles que se formavam e não estavam no nível de habilidade que ele espera, ie. conhecimento de uma linguagem compilada antiga como Java, C ++ ou C #, uma linguagem de script como Python ou Ruby, uma estrutura da web. Quais são algumas outras habilidades que vocês acham que devem ser absolutamente críticas para se formar?
9
Respostas:
De longe, eu diria uma vontade de aprender. A faculdade não tem como objetivo fornecer as habilidades necessárias para você se tornar um programador. Destina-se a ensinar as habilidades necessárias para aprender essas habilidades.
fonte
Os recém-formados precisam mais do que apenas um desejo de aprender, precisam de uma obsessão pelo aprendizado, um entendimento de como aprender e uma base sólida nas realidades do software. Geralmente, eu não ligo para quais idiomas você conhece, mas todos os juniores devem:
Entenda a história . A ciência da computação é um campo bem pesquisado, com muitos problemas resolvidos. Conhecer esse fato abre as portas para aprender com o que está diante de você. Mesmo sabendo que existe uma história rica para extrair conhecimento, é mais do que muitos graduados grocam. Isso inclui coisas como notação O-grande, histórico de algoritmos, princípios dos profetas (Knuth, K&R, Hofstdater etc.) e práticas e padrões comumente aceitos.
Saiba que isso pode ser resolvido . Sempre fico surpreso quando um desenvolvedor é surpreendido por um problema. Parte de aprender a aprender é o princípio simples de que os problemas são facilmente solúveis, sempre. Uma vez que você sabe disso, enquadra seu pensamento para encontrar uma resposta sensata.
Entenda a decomposição . Não apenas os problemas podem ser resolvidos, mas o caminho para fazê-lo é tão simples quanto dividir e conquistar. Reduza um problema para componentes mais simples, e sua resposta sempre se apresentará.
Saiba como medir . Além de decompor problemas, os novos desenvolvedores precisam saber como coletar fatos sobre esses problemas. Quão mais? Quão largo? Quão rápido? Quantos? Fatos simples são um passo para a compreensão e o pensamento objetivo. Fazer suposições sem fatos é uma maneira fácil de se perder no espaço do problema.
Seja objetivo . Todos os problemas podem ser decompostos, medidos e entendidos simplesmente. Os problemas que não podem ser entendidos simplesmente requerem decomposição, medição e compreensão adicionais. Não adianta ficar bravo ou frustrado, nem é produtivo discutir sobre teorias ou culpar. Qualquer comportamento irracional ou crença relacionada ao processo de solução de problemas é veneno, tornando as soluções muito difíceis de encontrar.
Prefira padrões e princípios . Você encontrará dezenas de maneiras corretas de fazer coisas, linguagens, modelos de programação, arquiteturas de computadores e até métodos de engenharia. Não existe um caminho único e correto, mas existem conceitos subjacentes sólidos que você pode aplicar repetidamente. Aprenda a ver esses padrões, pois eles guiarão seu aprendizado e pensamento a cada passo do caminho.
fonte
fonte
Como empregador, empregarei apenas pessoas como programadores que:
Na minha experiência, menos de 5% dos graduados em ciência da computação que se candidatam a empregos de programação realmente têm essas habilidades, em um nível básico. Essas são as habilidades mínimas necessárias para serem comercialmente úteis e, o mais importante, nem todos são capazes de aprender essas habilidades.
Outros bons para ter são:
Isso facilita a integração com a equipe de desenvolvimento existente, mas são assuntos que normalmente podem ser ensinados no trabalho.
fonte
Eu já havia uma equipe que "herdei" com funcionários recém-formados e tive a experiência de que aqueles que realizavam programação real "ao lado" de lá estudavam (para ganhar algum dinheiro extra) eram os membros mais capazes da equipe. Portanto, a experiência é a chave e pouco importa em que idioma.
No entanto, se você procurar o que os recrutadores estão procurando (em todos os sites comuns de recrutadores, como jobserver.com etc.), é interessante observar que há muito a ser solicitado para C ++, C #, Java, mas também existem outros procurados e também coisas "exóticas" como COBOL ainda estão por aí.
fonte
O processo de aprendizado nesta profissão nunca termina. É preciso aprender constantemente e melhorar a si mesmo, caso contrário, ele "flunks out" do jogo muito rápido.
fonte
As outras respostas são boas, mas eu diria que a habilidade nº 1 negligenciada na universidade parece ser a engenharia de software real .
As aulas básicas para ensinar OOP e uma linguagem como Java são ótimas, mas no 3º e 4º ano, por que os alunos (pelo menos na minha universidade local) escrevem compiladores e sistemas operacionais em vez de aprender a identificar e criar uma boa arquitetura, como dissecar requisitos e criar a partir disso uma lista de especificações técnicas, e talvez o mais importante, qual a diferença entre bom código que funciona e código ruim que funciona.
É como se nossas universidades quase quisessem produzir codificadores em vez de engenheiros de software . Eu nunca contrataria alguém que não demonstrasse habilidade / talento em engenharia.
fonte