Melhoria Contínua começa em nós

Posted by Emerson Macedo on agosto 31st, 2009

Nos últimos tempos tenho me interessado bastante sobre alguns pontos que considero fundamentais em agilidade e sustentabilidade de um projeto e/ou de uma empresa. Um desses pontos, acredito que seja a melhoria contínua (e.g. kaizen e hansei). Muitas empresas tem buscado isso de diversas formas (muito interessantes por sinal), mas eu acredito fortemente que a melhoria contínua começa em nós, profissionais da área em questão. Sem que nós estejamos comprometidos em melhorar continuamente como profissionais e como pessoas,  melhoria contínua (e.g.  kaizen e hansei) pode acabar se tornando uma espécie de utopia, pois se as pessoas não melhoram, não tem como a empresa melhorar.

Sobre a melhoria contínua, vou focar aqui nos aspectos (1) errar e (2) compromisso com a mudança.

Errartela_azul

O erro sempre foi um tabu nas empresas. Errar sempre foi considerado sinônimo de fraqueza ou incapacidade. No modelo que estavamos acostumado a trabalhar, erros geralmente eram punidos com severas advertências, demissões e/ou humilhações. No modelo em que estamos tentando trabalhar, os erros devem ser vistos como oportunidade para crescermos e melhorarmos como indivíduo e como profissional. Dessa forma, errar faz parte do processo, já que inevitavelmente erraremos algumas vezes ao longo da jornada.

Compromisso com a mudança

Quando pensamos em compromisso com a mudança no nível da empresa, talvez seja mais fácil, mas quando pensamos para o nível pessoal, complica um pouco. Mudar manias, paradigmas pessoais e outras coisas mais, geralmente é um processo bemmmm complicado. Porém, essa é a oportunidade que temos para aplicar na prática o que aprendemos com os nossos erros.

O compromisso em melhorar é fundamental para que haja resultados práticos. Errar e não melhorar, repetindo os mesmos erros, faz com que de nada tenha servido a oportunidade de reflexão.

Nosso papel quando os outros erram

Quando um colega seu errar, ajude. Criticar, humilhar, querer ver o mau dessa pessoa, de nada ajudará. Isso só fará com que você esteja piorando como profissional e como pessoa. Se for possível, ajude, se não for, torça para que essa pessoa consiga usar seu erro como uma oportunidade de melhoria. E não se esqueça: você também erra e vai continuar errando.

Testemunho pessoal

Recentemente, tive a infelicidade de cometer um erro. Foi um pequeno erro, mas que aconteceu e então isso me entristeceu bastante. No momento em que percebi essa falha, tratei de resolver o que precisava ser resolvido de forma mais urgente e deixei a reflexão para o primeiro momento oportuno.

Passado pouquíssimos dias, fiz uma profunda reflexão sobre a falha para que ela não viesse a ocorrer novamente. Dessa forma, além de melhorar como pessoa, acredito ter melhorado como profissional.

Talvez você pense: mas assumir assim um erro? Não tem vergonha disso não?

Digo com toda naturalidade: NÃO!!!

Quem erra é porque está evoluindo, quem erra é porque tenta alguma coisa, quem erra é porque pensa, quem erra é porque raciocina … quem erra, é porque está vivo. A diferença está em aproveitar isso como oportunidade.

Conclusão

Eu erro, você erra. Logo, nós erramos. Portanto, a melhoria contínua começa em nós!!!

Referências:

[1] http://visaoagil.wordpress.com/2009/01/06/melhoria-continua-e-efetiva-atraves-do-hansei-e-kaizen/

[2] http://www.slideshare.net/Comunidade_Lean_Thinking/melhoria-contnua

[3] http://en.wikipedia.org/wiki/5_Whys

[4] http://pt.wikipedia.org/wiki/Kaizen

[5] http://en.wikipedia.org/wiki/Hansei

Afinal, o que seria um profissional sênior?

Posted by Emerson Macedo on junho 7th, 2009

Certo dia um amigo com alguns bons anos de experiência e trabalhando na função de pleno, achou que era a hora de mudar de cargo para sênior. Chegando no seu gerênte, recebeu a seguinte resposta: “fulano, não posso te passar pra sênior porque você não conhece o framework xyz e a lingaugem abc“. Esse meu amigo chegou perto de mim bem cabisbaixo e me contou o que tinha acontecido. Simplesmente achei o fato ridículo. Talvez ele realmente não fosse o momento de se tornar sênior (i.e. em relação ao cargo), mas esse argumento realmente não cola.

