BT

Educação Universitária para Engenheiros de Software é perda de tempo?

por Michael Stal , traduzido por Eder Ignatowicz em 23 Nov 2011 |

Mitch Harper, cofundador do BigCommerce.com, afirmou em um recente artigo publicado no Sydney Morning Herald que a educação universitária talvez não seja o melhor caminho para se tornar um engenheiro de software. Segundo Harper, que é um engenheiro de software autodidata e sem formação universitária, as universidades muitas vezes não preparam seus estudantes para a o dia-a-dia e os desafios de trabalhar como um engenheiro de software:

As Startups Australianas necessitam de graduados prontos para o trabalho, que sejam proficientes em PHP, Python e Ruby (entre outras linguagens de programação modernas) e que de fato entendam o lado prático da engenharia de software; ao contrário de profissionais que somente conheçam o lado teórico aprendido nas universidades.

O tópico que inicialmente apresentava-se como uma questão australiana, foi discutido em diversos países. Como por exemplo, um post de Dan North "Programação não é artesanato", causou intensa discussão. North não considera a programação propriamente como uma profissão. Na sua opinião, parece ser muito baixo o nível de exigência para que um profissional se torne um engenheiro de software.

Recentemente, alguns empreendedores apresentaram pontos de vista contrários aos argumentos de Harper. O CEO do Freelancer.com, Matt Barrie argumentou em um artigo de 14 de novembro:

Encorajar que jovens alunos motivados esqueçam a universidade porque a última linguagem da moda não é ensinada é um grande erro, além de ser extremamente perigoso. Você não vai encontrar um emprego facilmente, e se quiser aproveitar o atual momento positivo e iniciar sua própria startup, se não tiver formação, terá muito mais dificuldade em encontrar investidores.

No mesmo artigo, Adam Brimo, cofundador do mijura.com, explica

Todos podem aprender a escrever código, mas nunca serão Engenheiros de Software ou Cientistas da Computação. Não serão capazes de projetar sistemas financeiros em larga escala ou engines de busca, ou contribuir para a próxima linguagem de programação. Eles podem construir websites simples para você por mil dólares, mas não serão capazes de construir o próximo Google nem criar tecnologias do futuro. Eles serão substituídos por estas tecnologias.

Harper pode estar errado ao manter opinião tão negativa sobre cursos universitários de Engenharia de Software, mas no mínimo iniciou uma discussão interessante. Será que as universidades dão aos estudantes as habilidades necessárias em engenharia de software? Teria a educação universitária ênfase exagerada em aspectos teóricos, ou a formação universitária estaria sendo subestimada? Qual a sua opinião sobre este debate?

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

Educação boa nunca é demais by Victor Tales

Uma boa educação nunca é demais e eu consigo ver que times que tem boa formação teórica conseguem desenvolver raciocínios avançados, não que sejam mais inteligentes ou não, a questão é que eles tem uma base sólida.

Porém as universidades públicas ou privadas das áreas de engenharia e tecnologia formam muito mal nossos colegas de trabalho, eles não desenvolver a capacidade por instigar, buscar, desenvolver, criar e inovar. Somente vomitam um monte de coisas e esperam as notas nas provas.

Eduação by Hugo Longo

Estudar nunca é perda de tempo, seja através da educação universitária ou autoditada! Para que um profissional seja proficiente em alguma linguagem de programação basta que ele tenha vontade, pois aprenderá na universidade ou sendo autoditada.
Agora, não podemos negar que os cursos de graduação estão deixando a desejar no quesito "exigência para aprovação", os cursos não estão preocupados com a qualidade do graduado que está sendo inserido no mercado.

Como estão as universidades? by Fernando Lozano

