domingo, 28 de julho de 2013

Produzir mais em menos tempo.

   O sonho de todos os gerentes ou líderes de projeto é ter uma equipe que produz mais em menos tempo e com qualidade, mas isso é possível ? Qual a vantagem para uma equipe de desenvolvedores produzirem mais em menos tempo? Sim, é possível, com planejamento e técnicas de gestão de tempo podemos produzir mais em menos tempo e com isso teremos entregas no prazo, sem estender o horário ou trabalhar em finais de semana.
Por que não temos tempo?

 
  Existe um mito no mundo corporativo que todo profissional competente precisa ser super ocupado, ter milhões de coisas para fazer e nunca ter tempo para nada, mas isso é uma mentira que muitos de nós vivemos, a verdade é que precisamos de tempo para nossos relacionamentos, para diversão, para aprimorar nossos conhecimentos, conhecer coisas novas, aumentar nossos horizontes e é claro precisamos descansar, só assim entraremos em um ciclo de prosperidade profissional e pessoal.
Mas se queremos ter mais tempo precisamos primeiro entender como gastamos nosso tempo, como ele vem sendo utilizado no dia a dia, basicamente utilizamos nosso tempo em 3 tipos de atividades : Importante, Urgente e Circunstancial.
Importante são todas as atividades que tem prazo definido e trará resultados seja em curto, médio ou longo prazo.


 
  Urgente são todas as atividades para qual o prazo terminou ou estão curtas demais e precisam ser feitas imediatamente, são as que em geral as que trazem estresse ou pressão. Podem até trazer resultados, mas será um resultado estressante, pressionado e corrido.
Circunstanciais são todas as atividades que desperdiçam nosso tempo, são feitas sem total vontade ou que nos sentimos pressionados a fazer e não nos trazer resultados algum.
Não existe nada que seja importante e urgente simultaneamente, devemos pensar assim: se precisamos levar o carro pra consertar um barulhinho é algo importante. Se o barulho cresceu e impede o carro de andar, ir ao mecânico se tornou algo extremamente urgente. Separando as esferas, fica muito mais claro identificar como gastamos nosso tempo.
Não temos tempo porque ocupamos nossa agenda com coisas urgentes e circunstancias quando o ideal é manter o foco na esfera do importante.


Dando foco ao importante:


1.Estabelecer Metas

  Uma meta é sólida e feita de fatos, metas ajudam a alcançar nossos objetivos. Metas fazem que nosso tempo esteja focado em coisas realmente importantes que nos ajudam a motivar e alinhar nossas ações. A cada meta alcançada nos motivamos para alcançar novas metas e superar obstáculos.

2. Estabelecer planos de ação

  Pouco importa se é um objetivo simples ou complexo após definirmos nossas metas devemos estudar estratégias para atacá-las criar um plano de ação eficaz a fim de economizar tempo, devemos definir o que precisa ser feito a cada dia e completar uma meta semanal e enfim concluir objetivos com o passar do tempo.

3.Conduzir a execução do plano
 
  Devemos focar nas metas, garantir que elas sejam executadas com qualidade, que estejam no prazo e que sejam concluídas.

4.Verificar o sucesso da meta
    
  Devemos testar e verificar se nossa meta realmente foi atingida, se o que foi desenvolvido funciona como planejado, se está feito do jeito que deveria ser feito, não devemos chegar ao objetivo para identificar uma falha em uma das metas.

5. Tomar ação corretiva no insucesso

 
  Caso a meta não tenha sido alcançada devemos re-planejar o plano de ação e corrigir a falha e verificar novamente se a meta foi atingida.

6. Padronizar e compartilhar no sucesso.


   Devemos compartilhar o sucesso, se algo deu certo, se está gerando resultados, toda equipe deve compartilhar tal conhecimento quando se trabalha em equipe o sucesso pertence a todos e o fracasso também, atividades urgentes são urgentes para todos e devemos evitar isso compartilhando o sucesso e criando padrões.


Gerenciando o tempo:

1.Automatize
 
  Automatizar significa colocar o maior numero de atividades no piloto automático, como testes publicações, merge, preenchimento de formulários etc., ao automatizar atividades podemos ocupar nosso tempo com o que realmente é importante. O que não deve ser automatizado são tarefas estratégicas, decisões importante, definição de metas, feedbacks, planejamento em equipe, coisas especificas ou de responsabilidade única.

2.Organize


 
  Se organizar significa não perder tempo procurando algo, mantenha organização do código fonte do projeto, dos documentos funcionais, arquivos para teste, links de aplicações externas, ferramentas de auxilio e etc. Crie uma base de conhecimento pessoal, guarde conteúdos que pode ser úteis em um único lugar, facilitando a busca quando necessário. Devemos manter um único padrão de organização para não criamos uma falsa organização que nos deixa confusos do mesmo jeito.

3.Reconheça suas distrações
 

  Todos nós temos um ponto fraco que tira nossa atenção ao longo do dia de trabalho. Pode ser a emails, telefonemas, sms, msn, facebook, pessoas ou qualquer coisa que faça com que nosso tempo seja gasto a toa. Devemos descobrir quais as nossas maiores distrações e se afastar quando realizar-mos atividades complexas que requer concentração, devemos focar somente naquela atividade sem interrupções fechar os olhos para tudo que não seja relacionado a nossa atividade.

4. Microgerenciamento X Macrogerenciamento

  Microgerenciamento é cuidar dos detalhes, de pequenas tarefas. Macrogerenciamento é cuidar dos indicadores do projeto, da equipe, do andamento das atividades e metas, ter uma visão do todo. Nós desenvolvedores devemos focar em média 30% no macro e 70% micro, já um gestor deve se preocupar com o contrario.