Como já mencionei em outros posts nesse mesmo blog, nossa área de desenvolvimento de software/informática está cheia de termos/nomenclatura que se confundem facilmente (e.g. as discussões no GUJ sobre DTO). Mais uma vez, falarei sobre um deles: a classificação júnior, pleno, sênior.

Dando uma passeada pelos sites de emprego de informática, é fácil ver vagas para analista de sistemas / programador / desenvolvedor júnior, pleno e sênior, etc. Acontece que a maioria das pessoas (inclusive os gerêntes de TI) não sabem muito bem fazer essa distinção entre os níveis, causando uma grande confusão na cabeça de todo mundo, inclusive na hora de negociar o cascalho. Portanto, vamos começar pelo básico …

Master Yoda

Não sou uma pessoa entendida de RH, muito menos sei a história sobre como começou essa nomenclatura de júnior, pleno e sênior. Mas como trabalho na área de TI faz 12 anos e já passei por um bocado de empresas, acho que posso dar meu pitaco sobre o assunto. As melhores definições que consegui na internet para sênior foram: ancião, velho, pessoa com mais experiência em alguma profissão. De cara tem alguma coisa estranha na resposta que o tal gerente deu pro meu amigo, mas não para por ai.

No início da minha carreira, nas empresas onde passei, geralmente o cara sênior era um cara com mais experiência, uma pessoa que viveu mais situações, uma pessoa mais madura (não necessáriamente velha ou idosa). Por muitas vezes, essa pessoa não conhecia uma ferramenta ou outra de trabalho que eu conhecia, mas isso de maneira alguma me colocava no mesmo nível daquele profissional, pois tomando conhecimento da existência daquela ferramenta e utilizando um pouco do seu tempo, a tal ferramenta estava absorvida por este.

E o que eu quero dizer com isso? Eu quero dizer que se você começou agora, mesmo que você saiba python, ruby, java, erlang, haskell, xpto, brainfuck, você é Júnior ainda. Lógico que é ótimo saber diversas ferramentas e eu recomendo a todos estudar para isso. O mesmo princípio se aplica ao profissional sênior. Fatalmente tem algumas coisas que lhe fogem ao conhecimento, porém a diferência é que esse naturalmente conhece muitas ferramentas  devido a sua experiência ao longo dos anos. Não foi simplesmente um livro que leu ou um tutorial da internet que fez, mas projetos reais que participou. Um sênior deve saber debater com seus superiores sem medo, com argumentações bem formuladas, sabendo exatamente a sua posição, mas sem muito se intimidar quando conversa com outro profissional acima na hierarquia. Deve chamar a responsabilidade para si em momentos críticos, deve ajudar e ensinar os demais simplesmente porque isso é de sua responsabilidade.

Saber ou não uma determinada linguagem ou ferramenta não faz necessáriamente de você nem júnior nem sênior, pois isso as vezes depende da sua trajetória de carreira. Eu por exemplo não sei nada de ABAP, pois nunca trabalhei com SAP ou algo que use essa linguagem. Talvez você esteja aprendendo Java nesse momento mas tem 10 anos de experiência com C/C++ e tem ótimas práticas de programação. Em fim, é bem relativo.

Pra finalizar, certa vez um amigo me disse que sênioridade é algo como um estado de espírito. Vou até um pouco além disso. Acredito que sêrionidade é um estado avançado de profissionalismo aliado a maturidade alcançada ao longo do tempo.

Disclaimer:

Para que não pareça que defendo regime de quartel, quero deixar bem claro que hoje em dia de nada adianta você ser maduro e experiente se você é um profissional encostado e desatualizado. E o talento, é claro, sempre fala mais alto.

BBB9 e o brother que você não gosta – NO AR !!!

Posted by Emerson Macedo on fevereiro 20th, 2009

Entrou hoje, exatamente as 08:34 da manhã, o aplicativo oficial do Big Brother Brasil 9 para orkut na plataforma Open Social, desenvolvido pelo time o qual faço parte aqui na globo.com. Esse aplicativo tem por objetivo alfinetar o brother que o usuário não gosta e comentar sobre o assunto.

Aplicativos Open Social parecem algo como uma brincadeirinha de criança, coisa que qualquer pessoa faz. Mas na verdade, desenvolver esse tipo de aplicação para um programa como o Big Brother Brasil não é tão simples. Aplicações de grande volume geralmente usam arquiteturas recheadas de cache, processamento assíncrono usando fila, criptografia, alguns servidores e um bocado de outras coisas que o torna tão complexo quanto qualquer outro sistema.

