You are currently browsing the monthly archive for Abril 2008.

Quando saí da faculdade (e até enquanto estava na faculdade) uma má percepção que tinha era que as entrevistas serviam para a empresa me fazer uma série de perguntas, de modo a saberem um pouco mais de mim, do que tinha feito e do que queria fazer e… pronto. Se tivesse conseguido “vender o peixe” eles haveriam de me ligar.

 timemachine

Hoje em dia alterei muito a minha perspectiva… a entrevista tem de servir tanto para eles saberem se eu sou a pessoa indicada para o lugar e para eu saber se eles são a empresa indicada para a minha próxima experiência.

Uma pergunta que geralmente fazem é: “Onde é que se vê daqui a 5 anos?”. Bem, no meu caso.. eu gosto de programar. Daqui a 5 anos… neste momento espero que daqui a 5 anos esteja a programar! E não, não é falta de ambição. Não, não sou uma pessoa que não gosta de subir na carreira. Mas gosto de programar. Claro que quero estar a gerir uma pequena equipa, tenho conhecimento que gostava de passar, tal como me foi passado. Mas a programar. Porquê? Porque, e pondo as tretas de lado, sou bom nisso. E se me derem a escolher entre um lugar como Developer ou Project Manager, podem ter a certeza que sei o que escolher.

dilbert2006915890209

E por falar nisso, como é que é feita a gestão dos projectos? Tenho de estar a preencher uma timesheet sempre que mexo numa classe? Por cada tarefa que faça, tenho de preencher um relatório a dizer o que estava a fazer das dez ao meio dia? Mas porquê? O project manager não sabe o que ando a fazer? Se sabe, então ele que faça o trabalho dele e me deixe a mim fazer o meu. Se não sabe, contratem outro. Um que não seja um gajo a tentar não ser programador.

 project-management-dilbert

E para os programadores, como é o processo de desenvolvimento? Há controlo de versões do código? Se não houver, desculpem, não é nada contra a empresa mas se não há gestão do código, não se podem chamar uma empresa de software. E é numa empresa dessas que eu quero trabalhar.

Se tiverem integração contínua então… Hmm, já começam a parecer uma empresa de jeito! É que, e de certeza que concordam, com integração contínua temos a certeza que o codigo que está guardado… bem, temos a certeza que compila! É que, e já aconteceu mais do que eu gostava de admitir, receber código que temos de manter ou alterar e o código não compila… É frustrante. E sim, a culpa até pode nem ser de ninguém, eu é que preciso de instalar a ferramenta X ou a dll Y para isto funcionar. Mas se eu preciso de um manual de instruções para poder começar a trabalhar, algo está mal.

Claro que já nem peço que a empresa tenha testes unitários implementados no build diário… mas se há ou se não se importam que eu começe… perfeito! Sim, eu sei que fazer testes faz com que o processo de desenvolvimento demore mais tempo mas acreditem em mim, quando lá para o final do projecto tiveremos com problemas no software, vão querer terem perdido algumas horas todas as semanas para não perder estes dias no final. Ah, e já disse que os testes também podem ser usados para inferir sobre a qualidade do código? E como vocês dizem muito, pouca informação é melhor que nenhuma. Sabem, alguns dos processes ágeis não vos retiram o controle sobre o projecto, mas permitem-nos a nós trabalhar melhor, com mais confiança acerca do que estamos a fazer.

dilbert2666700071126

Bem, se chegámos ate aqui, parece que vocês podem ser a empresa indicada para o lugar.

Claro que ainda teríamos de falar sobre a qualidade do local de trabalho mas vou assumir que a empresa já assinou a “Programmer’s Bill Of Rights” portanto podemos passar isso à frente.

Depois disto, parece-me que tudo possa correr bem… mas não esperem que eu pare de chatear por aceitar entrar na empresa. Ainda há coisas que vou poder querer que aconteçam.

Por exemplo, nas empresas por onde passei sempre houve programadores bons e outros menos bons. Sim, é verdade, nem todos eram geniais. E, a não ser que esteja a ser entrevistado para uma empresa excepcional, de certeza que nesta se passa o mesmo. É que a qualidade dos programadores segue mais ou menos a seguinte distribuição:

dens_n01

Há uns bestas e há uns bestiais. E no meio estão os outros. E, fazendo parte da equipa, tendo de manter, alterar e apagar o código de todos eles, quanto melhor for a equipa, melhor para mim e para a equipa.

Assim, já pensaram em dar um dia de 15 em 15 dias para que os programadores possam rever código em conjunto na sala de reuniões, discutindo o que está bem e o que está mal? Ah sim, e vocês, não estão convidados. É que sabem, estas reuniões não são para serem usadas para fazer as vossas reviews sobre os elementos da equipa.  Queremos passar o conhecimento do programador bestial para os outros.

Mas estão convidados a trazerem os cafés a meio do dia para a malta aproveitar melhor o tempo, obrigado.

Na sequência do post que escrevi sobre aceder web services sobre https (SSL) achei que deveria escrever algo sobre como configurar o IIS para usar um certificado que seja criado e assinado por nós.

Como na net há tantas páginas a explicar como criar e instalar um certificado no IIS…  Deixo apenas a referência da Microsoft para o tookit.

Só mais uma dica.. Se quiserem instalar o certificado noutro website que não seja o principal do IIS, também precisam do Metabase Explorer.

É incrível como as maiores inovações no mundo Java raramente são implementadas pela Sun:

