quinta-feira, 15 de dezembro de 2011

Alguns pontos de vista acerca do Mercado de T.I

Motivado por alguns debates  que volta ou outra  reaparecem na comunidade de desenvolvimento brasileira resolvi escrever um  post  com dois dos principais assuntos discutidos para expressar minha opinião .
Então vamos aos pontos de discussão:
1- Muitos programadores sem qualificação nenhuma nas entrevistas de emprego:
Bem isso é verdade até certo ponto, realmente existem muitas pessoas desqualificadas  ou pior,  acomodadas que pararam no tempo e não procuraram evoluir. Evolução tem que ser algo constante para o profissional de T.I, mas existe também outro lado da moeda  que são algumas empresas que utilizam de uma política onde as exigências para as vagas são inversamente proporcionais aos salários oferecidos, logicamente  se você não oferece um bom salário e  uma boa condição para o profissional qualificado exercer bem sua função você não poderá exigir que bons profissionais participem do seu processo de seleção se quer ótimos profissionais ( e no mercado existe sim muitos) então pague salários equivalentes ao seu conhecimento, pois o profissional pra chegar aquele nível estudou bastante, perdeu varias horas pesquisando e gastou muito dinheiro com livros e cursos então merece um salário digno.
O que acontece é que muitas empresas não costumam olhar para ela mesma para assim conseguir enxergar onde está falhando  ficando muito mais cômodo acusar o mercado de não ter pessoas qualificadas, até por que ela por mais que tenha trabalho para preencher a vaga sempre encontrará profissionais se vendendo muitas vezes a preço de banana.

2-Apagão na Área de T.I:
Isso é um fato hoje  estima-se que o déficit de profissionais chega a 73mil  e que até 2013 chegará a 200 mil. Essa necessidade não deve ser suprida pelo menos nos próximos 20 anos pois por mais que surjam mais cursos para área o numero de profissionais nunca conseguirá chegar nem perto  do numero de vagas em aberto  já que demora-se um tempo para formar um profissional com o mínimo de requisitos  necessários para o mercado de trabalho, em contra partida a cada minuto surgem novas necessidades  e essas exigem mais profissionais provendo soluções. 

Conclusão  empresas que não querem correr o risco de perder um profissional qualificado ou que deseja contratações de tais profissionais, deve pagar um valor justo e  prover boas condições de trabalho, lembrando que nem sempre um maior salário prende o funcionário na empresa se a mesma não tem um ambiente descontraído  e agradável para trabalhar.
Na minha opinião tão importante quanto a contratação de uma mente “brilhante” é a contratação de pessoas engajadas e que tenham gana e força de vontade para aprender e evoluir, não adianta você  ter o bambam bam na sua empresa se o mesmo não é comprometido com os objetivos da mesma. Investir em profissionais ao contrario do que muitos empresários pensam não é perca de dinheiro pois mesmo  quando o funcionário sair você terá utilizado  o conhecimento enquanto ele foi seu empregado então ele agregou valor a sua empresa e produto.

segunda-feira, 24 de outubro de 2011

Trabalhe em equipe com o Trello

Nesse post vou falar um pouco de uma aplicação web muito bacana para quem trabalha em equipe e principalmente para quem tem equipe distribuída geograficamente, essa ferramenta chama-se Trello e como seus desenvolvedores a intitulam ela serve para "juntos organizar qualquer coisa ". Trello é uma ferramenta para gerenciamento de atividades que funciona como uma rede Social onde é possivel criar um Board (projeto) e adicionar os membros da equipe para que todos possam verificar o andamento das tarefas em tempo Real, a sua grande vantagem  é que ela tem uma interface bem limpa e ao mesmo tempo robusta, além de seguir o conceito dos "Kanbans" onde tem-se originalmente 3 estágios de tarefas (ToDo, Doing e Done) mas nada impede que seja criada um novo estágio como por exemplo Tests. 

