1) A farsa de aplicativos de negócios :
Eu acho que a coisa toda sobre estruturas "Enterprise" é fumaça e espelhos. J2EE, .NET, a maioria das estruturas Apache e a maioria das abstrações para gerenciar essas coisas criam muito mais complexidade do que resolvem.
Pegue qualquer ORM Java ou .NET regular ou qualquer estrutura MVC supostamente moderna para qualquer um que faça "mágica" para resolver tarefas simples e tediosas. Você acaba escrevendo grandes quantidades de clichês XML feios, difíceis de validar e gravar rapidamente. Você tem APIs massivas, nas quais metade delas serve apenas para integrar o trabalho de outras APIs, interfaces impossíveis de reciclar e classes abstratas necessárias apenas para superar a inflexibilidade de Java e C #. Simplesmente não precisamos da maior parte disso.
Que tal todos os diferentes servidores de aplicativos com sua própria sintaxe de descritor, o banco de dados excessivamente complexo e os produtos de groupware?
O ponto disso não é a complexidade == ruim, é a complexidade desnecessária == ruim. Eu trabalhei em instalações corporativas massivas onde algumas delas eram necessárias, mas mesmo na maioria dos casos, alguns scripts criados em casa e um front-end simples da web são necessários para resolver a maioria dos casos de uso.
Eu tentaria substituir todos esses aplicativos corporativos por estruturas da Web simples, bancos de dados de código aberto e construções de programação triviais.
2) O número de anos de experiência exigido:
A menos que você precise de um consultor ou técnico para lidar com um problema específico relacionado a um aplicativo, API ou estrutura, então você realmente não precisa de alguém com 5 anos de experiência nesse aplicativo. O que você precisa é de um desenvolvedor / administrador que possa ler a documentação, que tenha conhecimento de domínio no que quer que esteja fazendo e que possa aprender rapidamente. Se você precisar desenvolver algum tipo de linguagem, um desenvolvedor decente irá buscá-lo em menos de 2 meses. Se você precisar de um administrador para o servidor da Web X, em dois dias ele deve ter lido as páginas de manual e os grupos de notícias e estar atualizado. Qualquer coisa menos e essa pessoa não vale o que é paga.
3) O currículo comum de graduação em "ciência da computação":
A maioria dos diplomas de ciência da computação e engenharia de software é tola. Se sua primeira linguagem de programação é Java ou C #, você está fazendo algo errado. Se você não faz vários cursos completos de álgebra e matemática, está errado. Se você não se aprofundar na programação funcional, ela estará incompleta. Se você não pode aplicar invariantes de loop a um loop for trivial, não vale a pena ser um suposto cientista da computação. Se você tiver experiência nas linguagens xey e na orientação a objetos, está cheio de merda. Um cientista da computação real vê uma linguagem em termos dos conceitos e sintaxes que usa, e vê as metodologias de programação como uma dentre muitas, e tem um entendimento tão bom das filosofias subjacentes de ambas que escolher novas linguagens, métodos de design ou linguagens de especificação seja trivial.