Gestão, Manutenção e Inovação de Softwares

    A alguns anos eu falo e vejo acontecer de gestores trabalharem com suas equipes dando manutenção em softwares de seus clientes sem se preocupar em evoluí-los. Tendo apenas o trabalho de mantê-los. Grande e enorme erro de gerenciamento, pois é fato que softwares tem vida útil. O papel de um profissional que faz software é construir algo o melhor possível para seus clientes assim como em qualquer profissão. Fazer sistemas bem feitos, que tenham um planejamento para sua vida útil. Assim seus clientes o adorarão e falarão bem de você para outros. Sabendo que em alguns anos de acordo com o andamento do mercado e tudo mais o software dele já não o atenderá como antes. Ai entra aquele planejamento de evolução e inovação que a grande maioria não faz. Algumas poucas empresas tem inclusive equipes responsáveis pela inovação dos seus softwares. O grande erro é, na maiorira das vezes, por falta de conhecimento técnico, imaginar que lucrar com a manutenção de um software é apenas continuar mantendo-o no ar e de vez enquando criar algo novo que o cliente solicita. E não planejar ou calcular o óbvio que é saber o quanto de tempo(tempo = $) uma equipe vai gastar para desenvolver ou manter um software pois as diferenças podem ser enormes. Imagine que em um software com tecnologia java de 12 anos atrás, um cadastro com 10 campos e algumas regras de negócios poderia levar 1 semana para se desenvolver devido a tecnologia da época. Nos dias de hoje com as tecnologias java atuais pode-se desenvolver o mesmo cadastro em 1 hora ou menos. 
    O que quero passar aqui é que apenas ficar dando manutenção em um software legado imaginando que vai continuar tendo aquele lucro pode não estar errado. Mas se você mensurar que poderia desenvolver aquele mesmo software com tecnologias atuais em aproximadamente 40 vezes menos tempo que o legado. Poderia programar para um futuro próximo um lucro muito maior do que simplesmente dar manutenção e poder focar em novas funcionalidades e apenas em regras de negócios. Lembrando que sistemas legados muitas vezes dão mais dor de cabeça para continuar rodando do que implementar novas funcionalidades. E o mais importante: Os profissionais vão continuar tendo "TESÃO" de trabalhar. E a rotatividade das equipes vai diminuir com certeza.

Customizar um thema para primefaces-5.1 com jQuery 1.11.3


    Como acabei de testar, vou colocar aqui os passos rapidamente para quem estiver passando dificuldades. Depois deixarei o post melhor.

Eu tentei seguir este post: http://www.mkyong.com/jsf2/primefaces/create-a-custom-theme-in-primefaces/ mas ao segui-lo as coisas não rolaram como deveriam. Não que ele esteja errado mas o ThemeRoller com o jQuery na versão 1.11.3 agora não gera o thema conforme ele explica com as pastas cssdevelopment-bundle e js folders. Agora ele gera pastas neste formato:


Então os passos que eu consegui pra conseguir utilizar o thema neste formato são:

1 - Após customizar o thema, gerar o zip
     com o toogle all deselecionado E com a versão 1.10.4 selecionada.




2 - Descompactar o zip e fazer como o post mencionado:

3 - Entrar na pasta jquery-ui-1.10.4.custom/css/nome-to-thema e alterar o nome do arquivo jquery-ui-1.10.4.custom.css para theme.css

