Mais um tópico que li de cabo-a-rabo. Por isso, vou tentar responder pelas três páginas.
-
Eu tive aula de compiladores no meu terceiro ano de faculdade. Gostei da matéria porque tive um ótimo professor e porque este me fez, pela primeira vez, escrever um programa que ultrapassasse as 5000 linhas. A necessidade de se manter um sistema complexo foi um grande aprendizado. Pra vocês terem uma idéia, pasmem, eu escrevi todo o código Java no Notepad, sem compilar! Óbvio, me dei mal, o javac gerou mais de mil erros.
Ainda assim, mesmo estudando compiladores, nunca soube (na época) o que era closure, ainda sofri efeitos da lavagem cerebral do “Java Anywhere” e, olhando pra tras, me formei ainda sendo um profissional bem imaturo em relação ao que era hoje.
-
Porque as universidades não formam bons profissionais? Não acho que a resposta seja tão simples quanto: “faltou matéria de Compiladores”. Me formei numa universidade pública que, dizem, está entre as melhores do país. Anda assim, precisei de uns três anos de estudo por conta própria pra me considerar um profissional ótimo. (E não acho que numa particular seria diferente.)
Acredito que as universidades não formam bons profissionais por não se criar uma cultura de qualidade na escrita de código. Durante os anos de estudo, nunca fomos apresentados ao Subversion, não sabíamos o que era testes automatizados, tivemos pouco acesso ao Unix, não trabalhávamos em equipe, e aprendíamos e fazíamos software simulando um waterfall. Ou seja, tudo ao contrário do que se espera de um bom profissional. E no mundo das consultorias, este aluno simplesmente repetirá as péssimas práticas adquiridas na universidade. Óbvio, em algum momento, o rapaz (ou a moça) se dará conta de que suas ações são prejudiciais, porém, fica-se numa “sinuca de bico”, porque apesar dele saber o que é ruim, não tem a mínima idéia do que é bom.
-
Qualquer profissional precisa saber como as coisas funcionam por trás. Simplesmente porque elas são necessárias quando acontece algum problema inesperado e fora do comum. Eu, sinceramente, estou cansado de ver programador “travar” quando, por exemplo, o Hibernate traz um resultado diferente do planejado, e ele fica simplemente alterando os métodos de Critéria até dar certo (o que não ocorre, óbvio). Conhecimento aprofundado de SQL é fundamental, mesmo que você não faça uso.
-
Considero o Thiago, apesar de barraqueiro, bastante esperto. Defender Lisp em terra de Javeiro não é pra qualquer um. Acredito que a cultura da monolinguagem ou da monoplataforma é fruto de criações vindas de grandes empresas, como é o Java e como é o Windows. Pras “vendors”, não interessa um programador que, de repente, mude de linguagem “porque é mais adequado”, aquilo que a empresa vende deve ser apropriado pra tudo e pra sempre, senão é um cliente a menos.
O único jeito de sair dessa mordaça é abraçar o Open Source, onde a cultura do “gold hammer” não é tão forte assim.