Herberth Amaral

Software development adventures

“A gente nao quer so codigo… a gente quer codigo, controle de versao e bug track”

with 11 comments

Tá certo. A paródia da música dos Titãs não ficou boa. Mas acho que já deu pra sacar do que este post trata.

Enfrentar as matérias de programação na faculdade para quem já trabalha com desenvolvimento deve ser um saco para muita gente. Os professores geralmente não trabalham na área, não sacam nada além da linguagem e ainda tem coragem de nos fazer de trouxa, explicando como é a sintaxe da linguagem, como fazer algumas coisas básicas (leia-se CRUD) e acham que está tudo ok. Não está. Óbvio que não. Então, eu tenho algumas coisas a dizer para tais professores (e para os alunos também).

1 – Ensinar algumas coisas sobre a sintaxe e mostrar um CRUD não é o suficiente.

Precisamos mais além disso para desenvolver um trabalho final decente. Nós, alunos, precisamos aprender a nos virar, mas precisamos saber com o que devemos nos virar. Coisas básicas como indentação de código deveria ser cobrada. Separation of Concerns deveria ser incentivado e cobrado desde o início, por exemplo.

Não serei injusto. Algumas coisas como “comente seu código para documenta-lo” nos é ensinada. Isso é importante para quem está começando, pois saber se orientar dentro do próprio código é uma boa. Mas é algo insuficiente. Eles não ensinam como código pode ser autodocumentado, como bons nomes de variáveis podem ajudar nisso, como codificar “de cima para baixo” e outras coisas relacionadas a codificação.

2 – Nos passar trabalhos em grupo não necessariamente nos ensina a trabalhar como uma equipe.

Há vários trabalhos finais para fazermos e a forma mais fácil de fazer isso é deixar um para cada um. Dá pra eliminar vários problemas de comunicação e sincronização de código assim. Acho que já deu pra perceber que não aprendemos muito sobre ferramentas para desenvolvimento em equipe…

Quem for tentar desenvolver em equipe, provavelmente o fará enviando código por email, trocando pen-drives ou enviando via compartilhamento de arquivos, se tiver na mesma rede (impressionante, mas já vi “profissionais” trabalhando assim) e notarão o trabalho que isso dá. Obviamente, dá pra notar que não tivemos uma aula sobre controles de versão

3 – O trabalho não acaba com a entrega…

Quem trabalha com desenvolvimento de software há um tempo sabe do que eu estou falando. De acordo com esse paper, mais de 90% dos custos de um software estão na sua manutenção. Vendo por esse lado, não estamos fazendo nem 10% do trabalho que deveríamos fazer.

Várias práticas de programação importantes são feitas durante a manutenção. Uma delas é a adição/mudança de recursos. Se fizéssemos isso, perceberíamos que coisas como refatoração e testes unitários são importantes.

4 – Metodologias são sempre bem vindas

Uma das dúvidas de quem começa a desenvolver é: como devo proceder, qual metodologia adotar. Um professor tem que ser um guia para um aluno escolher um método de trabalho. Praxis? XP? Scrum? PDCA? Sair fazendo na doida não é das melhores escolhas :)

Na matéria de Engenharia de Software, nós temos uma visão teórica de cada uma dessas metodologias. Uma matéria de programação com um projeto pra entregar poderia ser um cenário perfeito para coloca-las em prática.

5 – Conclusão

Matérias como essa são muito desperdiçadas na nossa universidade. E eu imagino que seja em outras também. Se você é professor, comece a pensar nisso e pense em como você pode ajudar a mudar o quadro aqui exposto. Se você é aluno, cobre isso do seu professor. Ou pelo menos tenha a boa vontade de estudar sozinho :)

Sem posts relacionados.

Written by Herberth Amaral

December 10th, 2009 at 7:18 am

Posted in Misc

Tagged with , , , , , ,

11 Responses to '“A gente nao quer so codigo… a gente quer codigo, controle de versao e bug track”'