A praticidade impera nessa ferramenta,  com o conceito de drag-and-drop o usuário pode facilmente modificar o status de uma tarefa, passando por exemplo de Doing para Done. Como quase todas ferramentas para gerenciamento de tarefas ela mantém um histórico de status das atividades, permite também anexar arquivos aos "Post-its" seja ele pdf, imagem ou até txt  (Até agora não vi nenhuma restrição quanto a extensão de arquivos). 

Como já mencionei anteriormente um diferencial  do Trello é que os membros das equipes conseguem  informações em tempo real do andamento das tarefas, uma vantagem também  para quem  trabalha com clientes que acompanham de perto o o curso do projeto.

Já estou utilizando a aplicação em dois projetos e só tenho referencias boas a dar sobre ela.
Para quem se interessou em saber mais sobre o Trello segue abaixo o vídeo demonstrativo e a  url de acesso da app :



domingo, 9 de outubro de 2011

Técnica de Pomodoro

Bom o intuito desse post é apresentar uma técnica não muito conhecida mas que pode proporcionar um ganho significativo na produtividade de um sistema,  principalmente para quem trabalha com pessoas ou equipes que costumam perder o foco com muita facilidade.

A definição da "The Pomodoro Technique" é que ela  é uma forma de tirar o máximo proveito do tempo de gestão. Foi criada em 1980 por Francesco Cirillo e basicamente a técnica  consiste em  dividir suas tarefas em períodos de 25 minutos chamados "pomodoros"  esse termo vem por conta da utilização de um timer de cozinha  que servia para registrar o tempo exato que era preciso para preparar um extrato de tomate.


Sua eficácia está em manter a pessoa ou equipe focada no objetivo por aquele período de tempo, no caso 25min,  passado  esse tempo a equipe tem um intervalo de 3 a 5 minutos para se distrair e relaxar um pouco, a cada  4 pomodoros o intervalo de descanso deve ser de 15 a 30 minutos.


As etapas de planejamentocontrole de tempogravação de registros e visualização são fundamentais para a técnica.
Na fase de planejamento de tarefas são priorizadas as mais urgentes, o objetivo da técnica é reduzir as interrupções que acabam ocorrendo quando não se tem o controle do tempo, consequentemente atrasando tarefas que tenham uma certa urgência.


Embora essa técnica seja bastante usada para trabalhos onde existem prazos apertados de entregas, ela não serve só para isso, pode ser usada em qualquer segmento que precise de concentração e foco, tanto que seu uso inicial foi para os estudos já que o criador da técnica não tinha concentração para ficar muito tempo na frente dos livros.
Hoje sabemos como as redes sociais contribuem cada vez mais para que as pessoa percam o foco facilmente na realização de tarefas do dia a dia.


Eu tenho um grande problema de concentração  e isso me fez ir em busca de técnicas que fizessem aumentar meu foco e concentração no trabalho, a pomodoro foi a que mais me fez ganhar produtividade. Comecei a usa-la  á 20 dias e posso afirmar que a produtividade aumentou 100%.
No começo os 25 minutos iniciais demoram a passar e você por não estar acostumado ao foco acaba sentindo, mas posso afirmar que com o passar do tempo a pessoa fica tão focada no trabalho que muitas vezes passa a nem utilizar mais o tempo de descanso e encaixar sprints atras sprints sem utilizar o intervalo de descanso (isso segundo alguns é errado).


A técnica é bastante interessante e eficaz, alguns relatos de amigos dão conta que suas  equipes precisavam entregar alguns itens que se não fosse pelo pomodoro levariam 2 dias para concluir o trabalho, e com o pomodoro levaram menos de um dia para realizar todas as tarefas.