Embora eu considere a formação universitária como essencial para um bom profissional de TI, eu entendo que ele pode ter sido levado a esta opinião por experiências negativas com estudantes recém-formados. Eu já lecionei em várias universidades no Brasil e também já recrutei profissionaispara montar equipes para projetos, e vi profissionais de nível muito ruim, que não mereciam ter um diploma. Caras que não eram capazes de escrever funções ou métodos de 10 linhas de código! Caras que não sabiam o básico de TCP/IP (netmask, default gateway, dns). Prestando consultoria, é deprimente ver o código espaguete que o pessoal escreve, a quantidade de erros bobos de lógica, de código duplicado, e as voltas que dão para coisas simples. :-(

Nos meus tempos de professor, eu tive muitos atritos com a pressão das universidades para aprovar alunos que não davam a mínima para o estudo, pelo medo de perder os alunos para outras faculdades "pagou passou" e porque a quantidade de alunos aprovados (e formados no "tempo previsto") é um critério importante na avaliação do Mec. Eu já tive coordenador pedindo para "normalizar" notas, tranformando um 3 em um 7 para aprovar. Vi professores que nunca leram uma listagem de código entregue pelos alunos. Turmas inteiras que entregaram a mesma cópia de um trabalho feito por um veterano (e o mesmo tinha sido feito pelas três turmas anteriores da mesma matéria). Vi professores passando "lista de exercícios", já resolvida, e usando exatamente as mesmas questões na prova.

Eu posso ter tido azar com as universidades onde lecionei e com os candidatos a emprego que entrevistei, mas com tanta faculdade dando diploma sem NENHUMA exigência, e tanto recém-formado que não sabe ABSOLUTAMENTE NADA de programação, dá pra achar que formação universitária é besteira.

Mas eu acho que o problema não é buscar uma "formação alternativa", e sim acabar com estas faculdades caça-níqueis, fazer com que um diploma ateste um nivel mínimo de conhecimento, em vez de depender das certificações profisisonais em TI. Infelizmente, pelo menos aqui no Brasil, qualidade de ensino é um problema que vem desde o primário, e os órgãos competentes não tem interesse em atacar este problema. Preferem focar em estatísticas como "evasão escolar" e "acesso a universidade", como se os estudantes fossem aprender tudo por osmose, sem professores qualificados e sem avaliação.

Vamos discutir a *necessidade*? Sim, é necessário! by Eduardo Buarque

A necessidade por profissionais tecnicamente bem preparados é crescente. Embora o Manifesto SW Craftsmanship (manifesto.softwarecraftsmanship.org) tenha seu valor, não conta a história de nossa lacuna téncica.
Precisamos, sim de uma preparação universitária e de cada novo tijolo colocado na parede do conhecimento.
O que não precisamos é de venda de diplomas, mas essa é outra questão. A confusão é gerada pela dificuldade das instituições de ensino em seguir a demanda de mercado, que é muito dinâmica. Mas isso não é característica apenas da área de computação.

Re: Como estão as universidades? by Thiago Ramos

Fernando Lozano

o seu comentário vale mais do que o artigo. Muito bom. Perfeito o que você escreveu e é exatamente a cara do brasil e pelo jeito a cara do ensino australiano.

Re: Vamos discutir a *necessidade*? Sim, é necessário! by Fernando Lozano

Me perdoe o ceticismo, mas eu vejo muito "demanda de mercado" ser usado como desculpa para "baixa qualidade". TI é uma área que exige alta especialização e conhecimento técnico do profissional, igual Direito ou Medicina. Mas alguém contrataria um advogado formado em uma "graduação tecnológica" de apenas dois anos, ou um substituiria um cirurgião por um enfermeiro operando um novo "robô de cirurgia", ou então dispensaria um médico em prol de um diagnóstico automático dado por uma máquina de exame de sangue? Nestas áreas a tecnologia apoia o profissional especializado, enquanto que em TI ficamos buscando atalhos para poder dispensar o profissional e substituir por um micreiro.

Estou cansado de ver profissionais, com anos de experiência em tecnologia A ou B, e fazendo besteira por deficiência nos fundamentos de TI. Não existe prática sem fundamentação teórica, assim como não serve de nada uma teoria que não tenha objetivos concretos relacionados com a prática.

Sim e não... by Andre Rocha

Eu me graduei...isso nao me ajudou em nada para conseguir meu primeiro emprego como desenvolvedor..porém apos ter um pouco mais de experiencia a graduação ajudou a alavanca empregos melhores...e salarios mais bacanas..entaão no fim...se qr ser desenvolvedor..nao precisa de graduação..se quer sobreviver disso...a graduação encurta o caminho um pouco...sem mt firula..nao te ensina mas é uma regra de mercado..fazer oq..

Re: Sim e não... by Fernando Lozano

Não me leve a mal, mas ou você não tem idéia do que perdeu por não ter feito uma boa faculdade, ou você é um ótimo auto-didata e teve a sorte de encontrar material bom que lhe direcionou para uma carreira de sucesso. Só que TI é algo muito importante para a socidedade para depender apenas de auto-didatas.

Não precisa fazer uma (boa) faculdade para ser um desenvolvedor, mas e para ser um BOM desenvolvedor? Ou ganhou uma base sólida na faculdade, ou conseguiu ela por conta própria. Só o fato de estar lendo este site e respondendo nos comentários já indica que vc deve ser alguém acima da média. Dizem que mais de 80% do pessoal de TI não lê blogs, não acompanha fóruns nem sites de notícias :-(

Re: Sim e não... by Vinicius Serpa

Em relação à necessidade das startups citadas pelo autor, acredito que cada cenário possui seus requisitos, e cada regra sua exceção. Não é todo profissional formado que é bom, porém a possibilidade de comprovação de um estudo formal vale a pena a escolha pela graduação, e também a oportunidade da troca de experiência (obviamente que não estou considerando a questão dos cursos caça-níqueis).

Mesmo as startups que não tinham requisitos acadêmicos de contratação em seu início, hoje só empregam profissionais das melhores faculdades. Quem duvidar, é só dar uma pesquisada no perfil dos colaboradores de empresas como Google, Facebook, etc através do linkedin. Essas empresas descartariam bons profissionais autodidatas? Talvez não, mas isso é exceção e não regra.

Enfim, particularmente acredito que a educação formal é sim um ótimo caminho para a nossa área (bem como para qualquer outra). Agora, se ele é tão bom o quanto deveria, isso é uma outra história.

O que é um engenheiro de software? by Alexandre Barbosa

A meu ver a grande questão se dá em torno da definição de engenheiro de software. Creio que um desenvolvedor não é necessariamente um engenheiro de software. De forma prática, um engenheiro de software é essencial para desenvolver sistemas complexos (sistemas críticos, um novo algoritmo de busca, um SGBD, um SO, e por aí vai), pois envolve uma vasta gama de conhecimentos nas diferentes áreas da computação. Dessa forma, a formação universitária é fundamental para formar um eng. de software (claro que há exceções).

Mas no desenvolvimento de aplicações e sistemas de menor complexidade, a necessidade de engenheiros de software é muito menor, e em alguns casos, acredito que até mesmo desnecessária. Um bom profissional com sólidos conhecimentos na(s) linguagen(s) de programação adotada(s), boa capacidade analítica e de lógica pode criar excelentes aplicações. Para esse tipo de profissional, creio que a formação universitária é dispensável. De qualquer forma, creio que uma educação formal, como um colégio técnico, seria de grande ajuda na formação destes profissionais. Mas com certeza, vários autodidatas poderiam se destacar neste papel.

Re: O que é um engenheiro de software? by Vinicius Serpa

Oi Alexandre,

Acho que você tocou em um ponto que eu nunca consegui entender com total clareza. O que exatamente é um Engenheiro de Software? Na literatura, o que se faz entender é que Engenheiros de Software são pessoas que trabalham no Ciclo de Vida de desenvolvimento (análise, projeto, implementação, teste, implantação, manutenção).

Assim, um especialista em análise poderia ser chamado de Engenheiro de Requisitos (ou Analista de Sistemas)?
Um especialista em projeto, um Engenheiro de Arquitetura (ou apenas Arquiteto)?
Um especialista em implementação ... "Engenheiro Implementador", desenvolvedor ou apenas programador?
Um especialista em testes .... Testador? Engenheiro de Testes?

Fazendo um paralelo com a engenharia tradicional, nela existe o papel de Gerente de Engenharia que geralmente é um engenheiro com mais experiência, um engenheiro orçamentista que é um engenheiro que trabalha na parte de orçamentos, engenheiro calculista que é o engenheiro que trabalha com cálculos estruturais, engenheiro de aplicação que é um especialista em trabalhar com softwares 3D, engenheiro de vendas que é um engenheiro que trabalha com a parte tecnica das vendas, etc... apesar de todos trabalham em partes diferentes de um "ciclo de vida de engenharia", todos são engenheiros.

E o que os faz engenheiros não é o tamanho ou a complexidade dos projetos. Obviamente que não faria sentido reunir uma grande equipe de especialistas para projetar esferas metálicas sem utilidade, mas a princípio a mesma engenharia que as faria poderia também produzir grandes fornos petroquímicos.... porque tanto esferas metálicas como fornos exigem conhecimentos de física, resistência de materiais, etc.

Portanto, se eu considerar uma analogia, poderia afirmar que para Sistemas críticos, um novo algoritmo de busca, um SGBD ou um SO seria necessário um Engenheiro de Software com grandes habilidades, já para aplicações e sistemas de menor complexidade não é exigido muito do Engenheiro de Software. Mas note que em ambos os cenários, quem trabalha é um engenheiro de software, que seria exatamente a definição de "um profissional com sólidos conhecimentos na(s) linguagen(s) de programação adotada(s), boa capacidade analítica e de lógica ... ". Por exemplo, um Engenheiro de Interface (FrontEnd Engineer) teria uma ótima ocupação mesmo em projetos de sistemas de menor complexidade, porque todos eles afinal necessitam de ótimas interfaces...

Bom, meu raciocínio está um pouco confuso, mas não menos que a "crise de identidade" que existe em nossa área. Engenheiro, artesão, programador, analista, desenvolvedor, já li e ouvi de tudo (até comparação com jardinagem)... diante de tantas definições (e tantas outras bobagens) às vezes penso como não seria bom eu ocupar "uma posição" ou "um cargo" mais tangível em uma outra área...

Desculpem o desabafo.

Re: O que é um engenheiro de software? by Fernando Lozano

Alexandre, eu considero um erro (infelizmente muito comum no mercado) considerar o programador de computadores como um profissional "menos especializado" e considerar que apenas Analistas de Sistemas, Arquitetos de Software, etc necessitam de uma formação melhor. É o tipo de pensamento que reduz todos os profissionais da área a "micreiros" e considera que o que vale é a "área de negócio" e que TI, por não ser atividade fim, não deve ser valorizada.

Voltando a analogia com outras áreas, nem todo médico é um neurocirurgião. Mas isto significa que especialidades médicas "mais simples" não exigem um profissional com amplo conhecimento específico?

Quando você afirma "sólidos conhecimentos na(s) linguagen(s) de programação adotada(s)" reduz o programador a um operador da ferramentas (IDE e linguagem) que por sinal tem vida útil curta no mercado. Eu já conheci muitos programadores que eram (ou se achavam) muito bons em Delphi, VB ou Java, mas tiveram dificuldade homérica em se adaptar a outras linguagens -- e no final das contas não eram tão bons assim nas suas linguagens preferidas. Decoraram muitas receitas de bolo mas não sabiam bem o que estavam fazendo, não eram capazes de adaptar soluções aos problemas encontrados. Todo bom programador vai recomendar aprender linguagens diferentes, para ter contato com soluções de outras comunidades.

Já a "boa capacidade analítica e de lógica" não é algo natural no ser humano. Ou vamos dizer que somente quem tem "o dom" pode ser um bom programador? Fazendo outra analogia, um artista é um cara que "magicamente" ganha "inspiração" e produz uma obra-prima? É claro que ele precisa do "dom", mas tem também que aprender as técnicas, seja de pintura, música, etc. Como disse Picasso, "arte é 20% inspiração e 80% perspiração".

Sempre vão existir pessoas muito boas em qualquer área sem formação especializada, porque tem o "dom" ou porque são boas auto-didatas. Mas não podemos deixar áreas como Medicina e TI dependendo da sorte de surgirem estas pessoas. A sociedade necessita de formar, treinar profissionais com a competência necessária e em quantidade suficiente. Este seria o papel das universidades, que infelizmente não o vem cumprindo, pelo menos na parte do Brasil que eu posso observar.

Re: O que é um engenheiro de software? by Alexandre Saudate

Fernando, quem disse "Talento é 1% inspiração e 99% transpiração" foi Thomas Edison - que, por sinal, não chegou a ter grande educação formal. No entanto, nota-se que era uma figura de grande curiosidade, daquele tipo que só surge uma vez em uma geração inteira. Acredito que o modelo ideal de universidade seria aquela justamente para acelerar esse processo de "criação de pessoas criativas", servindo mais para aguçar a criatividade dos alunos do que propriamente ensinar algo. Um espírito semelhante é cultivado (em maior ou menor grau) até hoje em grandes universidades, como ITA, MIT, USP e outras. Nota-se, porém, que esse ideal está, de fato, se perdendo até nessas universidades, levando-nos à questionar se existe a necessidade de uma educação formal ou não.

Minha opinião? O próprio aluno deve saber se questionar se precisa de educação formal ou não. Deve se perguntar "sou curioso o suficiente para aprender por meus próprios meios?". A geração Google tem, nesse sentido, a maior bênção e a maior maldição, que é a grande disponibilidade de conhecimento. Com tanto conhecimento disponível, o aluno deve ser um excelente pesquisador para descobrir, na rede, o que é útil ou não. Caso não seja, que vá à universidade, descubra por lá o que vale a pena ser pesquisado, e então pesquise.


Quanto ao caso das universidades brasileiras: elas falham magnificamente nesse quesito (salvo casos específicos, como os já citados), fazendo com que os meros programadores formados se achem engenheiros de software. Que se comparem a grandes nomes, como Larry Page, Sergey Brin, Dennis Ritchie, James Gosling e tantos outros, e perguntem a si mesmos: "será que sou ao menos um pouco parecido com estes?" e descubram se a universidade que frequentam vale a pena o tempo e dinheiro envolvidos ou não.

Educação! É bom ter sim, mas... by Adriano Mota

O que vejo é muita gente teórica que acha que sabe... Tem certificação, pós graduação, mas vivência de mercado, "jogo de cintura" e malícia na vivência de projetos, realmente são poucos.

Não que eu ache ruim ou seja contra certificações, pós, etc (pelo contrário, eu mesmo tenho pós graduação) mas elas são tão teóricas que não abordam as reais necessidades do dia a dia, que realmente só são adquiridas trabalhando, vivenciando projetos e situações que não são (e creio que não existem meios disso) abordadas em grande maioria nos curso sejam eles de certificação ou universitŕios.

Re: O que é um engenheiro de software? by Fernando Lozano

Thomas Edison não foi o único que disse. Percentuais variam, mas várias personalidades fizeram afirmações parecidas. Por exemplo:
"Giovanni costuma tomar para si a frase atribuída a Pablo Picasso que diz que criatividade é 90% transpiração e 10% inspiração."
www.terra.com.br/istoegente/edicoes/515/artigo1...

Uma universidade, curso ou certificação nunca vão substituir o empenho pessoal do aluno. Mas daí a dizer genericamente que podemos dispensar uma universidade é exagerar. Se o profissional foi capaz de obter o conhecimento equivalente por conta própria, ótimo. Mas você confiaria em um médico, advogado ou engenheiro civil que não fez faculdade?

O que falta para a gente é algum meio honesto para avaliar faculdades e recém-formados, como a prova da Ordem dos Advogados, que vergonhosamente reprova mais de 80% dos formados pelas universidades caça-níqueis.

Re: O que é um engenheiro de software? by Vinicius Serpa

Alexandre, concordo com muita coisa que escreveu, mas uma em particular me fez surgir a seguinte questão:

Porque um engenheiro civil ou mecânico recém formado, mesmo sem experiência profissional, pode ser chamado de engenheiro, e na "programação" o recém formado só poderia ser chamado de engenheiro quando se tornar tão bom qto o James Gosling???

Re: Educação! É bom ter sim, mas... by Fernando Lozano

Esta estória de faculdade formar apenas pesquisadores, apenas teóricos e sem relação com o mercado, é um sintoma da baixa qualidade das nossas universidades. Elas estão tão ruins que esquecemos que é sim função da universidade preparar o profissional para as necessidades do mercado. Não apenas ensinando as ferramentas da moda no momento, mas também o conhecimento de base que vai permitir ao profissional se manter atualizado pelas décadas seguintes. Também é função das universidades encontrar meios de passar aos alunos parte da experiência e prática de projetos realistas. Só que é mais fácil vender diplomas. :-(

Mas quando o MEC quer professores com dedicação exclusiva, e pontua na avaliação apenas "produção científica" ela estimula as universidades a não contratarem profissionais atuantes como professores. E estimula os professores a não ensinar. Já repararam, por exemplo, como poucos professores / pesquisadores nas nossas faculdades escrevem livros? Já repararam quantos profressores titulares não dão aula, colocando seus orientandos de mestrado para lecionar em seu lugar?

Re: O que é um engenheiro de software? by Vinicius Serpa

Complementando a questão.... seria a indicação de que o termo "Engenheiro de Software" seria um título aos melhores, como um troféu, e não uma profissão a ser seguida?

Re: O que é um engenheiro de software? by Alexandre Barbosa

Olá Fernando,

eu também acredito ser um erro reduzir todos os profissionais da área a "micreiros". E é por isso que acho que existem diferentes perfis profissionais em nossa área. E desta forma, acredito que existam perfis que necessitam de maior investimento na educação formal, e outros que necessitem de menor investimento.

Talvez a categorização que eu usei não tenha sido adequada, especialmente quando não existe consenso sobre o que vem a ser um Engenheiro de Software, como apontado pelo Vinícius.

De qualquer forma, a idéia que eu queria expor é que há perfis profissionais em que a formação universitária é essencial, e perfis em que um curso técnico é suficiente. E claro que há indivíduos brilhantes que podem se enquadrar como exceções nestes perfis.

Um outro ponto que deve ser considerado: o conhecimento adquirido na educação formal, seja ela em que nível for, é apenas um ponto de partida. Como sabemos, todos devemos continuar aprendendo, conforme ocorrem as evoluções em nossa área. O problema que você descreveu sobre os programadores que não conseguiram se adaptar a outras linguagens não diz respeito ao nível de formação, mas à capacidade de se manter atualizado. Para mim, o fato de um desenvolvedor com domínio em Java ter tido ou não formação universitária, não o fará mais ou menos apto a aprender uma segunda linguagem.

Concordo com você que a sociedade necessita formar e treinar profissionais competentes. Apenas discordo que este papel seja exclusivo das universidades. Elas têm sim um papel importante, principalmente na formação de perfis mais especializados. Mas certamente precisamos de perfis menos especializados, onde as escolas técnicas, e também as empresas, podem e devem ter um papel fundamental na formação e evolução contínua destes profissionais. E só gostaria de deixar claro, que essa classificação de mais ou menos especializado, não implica que um seja melhor ou pior que o outro. São apenas papéis e responsabilidades distintas.

Re: O que é um engenheiro de software? by Alexandre Saudate

Vinícius, eu gostaria de ressaltar que o James Gosling tem não apenas a graduação, como mestrado e doutorado. Nota-se que possui um nível de conhecimento muito acima do programador médio. A questão é: ele seria o que é sem esses diplomas? Talvez não. Equivalentemente, temos o caso do já citado Thomas Edison, que chegou onde chegou por mérito próprio, porém de forma muito mais custosa - em termos de esforço pessoal.

Posto isso, minha opinião é de que temos os termos de Eng. de Software e programador apenas por uma questão de semântica, e não de título: alguns programadores auto-didatas são tão bons quanto Engenheiros de Software formados, assim como alguns mecânicos auto-didatas são tão bons quanto aqueles com formação universitária. A diferença é que os auto-didatas dispensaram muito mais de seu esforço para galgar aquele nível de conhecimento do que os que frequentaram uma faculdade.

Se você descobrisse hoje que o Drauzio Varella não é formado (não estou dizendo que não é, apenas estou fazendo uma suposição), você se consultaria com ele? Eu me consultaria.

Complementando: o que faz um engenheiro, médico ou programador bom, não é seu diploma. É seu conhecimento. Isso só se consegue com esforço - o papel da universidade é tão somente mostrar o caminho para o aluno, que tem o papel de trilhar esse caminho.

Re: O que é um engenheiro de software? by Vinicius Serpa

Alexandre,

Eu compreendendo a importância da educação e o seu papel de "mostrar o caminho". Não desmereço o formado nem o autodidata, e reconheço o esforço pessoal.

O que quiz dizer com a minha pergunta é que o termo "Engenheiro Mecânico" existe para profissionais recém formados em seu curso, mesmo que sejam profissionais sem experiência e competência, enquanto que para a definição de "Engenheiro de Software" só se enquadrariam as "estrelas" (James Gosling, Linus, Steve Woz e companhia). A meu ver isso está errado.

Se formos tomar o nome Engenheiro de Software como profissão, como hoje não há um "CREA" para a área (e imagino que não haverá por questões de mercado, existe lei que estabelece que eng. deve receber um minimo de 9 salarios mas isso é outra história), o que distinguiria um James Gosling de um José Qualquer é a sua competência, mas ambos poderiam ser Engenheiros de Software. Gosling = um excelente engenheiro de software, José = um engenheiro de software ruim e possivelmente desempregado....

O que não temos é a definição para a profissão, então usamos toda a sorte de titulos para funçõe idênticas ou parecidas. E isso acaba sendo prejudicial, porque a área fica sensível à modismos. Eu estou torcendo para que iniciativas como o Bacharelado de Eng de Software como o da Universidade de Goiás vingue (coisa que já existe há 3 décadas na Inglaterra se não me engano) para que tenhamos uma posição mais respeitada e estabelecida frente às outras profissões.

Re: O que é um engenheiro de software? by Alexandre Saudate

Por isso eu disse que é questão de semântica. Concordo plenamente com sua posição, de que estamos sensíveis a modismos. É o que acaba dando, no final das contas, margem a questionamentos do tipo "precisamos de educação superior para programadores?". O que acontece é que, em computação, temos os cursos de Ciências da Computação, Sistemas de Informação e Engenharia da Computação - diferentemente de outras carreiras. Ou seja, nós mesmos damos margem para nossas próprias divergências..

Re: O que é um engenheiro de software? by Wellington Pinheiro

Essa discussão sobre quem merece ou não o título de engenheiro de software, programador, analista, etc. é complicada! Na minha opinião, essa terminologia usada para cargos/profissões/títulos em informática não é clara (e também nem sei se isso é errado) e acabam sendo conceitos que mudam conforme o contexto e a época. Por exemplo, um programador na década de 70 tinha uma função bem definida e hoje em dia nem sei se ainda podemos utilizar esse termo! Eu particularmente gosto mais do termo desenvolvedor para fazer distinção em relação ao termo "programador" que traz um peso de lá de trás. Notem que essa definição é totalmente pessoal, ninguém me falou que isso é certo ou errado. O mesmo acontece com o termo "Engenheiro de Software". Se isso é uma carreira, então talvez seja correto dizer que aquele aluno que cursou as disciplinas relacionadas à engenharia de software no nível superior se torne um engenheiro de software ao terminar o curso. Nesse caso, também é verdade que o aluno precise cursar o nível superior nessa ou em uma área correlata para se tornar um engenheiro de software. Agora existe um outro ponto. Se chamarmos de Engenheiro de Software aquele que trabalha com informática, isso não necessita de uma faculdade para receber o título. Mas novamente, essa é uma dúvida que vem da indefinição dos termos. E convenhamos, não sei se discutir se fulano é engenheiro de software ou não seja o ponto, a não ser que alguém queira pagar o CREA!

Seguindo com a discussão sobre cursar uma faculdade ou não, vou usar uma analogia para tentar apresentar meu ponto de vista. Sabemos que um profissional de informática deve ser capaz de resolver diversos problemas de forma criativa, técnica e fundamentada. Para isso ele precisa contar com um ferramental, algo como uma caixa de ferramentas! Como você faz para encontrar as ferramentas que precisa? Bem, a faculdade é uma delas. Na faculdade você vai ver diversos tópicos que são as tais ferramentas para você guardar na sua caixa. Você não vai saber usá-las todas com perfeição, mas ao menos você as tem e sabe para que serve (em algum momento da vida vão te forçar a usar uma chave de fenda como martelo, mas pelo menos você vai saber que isso está errado). O prêmio de se cursar uma faculdade boa é conseguir as ferramentas certas de mão beijada (bem, pelo menos em relação às principais ferramentas isso é verdade). Ao contrário, nas faculdades que literalmente vendem diploma, você sai com a sua caixa praticamente vazia e as vezes até sem sua caixa! Mesmo que a sua faculdade não seja lá das melhores mas ao seja séria, ela fará toda a diferença para os alunos interessados. Agora, para alunos sem interesse, ou melhor, interessados somente em obter um grau, aí não tem faculdade que vai resolver. Eu creio que é essa a diferença entre o James Gosling e o Zé Ninguém (claro que tem a questão do "dom", mas isso não faz com que elas simplesmente parem de estudar e ver o que está acontecendo ao redor).

Quanto ao autodidata, eu creio que esse é um perfil raro e não deve ser tomado como regra. Ele é raro porque 1) tem que descobrir sozinho quais tópicos precisar conhecer, 2) precisa tem uma grande disciplina e paciência para desbravar alguns desses tópicos e 3) precisa juntar tudo para poder conseguir algo maior (lembra quando o Steve Jobs cita no discurso dele para os formandos de Stanford sobre olhar para trás e juntar os pontos?).

