Em um programa de graduação tradicional em ciência da computação, você aprende apenas programação. Mas o mundo real não quer pessoas que são apenas programadores. O mundo real quer engenheiros de software reais. Sei que muitas descrições de cargos parecem não expressar essa distinção, o que apenas confunde o assunto. No mundo real, você precisa ser capaz de:
- Reúna e analise os requisitos quando eles não são dados diretamente para você
- Projetar e analisar arquitetura com possibilidades quase infinitas
- Crie planos de teste e aja neles para avaliar e melhorar a qualidade de um sistema
- Trabalhe de forma colaborativa em uma equipe de pessoas com diferentes origens e níveis de experiência
- Estime e planeje o trabalho mesmo que você não saiba exatamente o que construir
- Comunique-se efetivamente com as partes interessadas que têm necessidades diferentes que não necessariamente se alinham
- Negocie agenda, orçamento, qualidade e recursos sem desapontar as partes interessadas
Ah, sim, e você também tem que ser capaz de escrever código, embora isso leve, em média, apenas 40 a 60% do tempo do engenheiro de software.
Portanto, não é que recém-formados graduandos de ciência da computação não saibam programar (muitos são, na verdade, programadores muito bons). É que muitos deles não sabem fazer mais nada.