4 - Editar o arquivo theme.css e substituir as seguintes linhas:
url(images por url("#{resource['primefaces-nome-do-thema:images


.png por .png']}"

5 - Editar no web.xml a configuração do thema:


6 - Copiar a pasta images e o arquivo theme.css para dentro da pasta /projeto-war/src/main/webapp/resources. Buildar e rodar.

Thema customizado:





Weblogic - The user must supply a JDBC connection ?


Yes, you must put that configuration on your config.xml:

<jdbc-system-resource>
  <name>TestXADS</name>
  <target>AdminServer</target>
  <descriptor-file-name>jdbc/TestXADS-jdbc.xml</descriptor-file-name>
</jdbc-system-resource>
 But, You must restart the server after that.

And another detail:

If you are using oracle, I d'ont know why but you cannot use this:
name="hibernate.hbm2ddl.auto" value="create-drop" />

You only get use with this:
 name="hibernate.hbm2ddl.auto" value="update" />

My opinion? Weblogic is a shut. JBoss as releases are the best.

Como desenvolver software em ambientes adversos


    A algum tempo eu observo ambientes de trabalho em empresas de desenvolvimento de software. Em especial empresas que mantém muitos desenvolvedores em um espaços muito pequenos. São diferentes equipes , diferentes tecnologias, diferentes projetos, estimativas curtas e opiniões contrárias. Ou seja, a "palha" para explodir um ambiente. E como colocar fogo nisso? Conversando e muito.  Em uma empresa em especial observei um ambiente com 16 pessoas em uma sala de 24 metros quadrados incluindo banheiro e sala de reuniões de 5 lugares.

    As pessoas começavam a chegar no trabalho pelas 7h da manhã. Geralmente quem chegava primeiro fazia o primeiro café do dia. Detalhe: Com apenas uma cafeteira de 1.5 litros para todos. Isso por si só gera um custo altíssimo em torno de R$-8.000,00/ano levando-se am conta o custo/hora do profissional que pára de trabalhar para fazer café incluindo o custo de cada colher e outros fatores como a média de cafeteiras feitas por dia. Enquanto que se tivesse uma cafeteira de 6 ou 9 litros faria-se café apenas uma vez por dia e o custo baixaria para R$-1.500,00 por ano. Mas não irei detalhar este tipo de cálculo agora.

    Mas vamos a produtividade. É fato que num ambiente de desenvolvimento de software não se trabalha realmente mais do que 80% de todo o horário comercial. Pensando no tempo gasto indo ao banheriro, reuniões e ou discussões necessárias ou não. Se fosse sempre assim até seria uma boa média. Só que no final é pior porque, em média, apenas 50% dos dias em que se espera ter aqueles 80% produtivos são realmente assim. Pois nestes esperados(inesperados) 50% acontecem sempre coisas para diminuir nossas estimativas.

    Acontecem coisas como problemas de infra-estrutura, tempo de gerenciamento seja ele auto ou para a equipe, reuniões não programadas junto as estimativas ou que não sejam relacionadas ao trabalho de desenvolvimento, pessoas que chegam ao ambiente trazendo demandas ou cobrando algo para a equipe em voz alta ou achando que estão contribuindo para maior agilidade no cumprimento de tarefas. Sem falar em falhas técnicas ou no que menos se dá importância: Processos. Sim processos. Empresas que tem até uma lindíssima descrição, não seguem o seu próprio processo. Começando por aqueles que deveriam dar o exemplo infelizmente. Esquecem-se de que até uma reunião de RH deveria ter um agendamento e registro de participação dos envolvidos. Ou seja, MONITORAMENTO. Puro e simples.

    E, ao levar em conta o que foi mencionado no primeiro parágrafo sobre muitas pessoas em ambientes pequenos chega a diminuir a produtividade de algumas pessoas em mais de 50%(dos 50% já mencionados).

    Ou seja, uma pessoa que ganha R$-2.000,00 que renderia normalmente R$-1.600,00 tem seu rendimento baixado para R$-800,00 devido a acontecimentos inesperados e baixado para R$-400,00 devido perda de concentração em ambientes com muitas pessoas. Não esquecendo que a empresa continua com um custo em torno de R$-4.000,00 levando em conta os encargos que a empresa precisa arcar com o contratado.

    No final, há melhores maneiras para conseguir trabalhar em ambientes em que não possuem processos é montar seu próprio processo de trabalho individual. Utilizando uma ferramenta pessoal para se organizar. E para o barulho nada melhor do que, após organizar seu trabalho, colocar um bom ou excelente fone de ouvidos, programar suas músicas preferidas ou rádio e esquecer do resto da empresa. Para que assim voce consiga render por volta de 45/50% a mais daqueles primeiros já perdidos pela desorganização dos processos e perda de foco. Se você for um desenvolvedor que normalmente rende mais que o resto da equipe então tudo bem. Você voltou a média que deveria ter mantido. ;)