A grande vantagem dessa técnica é que para ser aplicada basta uma folha de papel para listar os objetivos a serem cumpridos e um relógio para marcar o tempo dos pomodoros. Existem algumas ferramentas para quem usa smart phones  tanto iphone como androids, pcs e até onlines  que auxiliam a marcar o tempo e as tarefas  a serem realizadas.
Até hoje não consegui enxergar nenhuma desvantagem no uso dessa técnica e quem quizer saber mais a respeito ou até mesmo ser um "certified pomodoro master" basta acessar a página oficial:  http://www.pomodorotechnique.com/

terça-feira, 17 de maio de 2011

Java pede Respeito

Ultimamente tenho ouvindo muito desenvolvedor  “trolando” o Java  falando que não presta, que é ultrapassada,  até parece que agora a "coqueluche" (é o novo) do momento é falar mau do Java para parecer  “ O cara descolado”,  não entendo tal comportamento e pude presenciar  muita arrogância de certas pessoas que por estarem agora trabalhando com outras linguagens da moda tais como Ruby ou JavaScript, querem desmerecer a linguagem que na maioria dos casos foi o seu ganha pão por tempos e o iniciou no mercado de desenvolvimento de software, isso  quando não foi  pior (quando sua base e sua iniciação no mercado foi com PHP).
 Vi teorias de que essa má fama do Java deu-se por conta do JSF ou como preferem JSFAIL, me  admira pessoas que parecem tão esclarecidas não saberem distinguir um framework mau sucedido de uma linguagem que esta no mercado a anos com inumeros exemplos  de sistemas bem sucedidos e implantados em grandes empresas ao redor do mundo , esquecem que essa mesma linguagem tão mau falada possui ótimos frameworks como Spring, Hibernate?? 
Você que acha que Java não presta mais para nada deveria saber  que no desenvolvimento não existe silver bullet  e como não existe nenhuma linguagem milagrosa que resolve todos os problemas do mundo também não existe nenhuma linguagem  pereba, tudo depende do seu propósito,  Java não morreu e não morrera tão cedo, como muitos torcem ou fingem que torcem,  Java vive e pede respeito, abra sua mente não seja um radical e preconceituoso. 

segunda-feira, 11 de abril de 2011

Compilação de dicas Ireport

           Ultimamente venho trabalhando muito com relatórios feitos no Ireport (até mais do que eu gostaria) e como sei que é difícil conseguir boas dicas, resolvi fazer uma compilação de dicas aqui para quem passa por alguns “perrengues” com essa ferramenta.

  Passar uma lista como datasource de um subrelatorio

            Deve-se usar essa expressão no datasourceconection do subrelatorio new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{Lista}) 
           O field Lista é a lista de objetos que deseja que seja passado para o relatório.
           No subrelatorio se quizer pegar os atributos do objeto da lista é so declara-los como Field que o jasper vai fazer o papel de mapea-los para você.




         Na imagem acima tenho o meu field $F{servicos}  que é do tipo List

Não passar nenhum dado para o Subrelatorio e mesmo assim fazer com que ele abra


          Basta usar a seguinte expressão  new JREmptyDataSource(), com isso o relatório ira abrir sem precisar de  valor algum.


 Criar uma expressão para se verdadeira imprimir o relatório ou campo do relatório

          Se quiser que o relatório ou algum campo dele só imprima de acordo com alguma condição    basta colocar um teste booleano na propriedade print when expression                                                         
               Ex:  new Boolean($V{campoDouble}.doubleValue()>0) Nesse exemplo só sera impresso se o campo for maior que zero. A imagem abaixo ilustra esse exemplo:




  Passando um Mapa como parâmetro

         Declara-se um Field  do tipo Map 
         Ex: org.apache.commons.collections.map.HashedMap 
         Nesse exemplo usei HashedMap, mas poderia ter sido usado qualquer outro tipo de   mapa,no relatório que ira receber o Mapa como parâmetro será preciso declarar uma variável, seta-se o variable class com o caminho da classe que está sendo salva no mapa 
         Ex: com.meuprojeto.to.MinhaClasseTO 
         No variable expression coloca-se a chave que irá pegar o valor do mapa.
           
        Ex:$P{meuMap}.get($F{valorDaChaveMapa}), depois no Field do relatório é so pegar o valor assim: $V{minhaVariavel}.geMeuAtributo()