Subscribe to comments with RSS or TrackBack to '“A gente nao quer so codigo… a gente quer codigo, controle de versao e bug track”'.

  1. Muito bom o post Herberth!!
    Concordo plenamente!! E desde já, devo dizer que gostei muito da idéia do blog. Pode ter certeza de que estarei lendo sempre! ^^

    Joicy

    10 Dec 09 at 08:51

  2. [...] This post was mentioned on Twitter by Herberth Amaral, petroniocandido. petroniocandido said: Excelente post: http://herberthamaral.com/2009/12/a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track/ [...]

  3. Falou tudo!!!

    Parabéns!

    Carlos

    10 Dec 09 at 17:52

  4. òtimo Post Makina!!

    eles tão fingindo que ensinam … e alunos fingindo que aprenderam… mas pra eles não tem nenhum prejuízo ne??

    Sonia

    10 Dec 09 at 17:53

  5. Reportei algo parecido para a prof. Patrícia umas semanas atrás, após ouvir direto da fonte (acadêmicos do 1º e 2º períodos) as barbaridades que os professores têm feito.

    Um exemplo: ficar 5 meses desenhando esquemas de árvores em provas (sim, APENAS desenhando), para entregar, nos últimos dias do semestre, um programa com árvores SBB funcionando. Em C.

    Isso é um absurdo, e sua atitude de publicar e chamar os acadêmicos para a “luta” é formidável.

    Parabéns, Herberth!

    Abraço.
    (A propósito, estou prontamente disponível para lhe ajudar nessa.)

    Flaudísio

    10 Dec 09 at 17:54

  6. @Flaudísio
    Mande esses caras para nosso Coding Dojo para eles aprenderem a programar igual gente :D

    Valeu cara. Pode deixar que eu vou cobrar, hein? ;)

    Herberth Amaral

    10 Dec 09 at 17:59

  7. Fazendo o papel de advogado do diabo…

    1- Não é todo mundo que trabalha já na área que tem conhecimentos aprofundados sobre a teoria em questão. Na verdade, isso é uma exceção. Em geral, são pessoas que sabem usar IDEs e não as linguagens em si. Orientação a objeto mesmo é algo que nunca ouviram falar. Então, não acho que ensinar o bãsico seja desnecessário.

    2- Muita gente não quer trabalhar como desenvolvedor e, em muitos casos, apresentar coisas mais complicadas acaba sendo um grande problema. Claro que entra a questão de o professor ter conhecimento suficiente e didática para conseguir repassar o conteúdo, mas nem todo mundo se interessa por isso. Embora eu não tenha sido um aluno medíocre na graduação, nunca me interessei realmente por desenvolvimento e não acho que ganharia muito vendo novas metodologias (IMHO).

    3- Claro que sempre há uma falta de preparo dos professores, mas é impossível para alguém que não trabalha diretamente com desenvolvimento ficar sempre em sintonia com o que acontece no mundo. Só para ter uma idéia, tenho grandes professores no mestrado que estão um pouco defasados, embora trabalhem diretamente com pesquisa no dia-a-dia. Obviamente, há os dinossauros que fazem a mesma coisa há vários anos e não tem qualquer interesse em fazer diferente, mas não acho que se deva generalizar.

    4- Por fim, o que julgo mais importante: o que os alunos tem feito para incentivar melhorias nas aulas? Não que seja uma tarefa fácil, mas é interesse das turmas como um todo melhorarem isso ou estão apenas querendo passar de período para ir trabalhar em alguma empresa e ganhar R$ 1.000,00 por mês? Embora possa parecer estranho, nem todo mundo quer aulas melhores. Infelizmente, muita gente quer apenas terminar o curso e pegar o diploma.

    Não que eu discorde do texto, simplesmente náo gosto de generalizações e críticas sem propostas de melhorias. Claro, eu sei que a maior parte dos professores não é receptiva a isso, mas entram fatores como salários, condições de trabalho e outros. Não estou defendendo incondicionalmente os professores, mas eu procuro sempre ver todos os lados.

    Para encerrar o comentário, que mais parece um post, já pensaram no que a UNIMONTES oferece de bom para os professores, além de um salário que apenas melhorou recentemente? Qual a vantagem em se ter dedicação exclusiva, se o salário aumenta apenas R$ 700,00? Que incentivos há para a pesquisa? Os alunos ajudam em que? Há casos de professores que montaram projetos para ajudar alunos e agora estão inadimplentes por irresponsabilidade dos mesmos.

    Só acho que antes de generalizar, é importante analisar todos os fatos e pontos de vista.

  8. Ah… essa numeração minha não está relacionada à numeração do post.

  9. @Steve

    Eu faço esses comentários como um profissional da área e como um aluno que quer que as coisas mudem.

    Vamos lá, tópico por tópico

    1 – IDE é ferramenta. Um artesão é bom pq ele é bom, não necessariamente pq tem uma boa ferramenta (a ferramenta ajuda, claro). Um idiota com uma boa ferramenta ainda é um idiota. Pessoas que focam somente IDEs ajudam a formar idiotas e eu acho que não é isso que o mercado quer. Ou seja, partindo da sua análise, temos um mercado com a maioria de idiotas. Por que não ajudar os alunos QUE QUEREM a não serem mais uns idiotas?

    2 – Concordo que nem todo mundo deva trabalhar como desenvolvedor. E sim, aplicar tudo que eu estou dizendo no post é meio complicado, reconheço. Mas e pros caras que querem seguir a área de desenvolvimento? Os professores são aptos para passar umas dicas do que eu falei que está faltando para esses alunos? Eu gostaria de ter aprendido isso na faculdade. Outra coisa: se você tivesse visto algumas metodologias como o Scrum, por exemplo, de forma mais completa na sua graduação, perceberia que ela é uma metodologia genérica, que não serve apenas para desenvolvimento de software :) . Por isso, vc seria beneficiado em aprender, mesmo não sendo da área.

    3- Discordo. Há páginas e páginas de desenvolvedores ao redor do mundo falando como eles escrevem software, como eles arquitetam suas aplicações, como coordenam o seu time e etc. “Não trabalhar na área” não é desculpa. Não há desculpa para não estar atualizado. Software é uma área extremamente volátil e os métodos de obter informação hoje em dia são bem menos custosos se comparados com os métodos de 10 anos atrás, por exemplo. Pessoas da área que nem tentam acompanhar as mudanças podem ser taxadas de desleixadas. Vou citar um professor que eu pegaria como exemplo: João Batista, nosso professor de Banco de Dados I e II. Ele não é tanto da área de desenvolvimento, mas conhece muito mais do que muitos professores de programação ali dentro no quesito de boas práticas, arquitetura de software e novas tecnologias e a única coisa que eu vejo de diferente nele é a boa vontade. Se os nossos professores tivessem um pouco de boa vontade, muita coisa seria diferente ali dentro.

    Engenharia elétrica, sua área de mestrado, e software são coisas MUITO distintas. Complicado comparar os dois. Engenharia elétrica é taxada como ciência há muito tempo. O processo de produção de software, em boa parte dos casos ainda se parece mais com um processo artístico do que com um processo científico. Ainda estamos descobrindo as melhores formas de se fazer software. Nesse ponto de vista, não é muito legal comparar os dois.

    4 – Eu posso citar inúmeros exemplos locais de como a gente está tentando melhorar a qualidade das aulas (ou pelo menos sanar o déficit que os professores nos levam), mas isso pode ficar para outro comment, outro post ou até outra conversa de bar :)

    Concordo com você. Nem todos querem aulas melhores. Eu mesmo não quero ter aulas de “multimídia” ou “marketing”, por exemplo, e um dos motivos é pq eu não me interesso pela área. Outro é pq eu não sei até onde estudar isso pode ser vantajoso pra mim. Aí é que entra um dos papéis do professor: mostrar o que a disciplina tem a oferecer. Pra mim, é a melhor forma de atrair a atenção de alunos.

    A minha proposta de melhoria é simples: Professores, para dar aula, têm que sacar do conteúdo e um pouco mais além disso! Já tive um professor que não soube explicar o que era um namespace. Eu simplesmente não posso ter respeito por um professor desses, não na área de software.

    Como eu disse anteriormente, não precisa trabalhar na área. Seria bom se tivesse trabalhando, mas julgo não ser estritamente necessário. Tudo se resume no que eu disse acima: boa vontade. Essas coisas que eu citei no texto que eu disse que nós não aprendemos na faculdade, eu aprendi por pura e boa vontade. Eu poderia me conformar em ser mais um operador de IDE sem cérebro… mas não foi o caminho que eu escolhi.

    O mesmo vai para os alunos: boa vontade também. Se não tiver, beleza. Você vai passar de ano, provavelmente. Se vai ser um bom profissional, isso são outros 500.

    A realidade da remuneração na Unimontes é algo decepcionante mesmo. Mas nós, alunos, não temos culpa disso. Não podemos mudar isso. Então eu acho que antes de justificar a má educação com os baixos salários, pensem em quem é prejudicado com a má educação…

    Herberth Amaral

    11 Dec 09 at 00:30

  10. É o que quero dizer… você é exceção. Gostaria muito que não fosse, mas a realidade é diferente.

    Realmente o que mais existe são idiotas com IDEs e frameworks. No entanto, qual a proporção de alunos que realmente querem aprender de fato? Não sei a resposta para isso, mas não há também como simplesmente excluir quem não quer nada. Eu, por exemplo, sou um sysadmin que viu SOMENTE shell script e algumas ferramentas Windows durante a graduação. E, particularmente, não acho que isso seja o fim do mundo. A idéia do curso, em minha opinião, é mostrar um conhecimento mais genérico e não focar apenas nessa ou naquela metodologia. Claro que se tivesse visto as coisas com que trabalho, seria muito mais fácil mas, como disse, não é o fim do mundo.

    Não entendi o motivo de Engenharia Elétrica ser diferente, pois acho que o caso é o mesmo: falta de atualização. É óbvio que muitos professores ali poderiam se atualizar, como é o caso dos nossos doutorandos, mas não há incentivos para isso. E não falo apenas financeiros, mas no geral mesmo. Sob o ponto de vista financeiro, um mestre na UNIMONTES recebe em início de carreira, R$ 3200 líquidos. Se pedir dedicação exclusiva, aumenta R$ 700,00. Já se trabalhar em alguma instituição privada com 20hs, o ‘upgrade’ é de R$ 2500,00. Nesse caso, como passa a trabalhar mais, passa a trabalhar pior e quem perde é sempre a UNIMONTES, por ser menos rígida. Mais uma vez, com força de vontade de ambas as partes, o curso melhoraria muito. No entanto, sabemos que isso é meio utópico.

    Na Internet há de tudo. Não disse que não há informação disponível, disse apenas que a maioria não procura essas coisas simplesmente para melhorar uma aula. E isso pelos mesmos motivos apresentados acima. Além disso, a mesma informação está disponível para os alunos. Basta correr atrás disso e estudar por conta. Para mim, a Universidade não tem e nem deve ter a obrigação de passar todo o conteúdo para o aluno. A idéia é formar ‘cabeças pensantes’ capazes de progredirem por si mesmos.

    A minha proposta de melhoria é bem simples: pagar R$ 10000 para cada um e descontar se não der aula direito. É uma proposta tão boa quanto a sua, mas também é inviável. Em um lugar em que faltam professores (leia-se norte de MG), exigir isso é querer demais. Aí entra culpa do governo, da UNIMONTES e outros que não acho que compense discutir aqui.

    Infelizmente, meu caro, os alunos não tem culpa da remuneração e nem os professores. Por que eles teriam que pagar o pato sozinhos? Ninguém dá uma boa aula sem motivação para isso. Se o salário é ruim, a estrutura não é das melhores e muitos alunos não tem interesse, sobra o que como fator motivacional? Claro que o salário melhorou recentemente, mas ainda não é dos melhores. E por falar em alunos, sim, falta boa vontade na maioria dos casos.

    Para terminar, essa opinião sua reflete a opinião da maioria ou pelo menos de um bom grupo? Se sim, acho viável tentar implantar mudanças, mas é preciso tomar cuidado com essas coisas. Nem sempre o que queremos reflete o senso comum. Na minha sala, por exemplo, éramos no máximo 04 sysadmins contra 20 desenvolvedores.

    P.S.: Se quiser ver algo melhorar, termine seu curso, faça um mestrado e tire um dinossauro da UNIMONTES!

  11. Update do comentário com correções de Renato Dourado, vulgo Cabelo:


    Swamplord says (22:39):
    Tô vendo aqui a prosa sua com Herberth no blog

    "E não falo apenas financeiros, mas no geral mesmo. Sob o ponto de vista financeiro, um mestre na UNIMONTES recebe em início de carreira, R$ 3200 líquidos"

    Isso é BRUTO, moss!!!!!

    Depois, qdo estiver com mais tempo, colocarei um comentário

    Valeu pela dica, Renato.

    Steve Lacerda

    1 Feb 10 at 01:54

Leave a Reply