5. Faça pausas, mas não faça multitarefa
    

  Fazer pausas eventuais para atividade que realmente gostamos tira a linearidade e ajuda colocar um pouco de lazer em nosso trabalho. Isso ajuda a recarregar as nossas baterias, afastar o estresse e aumentar o ritmo produtivo. Quando estamos estressados e sem energia temos maior tendência a fazer muitas atividades ao mesmo. Esse é um dos piores hábitos que podemos ter pois piora o estado de cansaço e falta de foco sem contar que é mais suscetível a erro.

6. Descubra seu ponto produtivo


  Perdemos muito tempo fazendo coisas certas na hora errada, o corpo tem u ritmo natural de funcionamento com momentos de alto e baixo desempenho, devemos identificar esses momentos e fazer atividades complexas em momentos de alto desempenho.

7.Delegue corretamente
    

  Delegar nos ajuda a ganhar tempo, mas há quem não delegue por que não confia no outro ou acha que a pessoa que receberá a tarefa não ira realizá-la corretamente. Ouvimos bastante a frase: “Se quiser bem feito faça você mesmo”. A verdade é que 99% dos casos de erro, a culpa não é do executor, mas da pessoa que delegou. Quando delegamos temos uma imagem mental do que deve ser feito devemos transmitir todos os detalhes que imaginamos para o executor, mostrar algo semelhante, dar exemplos e até mesmo pedir para outra pessoa que também tem o conhecimento explicar novamente. Detalhamento é fundamental e quanto mais melhor.
   Devemos delegar de manhã, pois em geral é o período de maior produtividade e também ajuda o executor definir prioridades, devemos delegar com antecedência para evitar atividades urgentes e por fim devemos explicar por que a atividade é importante

8.Diga pelo menos um não por dia


  Não é fácil dizer não, mas quando dizemos apenas sim o numero de atividades circunstanciais cresce e ficamos com a consciência pesada, pois não conseguimos cumprir nossas metas. Negociar prioridades com a equipe e com o seu líder é a chave do sucesso se tivermos um planejamento semanal e metas diárias, podemos mostrar quais são nossas prioridades e justificar um não, em caso de alguém da equipe pedir ajuda, podemos citar lugares que fazem algo parecido ou algum outro membro que possa ajudar.

9.Aplique a colaboração

  Utilize ferramentas para compartilhar conhecimento, manter todos informados do que está acontecendo e impedimentos, ferramentas de instant messenger ajudam na comunicação, devemos manter constante comunicação com os membros da equipe a fim de compartilhar idéias, apontar impedimentos e definir estratégias, podemos usar o blog para compartilhar conhecimento, vivemos em um mundo conectado onde podemos compartilhar conhecimento online e em tempo real, devemos utilizar a tecnologia para ganhar tempo e aplicar a colaboração.

10.Priorize suas tarefas
 

  Devemos enumerar nossas atividades, eliminar o urgente, fazer primeiro o mais fácil e mais rápido e priorize conforme seu bio ritmo.

Referencia: Mais tempo mais dinheiro - Gustavo Cerbasi & Christian Barbosa

domingo, 7 de julho de 2013

Sobre ser um bom programador.

Olá tudo bom ? Há um tempo tenho a vontade de compartilhar meus pensamentos, vou falar sobre desenvolvimento de software, programação,gestão de tempo e desenvolvimento pessoal e profissional, espero que eu possa aprender muito com o blog.

Nestes últimos dias venho pensando muito sobre o que é ser um bom programador, sempre que busco informações sobre o assunto na internet, encontro artigos citando características como  gostar de resolver problemas, ser curioso, autodidata e estudar muito, eu concordo com isso, mas acredito que estas características são genéricas a ponto de servirem para qualquer profissão, ao analisar as características técnicas dos melhores programadores que conheci cheguei a conclusão que um programador deve saber essencialmente  programar, refatorar e testar.  

Sobre saber programar



           Escrever sistemas não é fácil, são prazos apertados, cobrança do cliente e falta de do conhecimento adequado para aplicar as melhores soluções, mas temos a obrigação como profissionais de dar a melhor solução possível com o tempo estimado e pago por aquela solução, programadores devem saber exatamente o que estão fazendo e o porque esta fazendo, devem saber escrever um código de forma clara e simples,  conhecer e aplicar técnicas de desenvolvimento e padrões de projetos, ou seja uma solução deve ser simples, reutilizável e de fácil manutenção.

Sobre saber refatorar



           Refatoração é o processo  de alterar algo de forma que o comportamento se mantenha, refatorar garante a melhora continua ,  o  programador deve saber alterar estruturas, separar responsabilidades, renomear variáveis  sempre mantendo  o comportamento existente, a cada manutenção ou iteração o código deve estar melhor escrito e organizado sem que isso venha causar efeitos colaterais e assim garantir a melhora continua do sistema.

Sobre saber  testar


           Chegamos ao ponto mais importante de todos, testes nos garante uma funcionalidade, saber escrever testes e testar o código faz toda a diferença,  ao garantir o funcionamento estamos seguros que podemos refatorar e melhorar o código, não teremos surpresas com efeitos colaterais e o sistema pode crescer com uma melhora continua.

Concluindo, para ser um bom programador devemos focar nossos estudos em saber programar tendo conhecimento aprofundado sobre o que estamos fazendo e porque estamos fazendo, devemos refatorar para  garantir a melhora continua do sistema e saber testar para termos segurança no processo de desenvolvimento e de refatoração.