Quero aproveitar também e destacar, que conseguimos desenvolver o produto completo “do zero”, em pouco mais de 1 mês. Isso inclui configuração de todos os servidores (inclusive produção que são várias máquinas), ambiente interno de desenvolvimento, servidor de integração contínua, desenho dos bonecos dos brothers de forma personalizada, vários testes de carga em ambientes que simulam produção e muita comunicação. Estou falando disso, pois usamos metodologias ágeis e acredito fortemente que se não fosse assim, não teria sido possível entregar o aplicativo nesse tempo (e não trabalhamos nenhum fim de semana). No caso específico aqui da globo.com, SCRUM é a metodologia usada, mas poderia ser Extreme Programming ou alguma outra qualquer. Um detalhe também importante é que nosso time tem apenas 10 pessoas, o que contraria um pouco o modelo tradicional que diz que com mais gente o trabalho anda mais rápido.

Se você gosta de Big Brother Brasil e deseja expressar sua opinião sobre algum brother, entre na seção de aplicativos do orkut e procure por: BBB – Voodoo Brother.

Os 5 níveis do desenvolvedor nos testes automatizados

Posted by Emerson Macedo on janeiro 15th, 2009

Alguns acontecimentos me fizeram refletir um pouco sobre a relação entre o desenvolvedor de software e os testes automatizados.

Muitas vezes parei pra explicar pra vários colegas de trabalho sobre a importância do assunto, fiz pair-programmming pra ensinar como se faz, em fim, investi muito tempo pra ajudar diversas pessoas com isso. Por incrível que pareça, tem muiiiiiita gente que ainda não entendeu muito bem. Portanto, resolvi classificar a relação entre o desenvolvedor e os testes automatizados em 5 níveis.

São eles:

  1. Ignorante: Esse é o nível no qual o desenvolvedor não sabe direito o que são testes automatizados ou sequer ouviu falar sobre o assunto (acredite, ainda tem gente assim em pleno 2009).
  2. Indiferente: Nesse nível, o desenvolvedor já sabe o que é, mas acha que essa prática/tecnica não serve pra nada. Apenas toma tempo e atrasa a entrega do produto que está sendo desenvolvido. A sensação dele é que sem os testes a entrega seria mais rápida (e a quantidade de bugs tb vão aparecer mais rápido).
  3. Prequiçoso: Nesse nível eu encontro muita gente. É nesse nível onde a ficha caiu mas o camarada não toma coragem pra aprender a fazer os testes automatizados. Ainda existe o medo de perder muito tempo com essa prática e a preguiça impera, impedindo o progresso.
  4. Decidido: Esse pra mim é o nível mais importante. É nessa hora que o desenvolvedor se dá conta que não dá mais pra desenvolver software sem testes automatizados. É nessa hora que o cara pensa: “como eu pude desenvolver sem testes até hoje?”. É nesse momento que inicia-se o aprendizado.
  5. Profissional: Nesse nível, o desenvolvedor já não se sente mais confortável desenvolvendo sem testes automatizados. Desenvolver sem testes o incomoda profundamente. Nesse momento o mesmo está maduro quanto a importância dos testes e a aplicação na prática. O mesmo começa a se tornar um evangelista para os demais desenvolvedores e sempre que pode, fala sobre o assunto. Nesse momento o desenvolvedor pode realmente dizer que é um profissional, pois hoje em dia não se admite mais desenvolver sem ter testes automatizados que garantam qualidade daquilo que se desenvolve.

Em qual nível você está?

O Servidor ta dormindo …

Posted by Emerson Macedo on janeiro 9th, 2009

Outro dia aqui na globo.com, estavamos numa reunião com uma determinada equipe que cuida de infra-estrutura sobre um projeto do meu time que estamos desenvolvendo. Num determinado momento da reunião, quando conversavamos sobre um determinado servidor de banco de dados, uma pessoa da equipe de infra disse que esse tal servidor estava dormindo (i.e. Trabalhando bem abaixo da sua capacidade). Como nosso projeto demandará grande volume, esse servidor será melhorado para que suporte nosso projeto e continue “dormindo”.

Pensando sobre essa situação imaginei nós, os desenvolvedores. Muitas vezes trabalhamos com muito stress, sobrecarga de trabalho e umas boas horas extras.

O que será que acontece quando sobrecarregamos um servidor? Quando estressamos o mesmo? Quando fazemos testes de carga e performance, vemos que num determinado momento o servidor não aguenta e literalmente abre o bico.

Agora, se os servidores (que são máquinas, não humanos) precisam estar abaixo da capacidade produtiva pra não perder sua qualidade, imagine pessoas sem um tempo pra respirar, pensar e descansar?

Trabalhar no limite da sua capacidade produtiva torna o trabalho improdutivo, apesar de ser contra-intuitivo, talvez.

