quarta-feira, 21 de outubro de 2020

Gestão de Desempenho Corporativo

 Cenário do mundo corporativo

 Mundo dos negócios.
Fonte: Toria/ Shutterstock.

Podemos dizer que, atualmente, estamos diante de um cenário de rara complexidade no mundo corporativo e na sociedade como um todo. Diversos acontecimentos e fenômenos econômicos e sociais, de alcance mundial, têm sido responsáveis pela reestruturação do ambiente de negócios. A globalização da economia, impulsionada pela TI e pelas comunicações, é uma realidade da qual as organizações empresariais e sociais não podem escapar. Com o advento dessa globalização o mundo ficou mais competitivo, as empresas e os clientes ficaram muito mais ágeis e exigentes, e passou a ser fundamental para as organizações empresariais contar com processos automatizados eficientes para apoiar as decisões, que se tornam cada vez mais difíceis. Certamente não somente percebe estas mudanças, como sofre diariamente a influência delas, pois vive em um mundo que lhe oferta novos produtos, frutos das modernas tecnologias, de forma intensa e constante.

As empresas fazem parte do mundo dos negócios que visa o lucro e o retorno dos capitais investidos no menor tempo possível. Nesse ambiente de alta competitividade, as informações assumem um papel importante para o sucesso das empresas. Com a enorme quantidade de informações que são geradas e disponibilizadas todos os dias, são necessários critérios para sua seleção e organização.

Isso porque apenas “saber muito” sobre o negócio não proporciona, por si só, maior poder de competição para uma organização. As informações e os dados, quando aliados a um sistema capaz de realizar a sua gestão, é que começam a fazer a diferença. Assim, a criação e a implantação de processos que gerem, armazenem, gerenciem e disseminem o conhecimento representam o mais novo desafio a ser enfrentado pelas corporações. Termos como “capital intelectual”, “capital humano”, “capacidade inovadora”, “ativos intangíveis”, “big data”, “plano de contingência” e “inteligência empresarial” fazem parte do dia a dia de muitos executivos que estão despertos para essa nova realidade.

Mas é importante ressaltar que dados, informações, conhecimento e sabedoria são conceitos diferentes. Hoppen e Santos (2015) apresentam o gráfico da figura abaixo que ilustra estes conceitos. Dados são valores que quantificam algo capturado da realidade, são a matéria prima da escala do conhecimento. Informações são os dados agrupados e organizados de forma a dar sentido aos dados. Conhecimento se refere às informações de forma contextualizada, de maneira a se poder tomar decisões inteligentes e raciocinadas com base nelas.

Dados, informações, conhecimento e sabedoria.
Fonte: < aquare.la >

A sabedoria indica um conjunto mais complexo de raciocínios que se baseiam nos dados, informações e conhecimento, ampliando o potencial das decisões. De acordo com Hoppen e Santos (2015), o gráfico da figura abaixo apresenta cores cujos significados são:

Azul escuro representa o ser humano com seus sentidos, práticas e vivências.

Laranja representa os elementos potencializadores da inovação.

Verde representa as fases de desenvolvimento do potencial de inovação até a tomada de decisão.

Azul claro indica as ferramentas digitais e computadores que servem de apoio ao trabalho humano, as quais nos ajudam a executar tarefas criativas em crescente complexidade.

O dado é um elemento puro, é um valor que quantifica alguma coisa. Os dados são usados no ambiente operacional e podem ser registrados, selecionados e recuperados de um banco de dados ou obtidos das mais variadas formas de documentos. Pode-se citar como exemplo de dado o valor do faturamento de vendas de uma empresa.

A informação é o dado contextualizado e analisado. Por exemplo, podemos comparar o faturamento de vendas da empresa na região Sul (R$ 500 mil) com o faturamento da região Sudeste (R$ 900 mil). Mesmo havendo diferenças numéricas entre os dados, não é possível dizer qual região teve o melhor desempenho... é necessário estabelecer um parâmetro de comparação, ou seja, criar a informação. Se a meta para a região Sul fosse de R$ 200 mil e a da região Sudeste fosse de R$ 5 milhões, ficaria claro que a região Sul foi a que teve um desempenho melhor!