Sun found that by embracing standards over implementations, they spent long hours thrashing out specifications, only to provide instant credibility to other vendors’ products while their own languished. Weblogic stole the EJB early adopter window. A number of small vendors provided servlet implementations before Tomcat was born… which, although written by Sun employees, was an open-source project and yielded no financial benefit. JMS… well, JMS was always the redheaded stepchild of the J2EE family, at least until vendors like Sonic and Fiorano rescued it for the common Java programmer. (Those who’d been using IBM MQSeries all the while never really could see why you’d want to program against JMS APIs instead of IBM’s own.) In each and every case, Sun found their product to be the third or fourth entry into the race, usually years after the others had started, and as a result….

Hoje em dia, com a força com que a microsoft está a tentar aliciar os programadores, a Sun tem de mudar qualquer coisa para conseguir acompanhar os ventos de mudança. E apesar de achar que abrir a VM ao open source pode não ser o melhor (qualquer dia temos tantas versões da Java VM como temos de linux), ainda há projectos interessantes a seguir:

Groovy is like a super version of Java. It can leverage Java’s enterprise capabilities but also has cool productivity features like closures, builders and dynamic typing.

(…)

  • is an agile and dynamic language for the Java Virtual Machine
  • builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk
  • makes modern programming features available to Java developers with almost-zero learning curve
  • supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain
  • makes writing shell and build scripts easy with its powerful processing primitives, OO abilities and an Ant DSL
  • increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications
  • simplifies testing by supporting unit testing and mocking out-of-the-box
  • seamlessly integrates with all existing Java objects and libraries
  • compiles straight to Java bytecode so you can use it anywhere you can use Java
  •  

    Ah…! A nova Silver Bullet do Java!

     

    De certeza que já viram em algum lado que o Google lançou um novo serviço, o App Engine.

    Básicamente podemos fazer aplicações web e tê-las alojadas nos servidores do Google, usando a infraestrutura existente para conseguirmos escalar a aplicação. Giro. Infelizmente, temos de usar o Gython, uma versão do Python feita por eles. Usar um versão de acesso à base de dados… feita por eles. Fazer a aplicação e depois alojar noutro sitio qualquer? Esqueçam, tem de ser nos servidores deles.. Ah, e não sei se referi mas… não é grátis!

    Se isto fosse feito pela Microsoft, já só se ouvia falar de abuso de posição no mercado e monópolio, em que se pedia em todo o lado por multas em tribunal.

    Mas como é Google…

    Fica aqui um bom artigo sobre o destino do Java nas aplicações web. Lembrando que há quem considere os futuros SO’s como thin clients com um browser e aplicações online… Vejam, por exemplo, o YouOs:

     image

    Sim, é um sistema operativo a correr no meu browser, com consola de comandos, sistema de ficheiros, inúmeras aplicações, persistência de dados…

    Com as empresas a lançarem cada vez mais aplicações que também funcionam em modo offline… Está interessante!

    Esta semana tenho uma pausa do projecto em que estou na British Telecom para poder ajudar uma outra equipa da empresa a fechar um produto em Northampton. Assim fiquei com a responsabilidade de criar um validador de moradas lidas por um OCR.

    O interessante deste processo é que, para além das moradas lidas poderem estar mal pelo motor de OCR não conseguir retirar os caracteres correctos da imagem digitalizada, temos de lidar com o problema da intervenção humana..

    O endereço pode ser, por exemplo: “Flat 5, St. Mary Street, Bayswater, London, CV32 4DS”, ao que as pessoas podem apenas colocar “Flat 5, CV32 4DS”. Este endereço é, para todos os efeitos, correcto, pois identifica únicamente uma morada… porém, por se tratar de correspondencia com informações sensíveis, o cliente quer que estas moradas sejam traduzidas para a sua forma ‘normal’. Quando a este problema adicionamos o facto do motor OCR poder ler a morada como, por exemplo, “Flat S CU32 AD5″… torna tudo muito mais complicado.

    scantxt

    Assim criei um pequeno projecto que, fazendo uso de um webservice que retira possíveis resultados da base de dados do Royal Mail, tenta retirar a morada correcta, fazendo uso dos conhecidos problemas de OCR (A->4, 9->G, O->0, …).

    Como temos de garantir uma fiabilidade do sistema acima dos 85%, daqui a uns dias já consigo dizer se isto correu bem.. Mas para já, isto é providenciado sem qualquer tido de garantia. Para verem como usar… corram os testes unitários.

    Podem fazer download aqui aqui (gravar como e depois alterem de pdf para zip).

    Desde que experimentei a plataforma STDL que tenho andado a falar com o autor e a experimentar umas coisas… No sábado decidi fazer um AddIn para o visual studio para gerar os ficheiros STDL automáticamente da classe que estiver no momento aberta no editor.

    Depois de discutir isto com o Neville, decidimos incluir isto no mesmo projecto, com o objectivo de tentar no futuro usar o AddIn como forma principal de usar STDL’s em ambientes .Net.

    Apesar de ainda não estar concluido já se pode usar o menu de contexto do editor de texto para gerar o ficheiro STDL:

    STDLGenerator

    O ficheiro gerado é um stub e tem de ser depois concluido manualmente para ser realmente util. Para estar finalizado para já temos previsto:

    • Gerar dinamicamente o código sempre que se gravar o ficheiro STDL.
    • Usar o editor do VS para colocar côr em keywords da linguagem STDL, também mostrando erros sem compilar (como o resharper).
    • Usar o editor do VS para deixar fazer folding do código.

    Dado que este é o meu primeiro AddIn, se alguém tiver alguma dica sobre como fazer isto… :)

    Entretando podem ir ao site e fazer download, compatível tanto para o vs2005 como para o vs2008.

    View João Caxaria's profile on LinkedIn