A diferença entre Criar e Fabricar

Posted by Emerson Macedo on dezembro 12th, 2008

Sempre que eu ouço a frase “Fábrica de Software” meus ouvidos doem bastante. Outro dia, conversando com algumas pessoas, havia um colega que não entendia muito bem a minha aversão por essa tal de “Fábrica de Software”. Após explicar que software é um trabalho criativo, ficou uma dúvida entre algumas pessoas. Afinal de contas, qual a diferença entre criar e fabricar?

Passeando um pouco pelo dicionário, algumas definições me chamaram um pouco a atenção:

  • Criar: inventar; imaginar; dar existência a; desenvolver;
  • Fabricar: executar ou fazer executar certos produtos por processos mecânicos; manufacturar; construir;

É difícil perceber a diferença? Acho que não …

Se formos na Wikipedia podemos encontrar algumas informações ainda mais relevantes. Vejamos parte do texto:

… trabalhadores manufaturam bens ou supervisionam o funcionamento de máquinas que processam um produto, transformando-o em outro. A maioria das fábricas atuais têm grandes armazéns e depósitos com equipamentos pesados, utilizados na produção da linha de montagem

Oito anos atrás, Fowler escreveu sobre isso, explicando claramente que a parte de “fabricar” o software é geralmente uma simples task do ant ou um goal do maven ou alguma coisa no rake, etc.

Já foi falado zilhões de vezes nos foruns de tecnologia que fábrica presupõe trabalho repetitivo, fazer o mesmo produto várias vezes (você faz o mesmo software várias vezes ou quando precisa de uma cópia simplesmente faz um cp arquivo1 arquivo2?), desenvolvimento em fazes (i.e. waterfall). Portanto, não faz sentido comparar nosso trabalho com trabalho de fábrica.

O trabalho do desenvolvedor é criar o software, fazer design do código em todo o tempo, assim como os arquitetos da contrução civil fazem no autocad, ou no bom e velho papel. A diferença é que nós temos a condição de construir (i.e fabricar) o nosso software com custo “zero”. Não precisamos de pedreiros, tijolos, vigas, argamassa, etc. Agente usa o Ant, Maven, Rake, Make ou wathever ora bolas. É tudo de graça. O resultado do trabalho deles é físico, o nosso são bits e bytes.

O erro sempre foi fazer a associação: desenvolver = construir/fabricar. A associação mais correta é desenvolver = projetar/arquitetar/desenhar.

Até a próxima …

Artigo na Revista Visão Ágil edição 5

Posted by Emerson Macedo on novembro 4th, 2008

Visão Ágil 5A Revista Visão Ágil, que sempre apresenta artigos muito interesantes, publicou este mês de outubro a edição número 5 com um artigo meu sobre Os 7 Pecados Capitais de Um time Ágil. O editorial está de parabéns pelo trabalho que fizeram. Realmente a revista ficou ótima.

O Artigo fala um pouco sobre erros comuns de times ágeis. Isso inclui não somente o time, mas P.Os, Scrum Masters e todos os demais envolvidos. Vale a pena conferir.

Os demais artigos também são de excelente qualidade e a leitura dos mesmos é extremamente recomendada.

Meus sinceros agradecimentos ao Manoel Pimentel e Felipe Rogrigues.

Quem ama bloqueia

Posted by Emerson Macedo on outubro 27th, 2008

Quem não se lembra do comercial da Oi sobre bloqueio de celulares que fez bastante barulho?

O bloqueio as vezes faz parte da vida do Desenvolvedor de Software. Em muitas empresas que trabalhei, tive que conviver com alguns. Foram eles:

  • Bloqueio da Internet (Parece mentira, mas trabalhei num lugar onde somente algumas equipes tinham acesso a internet)
  • Bloqueio de Instant Message
  • Bloqueio de email (Não dava pra acessar o Gmail)
  • Bloqueio do Internet Banking
  • Bloqueio de alguns sites (Eu não conseguia acessar alguns blogs importantes)
  • Bloqueio do Telefone (Não dava nem pra ligar pra casa e em algumas empresas nem telefone na mesa tinha)
  • Bloqueio da estação de trabalho (Como que um desenvolvedor que não pode instalar nada no seu computador consegue trabalhar?)
  • Bloqueio da Impressora (Tinha senha especial pra imprimir)

Depois de sofrer bastante com esses bloqueios eu me interessei em saber o motivo que leva muitas empresas a trabalhar dessa forma. Apesar do argumento deles ser furado, vou listar o que eu ouvi de diversas pessoas:

  • Perda de produtividade (segundo eles, as pessoas perdem muito tempo com coisas inúteis na internet e telefone)
  • Falta de foco dos funcionários (Pessoas se desconcentravam facilmente com o IM e outros)
  • Desperdício de recursos da empresa. (Gente imprimindo e usando o telefone demasiadamente)