Só para finalizar...já sei que eu escrevi pra caramba, mas não poderia deixar esses dois pontos passarem: 1) aprender a programar vai muito além de aprender linguagens de programação. Conhecer diversas linguagens de programação significa somente que você as conhece e não que saiba programar. O conceito de programação vai muito além; 2) dizer que a faculdade ensina somente teoria pode até ser verdade, mas isso não tira o seu valor! Tive aula com um professor de lógica que uma vez disse: "algo somente é teórico porque ainda não conseguimos entender o suficiente para usá-lo na prática", então, lembre-se que um dia você poderá encontrar sentido em algo que era totalmente absurdo no passado. Passar pela faculdade e não aproveitar nada é negligenciar o futuro!


[]'s.

Re: O que é um engenheiro de software? by Fernando Lozano

Alexandre, eu só não concordo que programador seja uma dessas profissões de nível técnico. Talvez um profissional de suporte e help desk, ou o "instalador de micros", mas na minha experiência faz muita falta a qualquer programador, em qualquer linguagem, o tipo de embasamento que se teria com uma boa faculdade. Não acho que nem os "cursos tecnólogos" (faculdades com dois a três anos) sejam suficientes para o profissional de desenvolvimento. E também não acho que sejam suficientes para o sysadmin. Mas as faculdades oferecem estes "atalhos" porque os alunos compram. :-(

Re: O que é um engenheiro de software? by Fernando Lozano

Falou tudo, Wellington! Programar envolve muitos conhecimentos (de aplicabilidade prática!) além de comandos e sintaxe de linguagens de programação. Envolve conhecer uma série de técnicas, algoritmos e padrões de projetos para situações específicas. Por exemplo, entender porque um número de ponto flutuante (o float do C e Java) não é adequado para lidar com valores monetários. Ou técnicas de caching, e seu potencial impacto em ambientes clusterizados, ou sobre integridade de dados. E é isto que acaba faltando a quem não fez uma boa faculdade, e não teve sorte nas suas explorações auto-didatas.

Re: O que é um engenheiro de software? by Alexandre Saudate

Fernando, mas eu não disse que programador é uma profissão de nível técnico! Falei mais ou menos o mesmo que o Wellington, a de que um bom programador pode se formar sozinho e também pode (deve?) se formar em boas faculdades, que vão acelerar o processo de torná-lo um bom profissional. De uma maneira ou de outra, acabamos nos perdendo mais em semântica do que no cerne da questão: a de que um programador de verdade é aquele que possui conhecimento para tal, e não aquele que possui um canudo debaixo do braço (seja esse canudo um diploma universitário, uma certificação ou coisa que o valha).

Re: O que é um engenheiro de software? by Fernando Lozano

Alexandre, pra mim não é uma questão semântica. É improvável que um programador auto-didata tenha o mesmo nível de conhecimento do que fez uma boa faculdade. Não podemos nos basear em exceções, nos poucos que tiveram sorte de adquirir este conhecimento por conta própria. Eu encontrei muito poucos bons programadores que não fizeram faculdade. Aqui no Brasil a gente pensa no programador como um profissional na base da escala da carreira de TI, mas nos EUA até caras top como o James Gosling se definem como programadores, e isso com Doutorado e etc.

Se a base da formação não vier da faculdade, como você propõe que este conhecimento esteja disponível aos profissionais, e como você propõe que as empresas comprovem que profissionais tem este conhecimento? Ninguém no mundo achou ainda uma alternativa ao ensino universitário.

Exigir um diploma não iria excluir da profissão automaticamente os que não tem. É claro haveria um período de adaptação, e um reconhecimento à experiência concreta. Em alguns países o profissional que demonstar experiência concreta (e também conhecimento teórico condizente) pode obter o diploma, ou o registro profissional, com o mesmo valor de quem fez 4 ou 5 anos em uma universidade, mas sem perder este tempo cursando as aulas.

Volto a insistir que o que vale para outras carreiras de alto nível de especialização, como Direito, Medicina ou Engenharia Civil, vale também para o pessoal de TI. Ora, ninguém sugere que se aceitem médicos ou advogados sem faculdade. Ninguém sugere que se aceite que o responsável pela construção de um edifício ou ponte seja um profissional sem registro no CRE. Então porque qualquer um pode ser desenvolvedor de software?

Muitos que defendem posições contrárias querem poder continuar contratanto programadores cabeças-de-bagre com salários baixos, e usam a oferta dos profissionais mal qualificados para justificar salários menores para os bem qualificados. Não se iluda com este discurso.

Re: O que é um engenheiro de software? by Ton Carvalho

É isso ai, concordo totalmente com o Fernando Lozano.

Que papo é esse, esse tipo de colocação faz parecer que trabalhar com informática e algo simples que se aprende lendo revistas e perguntando pra alguém.

A galera tem que ir pra faculdade, se especializar ralar muito e quem sabe se torna um profissional bom. Temos que por um fim nesse papo.
Você ja viu algum advogado, engenheiro civil ou médico concordar ou ainda pior criar algum tipo de comentário que desmereça seu ofício, ou que o faça parecer simples ?

Temos que acordar galera.

Educação Superior x Diploma by Fabio Santos

Acho que existe uma grande confusão aqui nos tópicos discutidos que é a diferença entre Educação e Diploma. Então vou colocar as coisas de um jeito um pouco mais claro (para mim, pelo menos).

1) Ninguém precisa de Diploma para ser um BOM Engenheiro de Software. E um Diploma não garante que a pessoa seja um BOM Engenheiro de Software. Isso não ocorre somente para a nossa área, mas para todas as áreas. Um diploma de nível superior, mestrado, doutorado ou PhD não dizem muita coisa sobre um médico, por exemplo. Para saber se ele é bom, converse com seus pacientes.