Passando uma lista de Strings para o subrelatorio


        Se quiser passar uma lista de Strings para um subrelatorio e recuperar os valores deverá declarar o field com a expressão $F{_THIS},  com isso conseguira recuperar os valores da lista.


 Criando um texto  que precise conter uma palavra em negrito no meio


         Se precisar inserir uma palavra em negrito no meio de um texto, como feito nessa frase, basta setar o Markup como styled e  usar a tag <style isBold="true"> No texto Negrito </style> como na imagem abaixo:

domingo, 20 de março de 2011

BrazilJs vai perder??


Vem ai um dos maiores eventos de JavaScript do Brasil, dias 13 e 14 de Maio e ai vai perder??
Link do site do evento para maiores informações e inscrições.  http://braziljs.com.br/2011/#!/home

terça-feira, 8 de março de 2011

Criando Jar com as fontes do Jasperreports

Vou ensinar nesse post como criar um jar que contenham  as Fonts do jasper, evitando que eles fiquem espalhados na aplicação, com esse jar além de ser um meio mais elegante de ter as fonts no projeto, diminui também o tamanho do mesmo. Originalmente os fonts ficavam dispostos da seguinte maneira:


No caso precisava da fonte arial narrow para impressão em formato PDF, então era necessária a sua instalação na aplicação para ser reconhecida pelo jasper.

Primeira coisa que se deve fazer é instalar as fontes no Ireport, para isso vá em Ferramentas, depois Opções, irá abrir uma janela, clique na opção Font. Clique em instalar fonts, e escolha as que deseja utilizar na aplicação:

Após a instalação iremos criar o JAR para ser usado na aplicação. Clique no nome da font que acabou de criar e depois Export as extension, escolha o diretório que deseja salvar e pronto, está criado seu jar com as fonts necessarias para sua aplicação:

Pronto depois é só colocar o jar criado no Build Path da sua aplicação, como mencionei anteriormente essa solução é mais elegante pois não deixa as fonts soltas na pasta do projeto ela economiza espaço no meu exemplo o tamanho do projeto caiu em quase 2 megas com essa solução.

quinta-feira, 10 de fevereiro de 2011

Instalando o Git Gui

                 Ontem escrevi um post ensinando como instalar e configurar o Git Gui, e  hoje por coincidência vejo um tweet do JavaFree  falando sobre o ScrenCast do Adilson Carvalho, onde ele explica a instalação do Git, achei muito interessante e por isso tomei a liberdade de postar o link do ScreenCast para complementar o post anterior.

http://vimeo.com/17798986

quarta-feira, 9 de fevereiro de 2011

