Bjarne Stroustrup on Educating Software Developers

Achei bem interessante essa entrevista do Bjarne Stroustrup (criador do C++) sobre o ensino de programação hoje em dia

Link original

Discussão no slashdot

Mesma coisa acontece por aqui. Isso faz com que estudantes de Ciência / Engenharia da Computação e Sistemas da Informação acordem e estudem direito pra não apenas ganhar o diploma, mas sim se tornarem bons desenvolvedores.

Quando cliquei na lista de colegas da AT&T Bell Labs que ele falou me surpreendi. Vários autores de livros e renomados professores hoje, como Aho, Sethi, Ullman. Até cheguei a usar o Ctrl + F pra procurar por Rivest, Cormen e Leiserson, mas não achei.

Eu achei a entrevista bastante interessante. Basicamente, ele fala bastante que quer mudar a “grade” do curso porque existem necessidades que os acadêmicos não conseguem obter no curso de graduação. Concordo plenamente com ele. Porém, fazer com que o acadêmico consiga absorver todo o conceito de desenvolver software com qualidade é complexo e acredito que seria necessário retirar muitas disciplinas pra fazer com que o acadêmico se forme em 4, 5 anos. Formar um profissional com excelentes conhecimentos em todas as áreas é praticamente impossível (na minha opinião).

Abraço.

Serviu pra aumentar meu remorso por não saber uma linguagem de mais baixo nível e por não ter estudado algorítmos profundamente…

…ainda! :smiley:

Concordo. Cîencia da Computação mesmo com carga horária de 40 horas semanais, em 4 anos de curso ainda é pouco pro tamanho da área. Sem falar que depois de 3 anos você já pede água. Aumentar os anos do curso também não dá, não rende.

Acho interessante que depois de 4-5 anos, quem faz medicina se torna-se um clinico geral, engenharia um engenheiro da área, em direito, passando na OAB, pode advogar.

Computação depois de 4-5 ainda é um ser incompleto. Eu falo que é um curso onde não te dão o peixe, nem te ensinam a pescar. Te dão mesmo é as páginas amarelas da lista telefônica para saber onde achar o cara q ensina tal coisa.

O problema é que fazer Ciência da Computação pra trabalhar no mercado aqui no Brasil é uma grande perda de tempo, pq aqui no Brasil, com exceção a rarissimas empresas, não se faz computação de verdade.

Radical e polêmico! :slight_smile: hehehe

Eu acho 4 anos suficiente, porque o ensino da teoria base da ciencia do computacao for bem apresentado para os alunos eles serao capazes de desenvolver apos o curso. Acho que esse eh a razao da universidade, ensinar a pensar, desenvolver e buscar solucoes por si soh.
As coisas na area de informatica mudam constantemente e rapida, se as universidades decidirem “abracar” tudo vai ser um curso sem fim.
Outra coisa, eu acho que por melhor que seja a universidade e o curso, o estudante nunca estara 100% qualificado pro mercado de trabalho.

//Daniel

[quote=lavh]O problema é que fazer Ciência da Computação pra trabalhar no mercado aqui no Brasil é uma grande perda de tempo, pq aqui no Brasil, com exceção a rarissimas empresas, não se faz computação de verdade.

Radical e polêmico! :slight_smile: hehehe

[/quote]

Isso é a mais pura realidade, a maior parte das pessoas faz BCC para depois aprender frameworks ou produtos e implantar negócio, coisa que um curso de tecnológo de 2 anos daria conta do recado.

Triste, mas garanto que é 90% da realidade nacional.

Algoritmos independem de linguagem. Muito provavelmente seria até melhor usar C do que C++ por ser mais simples e direto. Acho que C como uma primeira linguagem é perfeita.

E aí eles me vem com a mesma falácia de sempre, que “gerenciar memória” manualmente é bom. Não é necessário fazer trabalho braçal para aprender que memória não é infinita ou como utilizá-la apropriadamente.

Essa questão de aprender C ou C++ cai em outra discussão do Slashdot, em que eles discutem se é melhor começar por procedural, orientação a objetos ou funcional.