2) Educação/estudo é importante. Aliás, ela fará parte da sua vida não só durante um faculdade ou algo assim. Acredite, você precisará estudar o resto da vida. 98% das coisas que aprendi sobre a minha profissão aprendi fora da faculdade.

3) Um Curso Universitário (no Brasil principalmente, mas também no Mundo), não é o meio mais otimizado de aprendizado técnico, mas permite um ambiente de aprendizado coletivo muito importante. Um programador auto-didata tem grande vantagem sobre um universitário no aprendizado dos conceitos e práticas de programação após 4 anos de estudo (de ambos - considerando o mesmo esforço), por exemplo. O universitário provavelmente ganhará em networking, conhecimento generalista e base de conhecimento para aprendizado posterior.

Re: Educação Superior x Diploma by Fernando Lozano

Fabio, acho que você escreveu algo que não é o que vc queria dizer:
"Um programador auto-didata tem grande vantagem sobre um universitário no aprendizado dos conceitos e práticas de programação após 4 anos de estudo (de ambos - considerando o mesmo esforço), por exemplo. O universitário provavelmente ganhará em networking, conhecimento generalista e base de conhecimento para aprendizado posterior."

Se o auto-didata tem grande vantagem sobre o universitário, como é que o universitário ganharia em base de conhecimento para aprendizado posterior?