Configurando o Git Gui

               Bem resolvi mi aventurar pelo Git Hub, um pouco tarde eu sei mas antes tarde do que nunca  :) e mi deparei com alguns problemas na hora de configura-lo, por isso resolvi fazer esse post para ajudar a quem esteja passando pelo mesmo problema. 
              A primeira coisa que deve-se fazer é criar a sua conta no site acessando aqui  após isso baixe o aplicativo no endereço  http://git-scm.com/download existe versões para windows, Mac e Linux, no meu caso baixei a versão para windows após baixar instale-o.

               Ao executar o Git Gui pela primeira vez ele irá abrir a tela abaixo, você tem que criar o diretório que estará seu projeto "passo 1" no "passo 2" você irá indica o caminho. Obs: o projeto deve está dentro de um diretório pai.

            
             Após indicar o diretório onde fica seu projeto teremos que configurar a conexão, primeiro teremos que adquirir uma chave SSh, vá no menu help e click em Show SSH Key,  nesse momento irá abrir uma janela para gerar a chave, click em Generate Key, então irá abrir outra tela que irá pedir para que se insira uma senha (insira uma senha que seja fácil de lembrar)

   Será gerada uma chave copie toda ela e insira na sua conta do git hub, dê um titulo para ela, isso é importante por que essa chave é por computador então se for acessar através de outros computadores  precisará diferencia-las.

             Pronto inserida a chave vamos configurar a conexão, no menu Edit click em Options, iremos inserir o username e o email nos campos circulados.

          Agora adcionaremos uma conexão remota no menu vamos no Remote e clicar no Add, irá abrir uma janela e você terá que preencher o campo Nome: com o nome do projeto e o campo Location com a Url gerada pelo Git hub para seu projeto. Ex: git@github.com:tiagoribeirof/SPB_WEB.git.
          Para testar no mesmo menu Remote  vamos clicar no fetch from  irá abrir uma janela que perguntará se deseja sincronizar, então é só escrever "yes" após isso abrirá outra janela pedindo "passphrase"  que é justamente a senha que foi inserida para gerar a key, se tudo ocorrer direito irá informa-lo que foi sucesso. 

             Pronto está feita a configuração agora é só comitar seu projeto e partir para o abraço, espero que esse post tenha ajudado.






domingo, 16 de janeiro de 2011

Benchmark

             Como prometido começarei a falar de alguns assuntos abordados no meu TCC, no post de hoje falarei sobre Benchmark. 
             Benchmark é o processo de comparação de operações de uma maneira que produza resultados quantitativos, essa tecnica é muito util para medir desempenho de uma aplicação, e é usada tipicamente para medir o tempo que se leva para realizar determinada tarefa.
             Existem diversas ferramentas que podem ser usadas para realizar esses testes de desempenho, elas já possuem alguns testes pré-definidos e mais complexos, mas nesse post vou falar de  uma técnica simples que pode ser usada pelo desenvolvedor em qualquer tipo de linguagem ou programa para auxilia-lo na medição de desempenho de sua aplicação, trata-se do Cronômetro Benchmark, que nada mais é que o uso de um relógio para medir o tempo que se leva para concluir determinada tarefa, aqui mostro a sua implementação no Java.
             Abaixo o exemplo de uma classe desenvolvida para simular o comportamento de um relógio, onde tenho 4 métodos: O start() responsável por iniciar o tempo, stop() que  interrompe a contagem do tempo, getTempoDecorrido() como o próprio nome  diz retorna o tempo decorrido entre o inicio e o fim da contagem do tempo e por ultimo o reset() que zera o relogio.

       O cronômetro pode ser usado por exemplo para medir o tempo que se leva para percorrer um laço:

       O tempo foi iniciado fora do laço e após ser percorrido todo o laço o tempo é parado e é obtido o tempo decorrido, assim pode-se ter uma noção do tempo de processamento desse laço de repetição e verificar se está tendo alguma perca de performance.
       Esse simples benchmark  que acabo de demonstrar pode ser de grande utilidade na medição de desempenho, com ele pode-se descobrir se sua aplicação está demorando muito tempo para realizar determinada tarefa, é interessante para identificar o porque de determinada operação está consumindo muito tempo e assim podermos otimizar seu processamento. Espero que essa pequena explicação seja útel, mais a frente voltarei a falar sobre o assunto, mostrado o uso dessa técnica de cronômetro para medir o desempenho de diversas estruturas de dados do Java.


    

segunda-feira, 10 de janeiro de 2011

TCC Concluido

Pronto TCC concluído e apresentado, graças a Deus mi formei, o tema foi Entendendo a Performance em Aplicações Java, foi muito trabalhoso, mas mi agregou muitos conhecimentos, agora terei mais tempo para postar aqui, postarei alguns tópicos importantes sobre minha monografia, e voltarei a postar sobre o SCJP afinal, tive que dar uma parada mas não desisti de fazer a prova! Abraço  a todos e até mais.