Best Paradigm For a First Programming Course?

[quote=Bani]Essa questão de aprender C ou C++ cai em outra discussão do Slashdot, em que eles discutem se é melhor começar por procedural, orientação a objetos ou funcional.

Best Paradigm For a First Programming Course?[/quote]

Eeeee ate que enfim alguem que le Slashdot. Minha leitura diaria! :smiley:

[quote=Bani]Essa questão de aprender C ou C++ cai em outra discussão do Slashdot, em que eles discutem se é melhor começar por procedural, orientação a objetos ou funcional.

Best Paradigm For a First Programming Course?[/quote]

Acho linguagem funcional mais adequada pra começar…afinal, a abordagem para quem vem do ensino médio é que o básico sobre computabilidade está sob forma de funções.

sempre há aquela confusão de iniciante. Um exemplo é você ver pela primeira vez um “X = X + 1;” … sempre rola um pensamento inicial tipo “como diabos x pode ser igual a x + 1”?

T+

Quando eu estava aprendendo Basic por conta própria realmente achava “x = x + 1” algo muito confuso, até que na faculdade aprendi Pascal, onde a notação é “x := x + 1”, e onde você vê que você está copiando o valor de x + 1 para a variável x.

Aconteceu num curso de engenharia elétrica numa matéria de introdução à programação de computadores. Houve a maior confusão com o professor falando que x = x+1. E a matéria toda acabou sendo péssima.

Culpa do professor esqueceu de dizer, antes de qualquer código, que em C (e várias linguagens) = é um operador de atribuição. Aliás, esqueceu de explicar o que é atribuição.

Parece óbvio para a gente, mas não existe essa definição/idéia em qualquer outro curso de ciência exata. Variáveis na matemática são algo muito diferente daquelas que usamos em linguagens imperativas.

Depois o meu amigo(engenheiro elétrico) me agradeceu por ter explicado em 10 minutos (numa roda de cerveja) o que o “professor” não fez em 4 meses.

O kenob e o lavh têem razão. Isso está ocorrendo em escolas particulares porque o apelo pela parte administrativa é muito grande. Então já se vê muito curso de Ciência e Engenharia correndo para o lado de administração de empresas. Isso ocorre até aqui no inatel, pelo que eu vejo.

O problema não é correr pra um lado, ciência, desenvolvimento, administração, que seja. O problema é falar que eles continuam sendo cursos de Ciência ou Engenharia. Se quiserem fazer diferente, façam outra ementa, outro curso.

Preferiria que tivessem mais cursos de graduação com ênfase. Engenharia de Software Corporativo, Administração de Tecnologia da Informação, Matemática Aplicada em Computadores.

Atenderia mais aos que os alunos querem agora, não o que encontraram em pós-grad.

[quote=Bruno Laturner]O problema não é correr pra um lado, ciência, desenvolvimento, administração, que seja. O problema é falar que eles continuam sendo cursos de Ciência ou Engenharia. Se quiserem fazer diferente, façam outra ementa, outro curso.

Preferiria que tivessem mais cursos de graduação com ênfase. Engenharia de Software Corporativo, Administração de Tecnologia da Informação, Matemática Aplicada em Computadores.

Atenderia mais aos que os alunos querem agora, não o que encontraram em pós-grad.[/quote]

Concordo com você.
Existem, na minha opinião, dois outros problemas:

1 - O problema é que esses temas são vistos só como introdução nos cursos. Aí sempre tem um pra falar aquele negócio: “Quer saber ou usar mais? Faz uma iniciação científica na área (ou pós, mestrado e tal)”.

2 - O problema (outro) é que alguns acadêmicos (como eu) gostam de praticamente tudo. Eu estudo Algoritmos (a parte mais matemática), Inteligência, Engenharia de Software, Computação Gráfica, Sistemas Web, Estrutura de Dados… Só pra dizer o começo. Daí não dá tempo de estudar uma coisa e todas elas são estudadas pela metade. Eu me esforço e estudo nas férias, mas mesmo assim acho que é pouco.

Abraço.