Eu acredito que um BOM curso universitário seja sim o meio mais otimizado para aprendizado. Não a curto prazo, não estou falando do primeiro emprego -- estou falando das décadas de carreira que um profissional terá pela frente. Na minha experiência os bons auto-didatas, que realmente consegurão ser bons profissionais sem o apoio de uma BOA faculdade, são uma exceção rara. Então temos que exigir melhor qualidade de universidades, não defender caminhos alternativos (pelo menos não até encontrarmos um que realmente funcione).

Por outro lado também defendo que existam mecanismos para reconhecimento e equiparação dos autodidatas de sucesso, como existe em praíses de primeiro mundo. Até porque esta é uma boa forma de pressionar as faculdades caça-níqueis. Se um profissional tiver uma forma de se registrar profissionalmente, demonstrando sua competência e conhecimento, sem um diploma, isto elimina a necessidade de se fazer uma faculdade só para ter um diploma, que é a rasão de existirem as faculdades caça-níqueis.

Infelizmente no Brasil existe a cultura de se valorizar o título (bacharelado, mestrado, mba, etc) não a competência. Infelizmente a maioria das pessoas não vai conseguir atingir a competência sem o apoio de uma boa universidade. A sociedade precisa de muita gente boa em TI para deixarmos isto dependendo dos auto-didatas. Isto é deixar para a sorte.

