Se você observar as disciplinas estudadas em TI na academia, encontrará cerca de metade do tempo desperdiçado em matemática, ciências, eletivas etc. e a outra metade em disciplinas acadêmicas, como: Design de compiladores, Teoria de algoritmos, Arquitetura de computadores, Otimização, sistemas operacionais, eletrônica digital e alguns outros cursos relacionados à indústria, como programação C e programação Web.
A maioria dos assuntos mencionados acima é interessante, mas também não fornece diretamente uma sólida experiência no que é exigido no dia-a-dia da TI.
Aceite os requisitos de programação da Microsoft (ou seja, áreas exigidas por alguém para ser um membro produtivo da equipe em uma organização):
1- C # .NET ou VB.NET
2- ASP.NET
3- HTML e CSS
4- SQL Server (ou outro banco de dados)
5- Programação e design de aplicativos OO
6- Script Java
7- Estrutura MVC
8- Alguma exposição a ferramentas de controle de fonte
9- Alguma exposição a ferramentas de teste automatizadas
Ferramenta de rastreamento de 10 bugs
11 Conceitos de comércio eletrônico (opcional)
12-ORM
13-Algumas habilidades de análise de negócios
14-Algumas habilidades de comunicação
15-Provavelmente, alguns fundamentos da computação em nuvem
Como você pode ver, a maioria dos requisitos acima raramente é focada (você pode obter 1 curso em alguns, no máximo) durante a faculdade / universidade.
Não se pode culpar totalmente as instituições, pois existem muitas pilhas de tecnologia e elas continuam mudando.
A maioria dos itens acima da Microsoft não ajudará quem deseja desenvolver aplicativos em Java.
O verdadeiro problema é que nem uma das pilhas de tecnologia necessárias para as empresas hoje é totalmente coberta.
O exposto acima aborda a questão da adequação dos graduados a trabalhos de negócios, como a programação no ambiente de negócios. As necessidades dos laboratórios de pesquisa etc. não são cobertas por esta resposta. Outras áreas também exigem mais habilidades do que as anteriores, como desenvolvimento de jogos, desenvolvimento incorporado, desenvolvimento de sistemas em tempo real etc.