O conhecimento está relacionado à habilidade de se criar um modelo que descreva dados e informações e aponte ações a serem implementadas e as decisões a serem tomadas. A compreensão, análise e síntese, necessárias para a tomada de decisões inteligentes, são realizadas a partir do nível do conhecimento. No caso do exemplo do faturamento da empresa, o conhecimento dos dados e da informação sobre o baixo desempenho da região Sudeste deveriam implicar em ações corretivas.

A sabedoria está relacionada à pergunta: o que você vai ou pode fazer com base nos dados, informações e conhecimentos? A prática e a experiência proporcionada pelo conhecimento leva à sabedoria, que torna o gestor mais capacitado a realizar raciocínios mais complexos. No exemplo da empresa, a sabedoria poderia levar à busca de soluções inovadoras para aumentar o faturamento.

(Fonte: HOPPEN; SANTOS, 2015)

As informações, para terem ou manterem o seu valor, devem ser consistentes e ter o mesmo significado para todos os membros da organização, ou seja, a informação deve ser transformada efetivamente em conhecimento e distribuída, tornando-se acessível aos interessados. A informação aplicada torna-se conhecimento e passa a ser um ativo da empresa, sendo utilizada para definir estratégias de curto, médio e longo prazos, e não mais apenas um suporte à tomada de decisão. A sabedoria, fruto da experiência, dá um passo em direção à busca por soluções mais complexas e inovadoras. Essa realidade já é percebida, pelo menos em parte, por muitas empresas.

Um grande problema encontrado nas empresas são muitos dados distribuídos por diferentes sistemas. Por exemplo, caso seja necessária a emissão de um relatório com informações de um certo departamento que estão armazenadas em um determinado sistema, cruzando com os dados de um outro sistema, isso pode se tornar uma tarefa de semanas. Mas, geralmente, as empresas não podem esperar semanas por um relatório. As decisões estratégicas devem ser tomadas em pouco tempo, pois o mercado movimenta-se rapidamente e é muito dinâmico, e qualquer atraso pode representar grandes prejuízos para uma empresa, implicando até mesmo na sua perda de competitividade.

Turban et al. (2009), ao definir a dificuldade e a deficiência em se obter informações nos ambientes corporativos, afirma que a TI tem sido mais uma produtora de dados do que de informação, relegando a um segundo plano as estratégias de negócios. Os altos executivos não têm conseguido usar as novas tecnologias porque não têm acesso às informações necessárias em tempo hábil e de forma adequada. Assim, como já dissemos, o uso de sistemas e processos automatizados de gestão do conhecimento e apoio às decisões se torna essencial.

terça-feira, 20 de outubro de 2020

Refatoração e TDD – Test Driven Development

Uma programação de qualidade deve envolver um processo de melhoria contínua, com o mínimo de erros e total compatibilidade com o código existente. Não é incomum, depois de algum tempo, o código ficar poluído e desorganizado, e a refatoração pode ajudar a introduzir melhorias no código existente. 

 Desenvolvimento Orientado a Testes.

 

 

De acordo com Fowler (2004), refatoração

é o processo de alteração de um sistema de software de modo que o comportamento observável do código não mude, mas que sua estrutura interna seja melhorada. É uma maneira disciplinada de aperfeiçoar o código que minimiza a chance de introdução de falhas. Em essência, refatorar é melhorar o projeto do código após este ter sido escrito.

Assim, como benefício, o código se tornará mais simples, legível e com boa qualidade.

Falhas de software são tão comuns quanto danosas. É certo que a experiência diz que é quase impossível remover todos os erros de programação, no entanto, quando aplicamos testes adequados durante o desenvolvimento conseguimos eliminar a maioria dos erros comuns.

O sucesso do processo de refatoração depende da sua associação com testes, senão fica difícil saber se a refatoração foi feita corretamente, ou seja, não alterou o comportamento e as funcionalidades originais do código, e não introduziu erros em partes que estavam funcionando corretamente antes.

Desta forma, a refatoração e o processo de desenvolvimento dirigido a testes ou TDD ( Test Driven Development ) são conceitos relacionados, pois um apoia o trabalho do outro e funcionam de forma harmoniosa.