Eu não estou falando de diploma. Estou falando de formação. De onde ela vem? De forma acessível para uma grande quantidade de profissionais de TI, que NÃO SÃO auto-didatas, só das universidades. Se elas não funcionam, é isto que tem que ser consertado, em vez de focar nas pessoas excepcionais que conseguiram sem universidades.

Nações que se tornaram recentemente potências no desenvolvimento de software, como Índia e Coréia, fizeram isso desenvolvento boas universidades locais, e não usando google e auto-estudo.

Não estou dizendo que boas universidades garantem o sucesso. Estou dizendo que a sua ausência garante o fracasso como sociedade.

Considero que uma boa universidade é pragmática, voltada para o mercado de trabalho e para os interesses de longo prazo da sociedade. Uma boa universidade vai ter muitos alunos abandonando porque descobriram que TI não é a área deles, pois não conseguem lidar com lógica, abstração, depuração e outas coisas importantes na nossa área. Não considero uma boa universidade aquela que apenas publica um monte de papers em revistas acadêmicas e congressos da SBC, e que entrega diplomas para a maioria dos que entraram, dentro do prazo mínimo. Só que infelizmente este é o conceito do MEC sobre o que seja uma "boa universidade".

Re: Educação Superior x Diploma by Fabio Santos

Fernando,