Depois disso, passei a observar o comportamento das pessoas pra ver como cada um se resolvia com essa série de bloqueios. Eis o que percebi:

  • A ausência da Internet gerava falta de produtividade, pois os desenvolvedores não conseguiam pesquisar algumas coisas, não tinham forum de discussão e não se mantinham atualizados lendo alguns blogs de tecnologia
  • A ausência do Instant Message impedia que um desenvolvedor pedisse ajuda a algum colega que já tenha trabalhado com ele para solucionar um determinado problema.
  • A falta do email fazia com que houvessem notebooks com internet móvel espalhados pela empresa para que o pessoal conseguisse ler seus emails.
  • A impossibilidade de instalação de softwares na máquina do desenvolvedor fazia com que o mesmo perdesse mais tempo que o necessário para resolver determinados problemas.
  • Muitos criaram seu prórpio jeito de burlar isso tudo (Proxys anônimos, senha de admin das máquinas escondido, mais tempo de almoço pra telefonar e imprimir em lan-houses)

E o pior: Essas empresas PERDERAM ÓTIMOS PROFISSIONAIS.

Atualmente eu trabalho numa empresa onde não tem dessas coisas. Aqui nossa internet é totalmente liberada, podemos usar o telefone sem problemas, enviar email a vontade, pagar nossas contas e até mesmo usar o Instant Message (MSN, Yahoo, ICQ, Gtalk), que é considerado por muitos um absurdo.

A conclusão que eu cheguei foi que não importa o que a empresa faça, se o desenvolvedor não quiser trabalhar, ele vai dar um jeito de faze-lo, mesmo que seja burlando as coisas ou simplesmente levando um livrinho e passando o dia lendo na sua mesa.

O que a sua empresa precisa é contratar profissionais de verdade e não pessoas que simplesmente querem um emprego, pois quem quer realmente trabalhar, usa esses recursos a favor da empresa e não contra.

Para aumentar a produtividade e diminuir os custos, recomendo ainda introduzir alguma filosofia de trabalho ágil na sua empresa.

Quem ama não bloqueia !!!

BDD – Boss Driven Development

Posted by Emerson Macedo on agosto 26th, 2008

Nas empresas que trabalhei até hoje durante a minha carreira, a maioria delas tinha uma coisa em comum: o funcionário tinha que trabalhar para agradar seu chefe, ao invés de trabalhar em favor da empresa.

Nesse momento, surge uma nova definição de processo de desenvolvimento: BDD – Boss Driven Development (Desenvolvimento voltado para o chefe). Basicamente funciona da seguinte maneira:

  • Se seu chefe chega cedo, trate de chegar cedo, pois se ele chegar antes de você, é muito ruim e provavelmente você terá problemas com ele
  • Se der a hora de você ir embora e por algum motivo ele ainda estiver na empresa, permaneça até ele sair, pois ele pode precisar de você para alguma coisa. Quem sabe pegar um café pra ele?
  • Por mais que você saiba que precisa melhorar alguma coisa que não está muito legal no projeto, cuidado ao falar com ele, pois ele pode achar isso uma ofensa, ou até mesmo dizer que a culda disso é sua.
  • Se ele pedir pra você ficar fazendo tarefas que nada tem a ver com a sua profissão/aptidão/vocação, não questione, afinal de contas, o segredo para crescer em uma empresa é fazer tudo que o chefe manda e ficar bem caladinho.

Por mais incrível que possa parecer, ainda existem muitas empresas que trabalham dessa forma. Especialmente as famosas consultorias [A-Za-z]{3}.

O BDD relacionado a testes de software é bem mais interessante, não é mesmo?

Graças a Deus onde eu trabalho não é assim.

Agile nelesssss

Posted by Emerson Macedo on julho 28th, 2008

Quanto mais leio algumas coisas, mais penso que processos empíricos e ágeis serão adotados por quase todos os segmentos existentes hoje.

O Phillip Calçado postou sobre o caso de uma indústria farmaceutica e sua opção por implantar algumas práticas totalmente diferentes do que tinham o costume de usar. O resultado foi o mesmo que temos visto nas empresas de TI que tem abraçado as metodologias ágeis.

O mais engraçado disso tudo é que tem algumas pessoas que por mais que você mostre reultados, elas insistem que isso é uma modinha e que daqui a pouco passa.

Será?!?!?


Copyright © 2007 codificando.com. All rights reserved.