De acordo com o artigo da Caelum (2014), no TDD você escreve seus testes antes mesmo de escrever o código de produção, e o conjunto de testes automatizados gerados pela prática oferecem mais segurança ao desenvolvedor quando alterações no código são necessárias. Isso porque os testes automatizados, que podem ser executados em segundos, podem ser utilizados sempre pelo desenvolvedor e, caso ocorra algum erro, ele é rapidamente notificado e consegue corrigir o problema antes de enviar a versão para o cliente.

Muitos o consideram uma técnica de desenvolvimento. Alguns também o consideram como uma forma de criar um código limpo. Mas o fato preponderante é que atua como um grande apoio na qualidade do desenvolvimento de software.

O funcionamento do TDD é simples: o desenvolvedor escreve um teste que falha, faz este teste passar da maneira mais simples possível e, por fim, refatora o código. Esse processo é conhecido como Ciclo Vermelho-Verde-Refatora, conforme ilustra a figura 49.

  1. Vermelho – Escrever um teste automatizado simples que não passa, e provavelmente não compile na primeira execução;
  2. Verde – Fazer o teste passar rapidamente;
  3. Refatorar – Melhorar o código que já está escrito, tornando-o mais fácil de entender e modificar.

Estudos nos mostram que desenvolvedores que praticam TDD gastam menos tempo debugando , escrevem mais testes automatizados para uma funcionalidade e defeitos são encontrados mais rapidamente do que por aqueles que não praticam TDD. Em termos de qualidade interna, os estudos mostram que os desenvolvedores tem uma forte percepção de que a prática os ajuda a pensar melhor sobre seu projeto de classes (CAELUM, 2014).

segunda-feira, 19 de outubro de 2020

Programação em Pares

Nesta prática, dois programadores atuam juntos na criação do código. Geralmente um deles fica com a responsabilidade de escrever o código, enquanto o outro atua como observador, revendo cada linha do código. Depois os papéis são trocados.

Um dos grandes benefícios é a troca de experiências entre as partes.

A redução do tempo de desenvolvimento é gradual, à medida que ocorre um sincronismo natural entre os pares. Muitas vezes, o amadurecimento da equipe chega ao ponto de haver sempre um remanejamento entre os pares, permitindo uma grande interação e amplo conhecimento de todos por todas as fases em andamento.

Além de contribuir para o intercâmbio entre os componentes da equipe, favorece um maior entrosamento e melhor relacionamento entre seus membros, o que contribuirá para o amadurecimento pessoal de cada um.

A crítica a esta método ocorre quando há uma diferença muito grande no nível dos profissionais, como por exemplo, níveis júnior e sênior.

Metáfora

A metáfora destaca uma similaridade entre duas coisas bem diferentes. Uma metáfora bem escolhida, em geral, não precisa de muita explicação, e às vezes não precisa de nenhuma.

O uso de metáfora é uma forma de tentar entender a necessidade do cliente entendendo a realidade dele.

O que é ser rápido para um cliente? Um profissional da área vai entender de uma forma, enquanto um profissional de outra área vai entender de forma completamente diferente.

Metáforas são usadas para a compreensão da real necessidade do cliente de acordo com padrões aceitáveis para ele. Boas interpretações dos requisitos dos clientes podem gerar metáforas que explicam suas necessidades. Os modelos ágeis investem em metáforas visando a simplicidade na linguagem e facilidade na comunicação.

Como exemplo, vamos explicar ao cliente, por metáfora, a necessidade de uma reunião para planejamento de uma nova versão do sistema sendo desenvolvido.

Para uma vitamina ser saudável, não basta apenas bater ingredientes escolhidos aleatoriamente. De acordo com sua necessidade ou carência nutricional, você vai escolher as frutas adequadas, com a qualidade desejável, na quantidade correta, e vai batê-las em um liquidificador. Após algum tempo de atividade, você vai retirar do liquidificador um resultado vitamínico que poderá não apenas ser nutritivo, mas também agradável ao seu paladar. Assim se dá com as reuniões de planejamento. Todas as ideias dos participantes, como que batidas juntas, vão fornecer um agradável resultado nutritivo ao negócio.

domingo, 18 de outubro de 2020

Práticas XP

De acordo com Teles (2014, p. 81),

práticas em XP representam aquilo que você verá as equipes XP fazendo diariamente. Práticas por si só são estéreis. A menos que haja algum propósito, dado por um conjunto de valores, elas não fazem muito sentido. Programação em par, por exemplo, não faz sentido como algo para simplesmente ir fazendo. Fazer par simplesmente para agradar o chefe é frustrante. Programação em par para comunicar, obter feedback, simplificar o sistema, capturar erros e aumentar sua coragem faz bastante sentido. Assim, práticas dependem da situação e do contexto. Se a situação muda, você seleciona práticas diferentes para abordar estas condições. Seus valores, por sua vez, não têm que mudar para se adaptar a uma nova situação.

Na XP as práticas mais utilizadas incluem: jogo do planejamento, programação em pares, pequenas versões, propriedade coletiva, metáfora, integração contínua, projeto simples, semana de 40 horas, testes, cliente presente, refatoração, padronização de código e reunião diária.

A seguir, vamos estudar algumas destas práticas.

Integração contínua

A integração contínua envolve uma atividade relativamente sofisticada e complicada. Esta prática normalmente utiliza ferramentas automatizadas, de forma que qualquer alteração no código provoca uma reavaliação de todas as rotinas e, considerando a possibilidade de erro, dispara mensagens para os responsáveis, acusando uma integração mal sucedida. No caso de sucesso, também dispara mensagens informando que a operação foi realizada de forma bem-sucedida. A isto se aplica um conceito chamado servidor de construção. Este servidor de construção atua como “juiz”, julgando ou considerando as alterações, validando-as quando detectado sucesso nos procedimentos. Em suma, integração contínua envolve a construção de um código e seu teste de forma automática, e em intervalos frequentes, em um servidor de integração. A figura ilustra esta prática.

Integração contínua
Fonte: MOREIRA, 2010

sábado, 17 de outubro de 2020

Simplicidade

O sucesso repousa sobre a simplicidade. Sofisticação normalmente envolve tempo e, consequentemente, dinheiro. 

 Simplicidade.

 

Por Ilin Sergey / shutterstock.com.

Sempre que for possível, seja simples, não invente, faça primeiro o básico e funcional. Depois de isto feito e o problema resolvido, pode tentar sofisticar, se tiver tempo, mas deixe o simples em funcionamento.

Evite soluções genéricas, pois, em médio prazo, podem provocar um volume maior de atividades para torná-la específica.

Coragem

Fazer o certo pode envolver atitudes positivas e corajosas. Isso envolve aprender com os erros.

Como você se sairia para desmontar o motor de um carro sem qualquer manual de instrução? Tudo bem, você não é um mecânico, mas é um desenvolvedor, então como será seu desenvolvimento sem um projeto definido e aprovado? Muito embora seja um assunto de seu conhecimento, a manutenção ou ampliação deste sistema podem se tornar tão complexos quanto um não mecânico desmontar um motor sem manual nenhum.

A coragem lhe induz a fazer o que precisa ser feito apenas uma vez. Significa deixar o cliente ciente do que está acontecendo, seja bom ou ruim. O medo pode levá-lo a fazer o errado várias vezes. Pode significar ter que jogar um código ruim fora e iniciar novamente a partir do marco zero. Isto pode significar ser mais rápido do que ficar consertando uma situação complicada e mal desenvolvida.

No XP, à medida que o desenvolvimento vai ocorrendo, o código é colocado em prática, antecipando, assim, possíveis dificuldades com a qualidade do código ou lógica usada para o desenvolvimento.

É importante entendermos que tanto o Scrum como a XP aplicam o manifesto ágil, praticando iterações e fornecendo maior visibilidade no desenvolvimento.

Respeito

Respeito é um valor que serve de base para todos os outros. A comunicação entre as pessoas envolvidas em um projeto somente fluirá se um se importar com o outro, respeitando-se mutuamente. Se não houver respeito em um projeto, este estará fadado ao fracasso. Saber ouvir, compreender e respeitar o ponto de vista dos membros da equipe é fundamental para que um projeto de desenvolvimento de software seja bem sucedido, por isso é um dos pilares do XP. 

Respeito

e fornecendo maior visibilidade no desenvolvimento.

 

sexta-feira, 16 de outubro de 2020

Os valores da XP

Comunicação

Entender a real necessidade do cliente nem sempre é fácil. Na maioria das vezes, o cliente não sabe como explicar o que deseja. Neste caso, cabe ao responsável pelo projeto extrair do cliente seus desejos e seus receios, entendendo e organizando sua real necessidade, visando apoiar o seu negócio. A equipe de desenvolvimento e usuários deve manter um canal aberto de comunicação com o cliente. 

 Comunicação

 

Por smilingfresh / shutterstock.com

Imagine um cliente que quer simplesmente uma tela para cadastro, com dados de sua clientela e de fornecedores. Na entrevista, você descobre que os dados também servirão para uma mala direta, o que significa que o campo CEP (Código de Endereçamento Postal) terá que ser validado, e o endereço, obtido a partir dele. A simples solicitação de cadastro mostra-se não ser tão simples assim, e isso somente foi observado pela boa comunicação que surgiu entre as partes para tentar entender a real necessidade do cliente.

É importante ressaltar aqui que o cliente aprende ao longo do desenvolvimento. Uma validação ao final de uma entrega pode inspirá-lo a solicitar novas demandas.

Comentários

O retorno a respeito do que está sendo realizado é de suma importância. Imagine um jogador de basquete que, durante uma partida, arremessa centenas de vezes sua bola. Ao término da partida, ele recebe um feedback lhe informando sua situação. O seu resultado poderá lhe dizer ou que está muito bem nos arremessos ou que precisa melhorar muito, pois sua produtividade está baixa se comparada com os outros jogadores do time ou do adversário. Este feedback servirá de referência para os ajustes.

No desenvolvimento de software, qualquer feedback pode ser importante e decisivo para que se economize tempo e esforço no médio prazo. Portanto, ele deve ocorrer o mais cedo possível.

Mas é importante ressaltar que a avaliação deste retorno deve ser constante ao longo do desenvolvimento. O responsável pelo projeto deve promover e divulgar os resultados e expectativas de todos os envolvidos.

quinta-feira, 15 de outubro de 2020

O modelo ágil Extreme Programming (XP)

Este modelo é amplamente utilizado no Brasil e no mundo, porém, não é o único modelo que atende as premissas do manifesto ágil. 
 
O modelo ágil Extreme Programming (XP).
Por rkjaer / shutterstock.com
 

Visão Geral da XP

A XP (Extreme Programming ou Programação Extrema) é uma metodologia rigorosa e disciplinada. É uma filosofia de desenvolvimento de software fundamentada em valores:

  • Comunicação;
  • Comentários;
  • Simplicidade;
  • Coragem;
  • Respeito. 

Programação Extrema

 

Fonte: Febracev

A figura ilustra as práticas, princípios e valores adotados na XP. 

Práticas XP no ciclo Scrum.

Os valores da XP delineiam a forma de desenvolvimento do projeto, os princípios guiam a implementação do software e as práticas devem ser executadas ao longo do processo.

Enquanto o Scrum tem maior foco nas práticas ligadas ao gerenciamento e organização, a XP dá mais atenção às práticas de programação.

A XP baseia-se em práticas alicerçadas em revisão permanente do código, testes frequentes, participação do usuário final, refatoração contínua, refinamento contínuo da arquitetura, integração contínua, planejamento, projeto e reprojeto a qualquer hora.

A combinação Scrum e XP tem mostrado bons resultados em muitas empresas. Para muitos parece ser o casamento perfeito, unindo algo muito bom com algo muito eficiente. No entanto, assim como há recomendações positivas para este casamento, há outros que consideram outros casamentos com o Scrum bem mais apropriados, sem contar que sempre pode surgir uma nova e mais dinâmica ferramenta nesta constante evolução da tecnologia. A figura 42 apresenta uma associação de práticas XP ao ciclo Scrum.