Acho que não me expressei bem. A vantagem do auto-didata está no conhecimento técnico e prático. Após 4 anos de estudo intenso, o conhecimento técnico aplicado que se alcança em uma linguagem de programação é bem maior que o conhecimento técnico aplicado que se obtém ao decorrer de um curso universitário, por exemplo.

No entanto, existem outras habilidades que são necessárias para o aprendizado. Algumas (poucas) destas habilidades são exercitadas no curso universitário.

Basicamente, a diferença seria:

1) Universitário após 4 anos de estudo: maior potencial de aprendizado futuro;

2) Autodidata após 4 anos de estudo: maior conhecimento técnico aplicável;

É claro que esta diferença é apenas uma abstração. Não uma regra, apenas uma percepção da realidade.

Também é importante ressaltar que, se aliarmos o estudo com o exercício profissional, eu acredito que o estudo universitário traga mais vantagens, apesar de demandar maior esforço.

Re: Como estão as universidades? by Robson Castilho

Texto perfeito! Parabéns!

Tweetei esses dias sobre um exemplo de TCC, onde a parte prática nem é exigida. Os professores cobram mais a "documentação" do software do que o software em si. E, pior, essa tal documentação trata os alunos como idiotas. Por exemplo, documentar a tabela Pessoa e seus campos (CPF - Descrição: descreve o CPF da pessoa!!! Sério?)