Terminei de ler o texto.

Eu discordo completamente que o curso de Ciências da Computação precise de uma reformulação. O curso de Ciências da Computação realmente não prepara profissionais corretamente pro “mercado”, pq na verdade o “mercado” de Ciências da Computação é outro.

A minha opinião é:

Curso de Ciências da Computação:
Público: Pessoas que gostem de conhecer e pesquisar sobre a essência da computação: algoritmos, compiladores, arquitetura de hardware etc (Bem como é hoje…até mais Ciências)
Mercado: Área acâdemica, centros de pesquisa e empresas que trabalham com desenvolvimento de coisas mais baixo nível. Como exemplo o louds que trabalha desenvolvendo o MONO.

Curso de Analise de Sistemas(ou chame como quiser):
Público: Pessoas que querem desenvolver sistemas comerciais. Nesse curso seria ensinado as linguagens da moda, frameworks, banco de dados, design patterns, SCRUM, XP etc etc etc. Tudo o que uma pessoa precisa saber pra entrar no mercado de desenvolvimento de sistemas comerciais e escrever bons códigos.
Mercado: Empresas que desenvolvem sistemas comerciais, como a grande maioria.

Essa divisão precisa ser vista! O curso de Ciências da Computação não é pra sair formando 10000 pessoas por ano. É um curso bem mais restrito e fechado, pra quem conhecer a essência da computação e trabalhar com isso.

Enquanto não houver essa divisão, vai ficar o mercado de sistemas comerciais, que é a ampla maioria, reclamando que não saem profissionais decentes e os alunos reclamando que os cursos são ruins.

Dá pra ver por essa thread mesmo, teve comentários acima dizendo que não acha necessário saber profundamento sobre gerenciamento de memória, conhecer compilador a fundo e etc. E eu realmente acho que não precisa mesmo pra desenvolver sistemas comerciais. Então essas pessoas fariam esse segundo curso e ótimo, elas seriam exatamente o que o mercado de sistemas comerciais quer.

E quem quer seguir mais pra área cientifica da computação faz Ciências da Computação e ótimo!

A verdade é que a grande maioria nas pessoas não deveria estar fazendo Ciências da Computação e sim esse segundo curso, mas infelizmente na realidade não é isso que acontece.

[]'s

lavh,

Você tem razão. O problema é que muitos professores acham que Ciência da Computação tem “mais nome”.

Eu acho que a divisão deveria ser essa mesma que você falou (Ciência da Computação, Sistemas da Informação (ou Análise de Sistemas) e Engenharia da Computação). Agora… a cada dia parece que cria um novo nome para um mesmo curso (parecido com o nome dos cargos que existem nas empresas de três letrinhas).

Abraço.

lavh , Completa razão. É por isso que o ensino vai de mal a pior. O mercado muda constantemente, e em vez de abrirem novas áreas, ficam adaptando curso.

Acho que o um dos maiores problemas é o próprio mercado, que não enxerga outros cursos com bons olhos. Muitas vagas aqui e no exterior pedem bacharéis, quando sua demanda interna pode ser suprida por um tecnológico que dá maior enfoque à negócio e produtos.

No mercado nacional, 90% dos empregos poderiam ser supridos por tecnológos, pois o Brasil não possui um parque de empresas como Adobe, Corel, Oracle e por aí vai , criadoras de produtos.

O cientista saí da faculdade com uma boa noção até sobre cálculo, algoritmos e cai num projeto que não passa de um CRUD melhorado. Ainda mais hoje em dia com ferramental dot.net ou mesmo Java as “arquiteturas de caixinha” - onde basta colar um Seam por exemplo e o projeto está pronto.

Isso quando a empresa já não possui um “framework” ou jeitão de fazer as coisas, o cara está ali somente para cumprir tabela. Nesse aspecto, acho o curso de BCC muito denso e o mercado também precisaria enxergar que não tem haver contratar um cientista para fazer cruds, pois de duas uma. Ou o cara não é um bom cientista ou ele vai estar matando seu sonho e ao longo do tempo se tornará ruim …