É triste, mas é verdade....

Re: Educação Superior x Diploma by Fernando Lozano

@Fabio,

Conheci muitos auto-didatas que após 4 anos de estudo continuavam escrevendo programas porcos... na verdade a maioria deles. :-( Poucos auto-didatas realmente aprendem a aprender por conta própria. Experiência não é questão de tempo, é questão de direcionamento. Você pode passar anos "exercitando" apenas a clicar na barra de ferramentas do Delphi, vai entregar um monte de programinhas de cadastro e relatório, mas vai continuar sem saber escrever uma consulta SQL, modelar tabelas, ou programar uma regra de negócios não-trivial.

TI é uma carreira difícil, que exige especialização. Não adianta buscar atalhos, como ignorar faculdades. Com certeza fazer uma faculdade ruim (que infelizmente são a maioria) não vai fazer grande diferença. Mas para a maioria uma faculdade boa faria uma senhora diferença de aproveitamento para os anos seguintes de carreira profissional.

@Robson,

Essas faculdades como você descreveu, enganam o aluno e prestam um desserviço à sociedade, deixando de cumpriri o seu papel e ainda assim sendo pagas. São elas que devemos combater, em vez de estimular os futuros profissionais a dispensarem a formação universitária.

Educação universitária talvez não seja o melhor caminho para se tornar um e by Marcio Luiz Mendonca

Mitch Harper, acho que ele esta dando sua opniao de acorto com o seu perfil atual de empreendedor, as oportunidades nem sempre aparecem para todos. O que seria de todos montassem um BigCommerce.com, sera que estaria com a mesmo opiniao? o mercado nao seria muito facil para o seu comercio ou ele estaria estudando?

Education is good by Zara Thompson

Education never goes waste. It is very helpful for all. www.helpwithassignment.com/

Education is good by Zara Thompson

Education never goes waste. It is very helpful for all. www.helpwithassignment.com/

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

36 Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT