Garanta suas Datas – Parte 4

Olá pessoal,

Dando sequência ao artigo ‘Garanta suas Datas – Parte 3’ publicado no dia 23 de novembro hoje entraremos na 4 e última etapa deste estudo. Caso você não tenha lido os posts anteriores sugiro voltar lá, pois poderá ter dificuldades de entender a lógica do estudo de caso.

GESTÃO POR INDICADORES

Gosto muito de realizar gestão baseado em indicadores. Quando realizamos gestão pelos números certos nossas decisões e estratégias se tornam muito mais assertivas.

Quando comecei a estudar Lean me deparei com um mundo de indicadores totalmente novos e meu impulso inicial foi querer medir tudo que fosse possível.

Não cometa o mesmo erro!

Se você é um aficionado por números assim como eu, segure o impulso. Medir todos os indicadores possíveis sem uma ferramenta que lhe forneça estes números de forma automática irá lhe trazer uma carga extra de burocracia que irá impactar o dia a dia do seu time. Principalmente no momento em que estiver implantando esta nova cultura.

Encontrei a medida certa quando conheci o gráfico do Kanban (figura 16). Nele consigo extrair 3 indicadores que me permitem ter a visão necessária para realizar a gestão do time da forma correta.

Figura 16 – Gráfico de saída do processo do Kanban

Neste gráfico você consegue acompanhar as seguintes visões:

  • A camada roxa indica o tamanho do backlog, isto é, quantas histórias existem paradas na coluna ‘To Do’ do seu time;
  • A camada vermelha corresponde ao número de histórias vivas no seu board, no nosso exemplo corresponde as colunas WIP + Waiting + Review;
  • A camada azul indica quantas histórias seu time entregou.

Acompanhando o comportamento destas 3 camadas você é capaz de avaliar a saúde do processo. O ideal é que as camadas ‘In Progress’ e ‘Deployed’ tenham o mesmo comportamento, pois isto é reflexo do sistema puxado, ou seja, sempre que uma história é empurrada para fora (Deployed) uma nova história é puxada para execução (In Progress).

Também existem técnicas para tratar o backlog, onde você poderá apresentar no board apenas as atividades priorizadas. Neste caso o backlog deverá diminuir continuamente até que ocorra a carga de uma nova leva de histórias priorizadas. Esta carga costuma ocorrer antes do backlog zerar, garantindo assim que o time nunca fique sem demanda.

No próximo tópico irei lhes apresentar os principais indicadores deste gráfico e como você deve interpretá-los.

 

ENTENDENDO OS PRINCIPAIS INDICADORES

O gráfico do Kanban lhe fornece 3 indicadores básicos que lhe permitirá manter a gestão da sua equipe. Melhor que isto, permitirá que você melhore a relação com seu cliente, pois irá garantir transparência no alinhamento e manutenção de datas. Saiba como interpretar as informações fornecidas pelo gráfico do Kanban para extrair estes indicadores (figura 17).

Figura 17 – Principais indicadores do Kanban

Cycle Time (Cycle Time = Lead Time / WIP): corresponde ao tempo que o time leva para concluir uma história após ter iniciado sua execução. Com este número você terá condições de estimar a data de entrega de cada história viva no seu board.

Lead Time (Lead Time = Cycle Time * WIP): este indicador avalia o tempo que a história levará para ser entregue a partir da data em que ela foi inserida no seu backlog. Com ele é possível alinhar com o solicitante da tarefa qual a data estimada para sua entrega.

Throughput (Throughput = WIP / Lead Time): este indicador informa qual a vazão diária de histórias realizadas pelo time. Com esta informação você consegue estimar qual a data de entrega de uma determinada atividade, basta mapear o número de histórias que estão à sua frente e fazer a relação com o throughput da equipe.

Com apenas estes 3 indicadores consigo manter uma gestão que me permite:

  • Avaliar a produtividade da equipe;
  • Identificar desvios na execução do processo;
  • Analisar o impacto gerado por priorizações de histórias;
  • Apoiar renegociação de datas já definidas;
  • Manter a transparência com o cliente.

Trabalhe diariamente para manter estes indicadores saudáveis e lhe garanto que sua dor de cabeça irá reduzir significantemente.

 

DIVERSIFICANDO VISÕES

Você lembra que destacamos com cores diferentes as etapas que eram de responsabilidade de times terceiros na construção do fluxo de Implantação? Pois é, agora que você conhece os indicadores que podemos acompanhar através do gráfico do Kanban tenho certeza que você irá querer ‘brincar’ com visões diferentes.

Por exemplo. Não seria interessante conhecer o lead time e o cycle time para as histórias direcionadas às equipes terceiras? Saber o quanto atividades direcionadas às equipes fora da sua alçada estão impactando seu projeto é uma informação valiosa para traçar novas estratégias.

Isto pode ser feito de maneira fácil, basta você trabalhar com boards diferentes no Kanban. Note que não estou falando que todos os times devem utilizar esta metodologia para você ter esta visão. Entendo que este seria o melhor dos mundos, mas sei o quão difícil é mudar esta cultura para a empresa inteira e provavelmente você não conseguirá fazer isto de ‘bate pronto’.

Faça o seguinte. Crie 2 boards idênticos no Kanban, mas desta vez não adicione a coluna ‘Waiting’ (figura 18). Nomeie 1 board como Implantação e o outro board como Terceiros.

Figura 18 – Separando a visão de terceiros

A partir deste momento seu time poderá lançar as histórias que dependem exclusivamente deles no board ‘Implantação’ e lançar as histórias que envolvem equipes terceiras no board ‘Terceiros’. Faça esta divisão com base na classificação que realizamos no mapeamento do fluxo de Implantação.

Manter os boards separados lhe permite visualizar os indicadores referentes as atividades exclusivas do seu time e os indicadores referentes as atividades realizadas por times terceiros. Estas visões lhe permitem identificar como os times terceiros estão impactando seus projetos.

Se você conseguir automatizar a abertura das histórias nos boards, sugiro que crie um board para cada time envolvido no fluxo de Implantação, aprofundando ainda mais a visão e controle que você manterá sobre o processo.

Utilizando o mesmo conceito você poderá criar um board gerencial apenas com os épicos. Esta visão lhe permite conhecer os indicadores referentes ao projeto como um todo e não mais apenas as etapas mapeadas no fluxo.

 

O PODER DA INFORMAÇÃO

Com base em todo o trabalho que lhes apresentamos até aqui, você será capaz de gerar visões importantes para garantir a gestão do seu time e aumentar a transparência no relacionamento com as demais áreas que se relacionam com o processo de Implantação.

Veja algumas visões interessantes que você poderá acompanhar:

  • Através da visão gerencial você conseguirá estimar datas para entregas de projetos com uma assertividade muito alta. Isto é feito através do indicador de lead time do board gerencial.
  • Você conseguirá acompanhar os indicadores de cada equipe terceira e será capaz de identificar quando mudanças internas destas equipes impacta seus projetos. Isto é feito através do throughput de saída acompanhada no board de terceiros.
  • Impactos devido a priorizações de histórias poderão ser medidos com base nos indicadores de cycle time ou do throughput de saída. Isto é importante para repactuar as datas de épicos e histórias já existentes.
  • Será possível planejar o impacto na produtividade do time durante ausências programadas na equipe (período de férias por exemplo). Esta análise pode ser realizada através do throughput de saída.
  • Você poderá avaliar o indicador de throughput por analista. Esta informação permite você identificar analistas que estejam com uma produtividade muito baixa para poder providenciar ações como capacitação por exemplo.
  • Dependendo do nível de automação que seu processo possuí é possível extrair os indicadores para cada uma das etapas mapeadas no fluxo de Implantação. Isto é interessante para você identificar impactos referentes aos processos da empresa. Por exemplo, o indicador de Cycle Time da etapa ‘RFC’ pode sofrer mudança de comportamento caso o processo de GMUD foi alterado.

Estes são apenas alguns exemplos de análises possíveis neste cenário. Tenho certeza que você terá novos insights quando aplicar este trabalho na realidade da sua companhia.

 

CONCLUSÃO

Este estudo de caso lhes mostrou como estruturar um time de Implantações de forma a mitigar o risco de estouro de datas alinhadas com seus stakeholders. Você pode aplica-lo em qualquer fluxo de implantação, mas seu valor será maior em fluxos que envolvem mais de uma equipe.

Não tive o intuito de lhes entregar o passo a passo exato do que devem fazer, pois entendo que você encontrará particularidades em sua empresa que deverão ser superadas com criatividade, seja adaptando os conceitos que lhes apresentei ou integrando outros conceitos à sua solução.

O mais importante é lhes instigar a estruturar soluções para seus problemas encaixando as ‘peças’ de conhecimentos que você vem acumulado ao longo da sua jornada. Seja flexível, faça pequenas alterações ou adaptações para conseguir desenvolver soluções que atendam melhor suas necessidades.

Aproveite o conhecimento que te apresentei, pois você não precisa começar do zero, mas não se prenda somente a ele. Você já pensou em adaptar esta proposta para atender requisições da Operação? Antes de falar que não é possível avalie em um nível mais profundo, identifique os verdadeiros empecilhos e faça modificações na solução se for necessário. Mas não fale que não dá porque ninguém o fez ou porque a metodologia xyz não lhe indica fazer desta forma.

Pare de copiar e comece a criar! Pare de seguir e comece a puxar!

 

Rodrigo Muniz da Rosa

 

Antes que seja tarde

Por que o comportamento do consumidor importa na transformação digital dos negócios?

Durante boa parte do ano de 2015 e o ano todo de 2016, vimos o tema “transformação digital” virar “mainstream” entre as empresas.

Em 2016, porém, o “buzz” em torno do assunto ficou mais claro pela mudança rápida em mercados consolidados como TV por assinatura, Taxi e instituições financeiras.

Serviços disruptivos como Netflix, Uber e as Fintechs mudaram a forma como nos relacionamos com empresas e ficou claro que é um processo sem volta. Quem detém o poder, o consumidor, decidiu experimentar e percebeu que as novas opções agradam mais.

O mercado sabe disso e reage na mesma velocidade. Não à toa, um estudo realizado pela BCG apontou que dos US$ 96 bilhões levantados em fundos de capital de risco desde a virada do século, US$ 4 bilhões foram especificamente para fintechs do mercado de capital.

Para se ter ideia do peso da transformação digital, a Fitch Ratings avaliou que as Fintechs não ocuparão o espaço dos bancos – não por que não tem relevância para o consumidor, mas sim por que as instituições financeiras, percebendo a mudança do mercado, estão mudando e dando muito mais peso para suas estratégias de atuação digital.

Mas por que o comportamento do consumidor importa?

Os institutos de pesquisa alertavam anos antes para a transformação digital que o mundo está passando e que as empresas precisavam se adaptar, sob o risco de se tornarem irrelevantes.

Mas digital pelo digital não importa.

Digital só importa à medida que o comportamento do cliente muda e isso passa a fazer sentido para ele.

Quando uma empresa de café em capsulas decide lançar uma cafeteira que permite que você programe, de qualquer lugar do mundo, o horário que seu café deve ser preparado, para você chegar em casa e encontrar ele pronto e quente na xícara, não estamos falando de simplesmente agregar uma função nova em um produto, mas sim em como melhorar a experiência de consumo usando a vantagem do mundo hiperconectado.

Casos mais clássicos como da Netflix também são sintomáticos: As pessoas têm perfis e rotinas diferentes. Por que tentar enquadrá-las em um padrão, se é possível entregar conteúdo de acordo com suas preferências, na hora que ela deseja? Experiência de consumo elevada à décima potência.

No mundo B2B não é diferente.

Saber quem influencia, quem decide e quem autoriza a compra dentro de qualquer processo de compras é trivial dentro do comercial e marketing, porém, isso não diz nada a respeito da experiência do cliente.

Entender como este mundo hiperconectado afeta a rotina dos envolvidos e dos seus clientes é que muda tudo.

Por isso, para convencer de que a transformação digital dos negócios é importante, antes entenda como é a jornada do seu cliente e como ela impacta a forma como ele interage com seu negócio. Antes que seja tarde.

Gerenciamento de projetos: Uma habilidade para a vida

Quando ouvimos uma conversa entre Gerentes de Projetos sempre aparecem algumas siglas e expressões estrangeiras bem típicas da categoria: PMI, PMO, PMP, PMBOK, WBS, Baseline, Deadline, Status Report, Kick off etc. Esses termos transmitem uma atmosfera de alta complexidade e de aplicação distante para qualquer pessoa “normal”.

Sou apaixonado por Gerenciamento de Projetos, trabalho há 12 anos com isso (há quase 4 anos no UOLDIVEO), leciono e estou há 8 anos envolvido com PMI São Paulo – Project Management Institute, maior instituição profissional em gerenciamento de projetos do mundo, e estou convicto que o que aprendemos e aplicamos é uma habilidade que todas as pessoas deveriam desenvolver.

A definição clássica diz que “Projeto é um esforço temporário empreendido para criar um produto exclusivo” e então abro a reflexão, quantos projetos conduzimos em nossa vida? Pode ser aquele levantamento que o chefe pediu, o curso que você está fazendo, a reforma da sua casa, a festa de casamento dos sonhos na praia, a organização de um treinamento ou um evento, ou seja, todos nós querendo ou não somos gerentes de algum projeto.

Mas é fato que nem todos nossos projetos pessoais ou profissionais são concluídos ou alcançam o resultado esperado. Porém existem milhares de profissionais reconhecidos por sua alta competência que juntos desenvolveram um guia que, se você seguir suas recomendações, há um percentual de sucesso muito maior do que se você fizer do seu jeito, esse é o Guia PMBOK®, um livro desenvolvido por gerentes de projetos de todo o mundo coligados ao PMI – Project Management Institute, onde contém as melhores práticas para a obtenção de sucesso em seus projetos.

A habilidade de fazer um projeto acontecer é importante para qualquer área de atuação, seja um advogado preparando uma defesa e usando técnicas de decomposição de escopo para que tenha a visão detalhada de um processo, um empreendedor aplicando a análise de riscos para evitar surpresas, um professor para identificar a melhor forma de se comunicar com seu público ou até você fazendo seu planejamento profissional anual usando cronograma e orçamento.

O Gerenciamento de Projetos não é apenas a “profissão” de alguns, mas sim uma habilidade valiosa para a vida e é através dos resultados de sucesso dos nossos projetos que viabilizamos o alcance dos nossos objetivos e até nossos sonhos.

Lembre-se, você é o projeto mais importante da sua vida!

 

RECOMENDAÇÕES:

VÍDEO: Construindo resultados em Gerenciamento de Projetos:
https://www.youtube.com/watch?v=xtCtKirpKwg&t=5s

VÍDEO: Conceitos fundamentais do gerenciamento de projetos
https://www.youtube.com/watch?v=9mCQORwPY-A&t=5s

VÍDEO: A lógica do Project Model Canvas:
https://www.youtube.com/watch?v=te-wbf_gB9I

SITE: PMI São Paulo Chapter
http://pmisp.org.br/
https://www.facebook.com/pmisaopaulo

Organizando atividades com o JIRA

Achar uma ferramenta para registrar e controlar  atividades de projetos, e posteriormente extrair informações é um desafio em parte das vezes.

No post sobre organização de demandas, passei algumas dicas para organizar um pouco do caos das demandas que levam mais tempo para atuação dos times, e que muitas vezes fazem parte de um projeto.

Em uma das dicas, informei que na ausência de ferramentas, o controle pode ser iniciado com um quadro branco, canetas, post its, mas não dá pra controlar as demandas assim a vida toda não é mesmo? Além disso, quando for necessário produzir indicadores, ter uma ferramenta é extremamente importante.

O JIRA é uma das ferramentas que pode te ajudar 🙂

Criada em 2002 pela Atlassian (a mesma empresa que entrega ferramentas de produtividade como o Confluence, Crucible e FishEye), tem em seu objetivo primário rastreamento de bugs, de issues e, principalmente gerenciamento de projetos.
Ele pode ser utilizado para controle de atividades de projetos, sejam eles de desenvolvimento de software, campanhas de  marketing, entrega de um produto, ou até mesmo para processos de gerenciamento de serviços de TI (Incidentes, requisições, problemas).

A ferramenta disponibiliza alguns projetos “default” para o controle de atividades e estes também já possuem um Workflow padrão para o andamento das mesmas com o projeto já criado. Veja abaixo alguns exemplos:

Para as equipes de desenvolvimento, é importante observar que o JIRA está muito alinhado com os frameworks Scrum e Kanban, possibilitando criar ciclos de entrega e os quadros visuais (kanban), o que pode auxiliar inclusive para quem tem equipes que trabalham em localidades diferentes.

Há outras coisas que podem ser realizadas com o JIRA no que compete ao acompanhamento de atividades como notificações por email, campos específicos para projetos, workflows específicos, configuração de telas, e pretendo em próximo post dar mais algumas dicas sobre o assunto.

Veja que a intenção deste post não é mostrar que o JIRA é a melhor de todas as ferramentas, mas lhe dar a possibilidade de iniciar a avaliação da mesma como uma alternativa para controle de seus projetos.

Existem ferramentas pagas e gratuitas no mercado como Kanbanize, Kanbanflow (gratuito), Acelerato, Trello (este último comprado recentemente pela mesma empresa do JIRA, Atlassian, mas até então gratuito e com possibilidade de utilizar via mobile e nuvem também), etc. Algumas destas, permitem o teste gratuito durante algum tempo.

A melhor ferramenta, será a que mais se adapta a sua necessidade e para isso é interessante que você faça a sua avaliação 😉

 

Até o próximo post.

[ ]´s

Melo

 

Machine learning e Inteligência Artificial 5 dicas na visão de um desenvolvedor.

  1. Qual é o primeiro passo para um desenvolvedor iniciar em Inteligência Artificial e Machine Learning?

Estudar. É importante compreender fundamentalmente os algoritmos que você estará usando, caso contrário, cada método de Machine Learning é uma caixa preta. Então tente fazer projetos ML, como competições Kaggle, onde você tem uma definição clara do que você está tentando aprender – como um algoritmo específico ou kit de ferramentas. Você vai falhar, muitas vezes, mas é assim que melhor aprender ML técnicas.

 

  1. Quais são os principais processos de criação para o Machine Learning?

O primeiro e mais importante passo é entender o problema que você está tentando resolver. Quais são as entradas e saídas desejadas? Quais são os dados? Completamente compreender os dados, antes de experimentar com algoritmos. Caso contrário, você pode ter nenhuma confiança realista na qualidade do resultado ou confiabilidade. Você provavelmente também precisará pré-processar e transformar os dados, e talvez obter mais dados. O próximo passo no processo ML é considerar os algoritmos e métodos que você tem à sua disposição. Para os algoritmos que são adequados para o seu problema e dados, existem muitos critérios a considerar, tais como fiabilidade, eficiência, escalabilidade, e assim por diante.

 

Os principais pontos são:

  • Defina o problema;
  • Analisar e preparar os dados;
  • Selecionar algoritmos;
  • Execute e avalie os algoritmos;
  • Melhore os resultados com experimentos focalizados;
  • Finalizar resultados com ajuste fino.

 

  1. Quais são as melhores ferramentas ou plataformas de machine learning para desenvolvedores?

Isso realmente depende de quais problemas você está tentando resolver, especificamente os dados que você está lidando. Dito isto, open-source reina supremo. Existem muitos kits de ferramentas de alta qualidade e de código aberto para aprendizado de máquinas para que os desenvolvedores aproveitem e as comunidades são ativas e úteis. No mundo Python, eu realmente gosto Scikit-learn para a sua ampla gama de aprendizagem de máquinas e ferramentas de análise de dados. Pela mesma razão que eu gosto mlpack para C + + desenvolvedores. O NLTK é um go to para métodos e dados de processamento de linguagem natural (PNL), embora os pacotes de aprendizagem profunda implementem algoritmos de PNL de alta qualidade. Se você está tentando fazer análises de streaming, NuPIC é melhor. É o estado da arte da AI, com um incrível repositório e comunidade, e implementado em Python, C ++, Java e Flink. Especificamente para aprendizagem profunda, estamos vendo um monte de estruturas boas e rápidas: confira Theano, Neon ou TensorFlow do Google. Em Java, eu recomendo altamente deeplearning4j.  É aprendizagem profunda de ferramentas de machine learning, escrito por alguns engenheiros muito espertos. 🙂

 

  1. Qual seria atualmente a linguagem de programação recomendada para ML para desenvolvedores?

Python, sem dúvida. A maioria dos kits de ferramentas de aprendizado e análise de dados estão em Python e tem uma comunidade enorme e útil. Os métodos avançados, como HTM e aprendizagem profunda são muitas vezes implementados em Python.

 

  1. Como o machine learning é diferente da machine intelligence?

ML está construindo sistemas de software que visam melhorar com experiência. Algoritmos de ML executam tarefas específicas e estreitas, como jogar um determinado jogo. Um exemplo é a aprendizagem profunda ou algoritmos de clustering. MI é a manifestação de software da inteligência: não a capacidade de realizar uma tarefa específica, mas sim a capacidade de descobrir a estrutura no mundo através da interação sensório-motor e, em seguida, usar esse conhecimento para atingir objetivos. Talvez uma definição mais clara de MI seja através de seus requisitos: a máquina deve aprender a partir de fluxos de dados sem rótulos, continuamente, ao fazer previsões, detectar anomalias e fazer classificação, ou seja, o que o cérebro humano faz.

 

Grande abraços e até a próxima.

Luiz Eduardo

 

Tecnologias disruptivas, negócios incrementais

Se você observar os cursos da moda, os termos mais procurados e os últimos livros dos gurus, uma palavra recorrente certamente estará presente: inovação. É certo que não se trata de uma business word recente, ela já está por ai há algum tempo. Mas se antes era um diferencial, hoje é um mandatório para a sobrevivência no mercado.

Design Thinking, Lean Startup, Agile, Lean Innovation, tecnologias emergentes. Todos os métodos possíveis para ter um insight inovador, transformador. Mas analisando o índice global de inovação, nós figuramos na 69ª posição, com um índice de 34,87, atrás do México, Tailândia e Vietnã (Global Innovation Index – 2015). Apesar de contarmos com problemas de políticas públicas de incentivo, um sistema tributário complexo e dimensões continentais desiguais pensam demais, mas estes seriam os únicos fatores que impendem o mercado de se colocar numa melhor posição?

No filme Holywoodiano “O Grande Truque”, o personagem de Nikola Tesla diz: “ A sociedade só permite que você inove uma vez”.  O quão aberto estamos realmente para inovação?

Além das tecnologias emergentes e o desafio da transformação, nós vivemos talvez o que seja o segundo maior conflito de gerações (sendo o primeiro entre os baby boomers e a geração X). A vanguarda e o desenvolvimento tecnológico estão cada vez mais sob domínio de uma geração com menor idade – como a geração Z. Porém as diretorias e altas posições executivas e estratégicas, em sua grande maioria, são ocupadas pela geração X e baby boomers. O que não seria um problema potencial se as gerações conseguissem gerar a sinergia necessária para aproveitar o melhor de todo o aprendizado que marcaram suas gerações.

As gerações Y (milennials) e Z cresceram em um ambiente completamente diferente de seus pais, com uma economia recessa, ameaça de terrorismo global e escassez de recursos naturais. Elas são movidas por propósitos, muito além de números, e ambas tem um poder concentrado de influência sobre compras. A geração Z tem um espírito completamente empreendedor, e por terem crescido em um ambiente completamente digital, valorizam as comunicações pessoais e as relações humanas, muito mais que a geração Y (Gen Y and Gen Z Global Workplace Expectations Study, 2014).

Onde tudo isso se encaixa com a inovação?

Assim como no ambiente de trabalho, onde tentamos encaixar, a geração questionadora e insatisfeita, dentro de companhias com forma de trabalho, comunicação e hierarquias ultrapassadas, nós utilizamos tecnologias inovadoras em negócios antigos, apenas lhe conferindo agilidade e uma roupagem nova. Para inovar de verdade é preciso primeiro entender os anseios e fatores motivadores do mercado. O consumidor de hoje está muito mais antenado na ética, honestidade, relacionamento e comprometimento das empresas, são preocupados com o meio ambiente, sustentabilidade e com a própria saúde, um fator que demonstra isso é que mesmo diante de um mercado recessivo, o mercado de orgânicos tenha dobrado no Brasil no último ano.

Elon Musk, na sua entrevista ao TED Talks, quando questionado sobre o “ingrediente secreto” da sua brilhante capacidade de inovar, em projetos fantasticamente diferentes, do qual o próprio entrevistador destaca a visão transversal entre design, tecnologia e negocio e a confiança de desenvolvê-los, atribui este sucesso ao “framework” utilizado para solucionar os problemas, onde ele diz: “É a física. Sabe, é o tipo de raciocínio com princípios básicos. O que eu quero dizer com isto é: traga as coisas para a suas verdades fundamentais e raciocine a partir daí, em oposição à raciocinar por analogia. Na maior parte do tempo estamos raciocinando por analogia, que basicamente significa copiar o que as outras pessoas fazem com pequenas variações. E você tem que fazer isso, senão do contrário seria impossível viver o dia a dia. Mas quando você quer fazer algo novo, você tem que aplicar a abordagem da física. Física é na verdade imaginar como descobrir coisas novas que são contra intuitivas.”

Domine os anseios e problemas do seu mercado, experimente ser seu cliente. E seja capaz de responder qual o caminho mais rápido e seguro para atender esta demanda. Como torná-la acessível? Quais tecnologias podem te apoiar hoje? Quais princípios fundamentais regem este problema? E somente esteja aberto quando as respostas surgirem.

 

Mais em:

https://www.globalinnovationindex.org/gii-2016-report

http://millennialbranding.com/2014/geny-genz-global-workplace-expectations-study/

 

Como buscar mão de obra qualificada

Eis o grande desafio que todas as empresas enfrentam nos dias de hoje: mão de obra.

Além de não ser suficiente a quantidade de formandos – que para nossa indústria vem dos cursos de ciência da computação, engenharia, publicidade etc. – a qualidade dos recém-formados é cada vez mais deficiente no Brasil.

No UOLDIVEO temos resolvido, ou tentado resolver essa questão, por três caminhos: o primeiro é apoiarmos instituições educacionais com bolsa de estudos oferecidas diretamente a alunos que se encaixam no nosso perfil de necessidade profissional. O segundo, é de promovermos cursos, certificações e aperfeiçoamento profissional para nossos colaboradores, geralmente em parceria com os fornecedores. Esses cursos podem ser ministrados no Brasil ou no exterior. Outro caminho que adotamos é o de fazermos intenso treinamento interno através dos chamados multiplicadores (pessoas que foram treinadas e possuem perfil de replicadores de conhecimento, quer seja técnico ou comportamental). Ano passado treinamos mais de 50% de nosso corpo de profissionais.

Nos encontros anuais com todos os funcionários do UOLDIVEO aproveitamos para reforçar as mensagens de Missão, Visão e Valores da Companhia, que não deixa de ser uma forma de reforçar a identidade da empresa e de treinar nossos colaboradores.

O perfil dos profissionais, de todos os tipos de empresa, vem mudando absurdamente. Na nossa indústria então, a mudança é notória e visível, desde o visual mais casual de se vestir, fisionomia, até o mais importante a meu ver, que é o comportamento.

Apesar da escolaridade ser muito qualificada (superior completo/incompleto + pós-graduação representa 92% dos profissionais), a grande massa de colaboradores por ser jovem, requer um acompanhamento bastante próximo dos gestores, esses sim, mais maduros e experientes, para mantê-los motivados e comprometidos.

Outro dia li que a chamada geração Z – pessoas que nasceram na virada do milênio para cá – já representa 27% da população mundial. Estamos falando em 2 bilhões de habitantes com esse perfil. São pessoas muito mais “antenadas” e acostumadas em usar a tecnologia de forma natural e intuitiva. São menos apegadas a valores tradicionais e, portanto, mais abertas à consumirem o novo, não tendo amarras que as inibam de expor ideias e formas de agir e pensar.

Não tenha nenhuma dúvida que essa geração nos desafia a buscar formas de criar fidelização às companhias e motivação para execução de suas tarefas. Só mesmo estando muito próximo a elas conseguiremos evoluir nessa importante missão.

 

Oracle Database Vault: introdução a Realm

RESUMO

Objetivo deste artigo é explorar uma outra feature do Oracle Database Vault, o Realm. Veremos como é possível impedir o acesso de super users a determinado objeto, role ou mesmo a schemas inteiros.

 

INTRODUÇÃO

Este é o terceiro de uma série de artigos introdutórios a Oracle Database Vault (ODV). Vimos como configurar, as principais mudanças nas atividades do DBA e a segregação de funções em [1]. Vimos também como funcionam Factor, Rule, Ruleset e Command Rule em [2] e como podemos combiná-los para proteger um objeto, um schema ou mesmo o DB inteiro contra determinada instrução SQL.

Usaremos novamente um DB na versão 12.1.0.2 com o ODV habilitado com as configurações defaults, acrescentando apenas com as mudanças realizadas nos artigos anteriores, mas elas não necessárias. Teremos o C##DONO que possui a role DV_OWNER e o C##CONTAS com a DV_ACCTMGR.

O componente que trataremos neste artigo será o Realm (Domínio) e tentaremos ilustrar sua funcionalidade com alguns exemplos. Ele atua como um nível de proteção “mais forte” que os conhecidos privilégios de sistemas/objetos. O escopo pode ser específico a nível de determinado objeto ou amplo como tipos de objeto ou schemas.

 

CENÁRIO PARA TESTE

Para preparar nossos testes, vamos começar com a criação de users e roles que serão necessários. Contextualizando também o cenário inicial, vemos que é possível com o SYS consultar todos os objetos do schema HR mesmo com o ODV habilitado.

 

Vamos criar um user USER_CONSULTA_HR que possuirá permissão de leitura em HR.EMPLOYEES e HR.DEPARTMENTS.

 

Criaremos também uma Role que utilizaremos no último exemplo:

 

REALM

O Realm é como uma zona de proteção em que você pode colocar roles, objetos ou mesmo schemas inteiros. Com ele, é possível blindar os dados contra usuários com privilégios de sistema (como SELECT ANY TABLE, por exemplo). E isso inclui, especialmente, proteção contra o DBA [3].

Adicionar o schema HR dentro de um Realm, por exemplo, provocará erros de falta de privilégios caso seus objetos sejam acessados por um DBA ou alguém que possua SELECT ANY TABLE.

Os atributos de um Realm são:

– Name

– Description

– Enable

– Autid Option

– Type

Os dois primeiros são triviais, olhemos então para o Enable. Mas este também é trivial! Sim, só gostaríamos de chamar a atenção de como devemos utilizá-lo aplicando a API disponibilizada. Os valores aceitos para Enable são estes abaixo:

– DBMS_MACUTL.G_YES (default)

– DBMS_MACUTL.G_NO

 

Podemos também definir quando auditaremos os acessos. As opções são simplesmente não auditar, auditar falhas, auditar sucessos ou ambos.

Audit_options:

– DBMS_MACUTL.G_REALM_AUDIT_OFF (default)

– DBMS_MACUTL.G_REALM_AUDIT_FAIL

– DBMS_MACUTL.G_REALM_AUDIT_SUCCESS

– DBMS_MACUTL.G_REALM_AUDIT_FAIL + DBMS_MACUTL.G_REALM_AUDIT_SUCCESS

Quanto ao tipo, a discussão é interessante e tentaremos mostrar em detalhes através de exemplos. Há dois tipos: o REGULAR (0) e o MANDATORY (1).

A diferença entre começa no fato de que o REGULAR protege apenas os objetos contra users com “privilégios de sistema” (SELECT ANY TABLE). Porém, isso não impede de usuários que tenham privilégio de objetos de realizar a consulta (grant de SELECT/READ explícito nos objetos do HR ou via ROLE).

Já o Realm MANDATORY é um pouco mais restritivo. Nem mesmo os usuários com privilégio de objeto poderão consultá-los. Neste caso, é necessário conceder “privilégio no Realm” ao usuário que pretende fazer o acesso. Vale frisar que esta discussão inclui o owner dos objetos protegidos. Ou seja, se protegermos o HR com um Realm MANDATORY, ele perde a permissão de consultar os próprios objetos. Interessante, não?

 

Vejamos como funciona primeiramente os Realms do tipo REGULAR.

 

Aqui temos um Realm, entretanto, ele ainda não protege nada. Precisamos dizer quais são os objetos que ele deve englobar. Podemos especificar owner, nome do objeto ou mesmo seu tipo e caso precise generalizar, pode ser utilizado o “wildcard”: ‘%’. Vamos começar adicionando a tabela HR.EMPLOYEES abaixo dele.

 

A partir de agora, usuários com privilégios de sistema não conseguirão mais ver os dados desta tabela. Veja o que ocorre com o SYS:

 

Porém, aqui ainda é possível o acesso de users que possuam privilégios do objeto, como é o caso do USER_CONSULTA_HR:

 

Antes de avançar, vamos ver como estão as configurações e aproveitaremos para conhecer as views com os metadados de Realms:

 

Até aqui nenhum segredo, falamos de todos estes atributos. Vejamos como está nosso ambiente.

 

Note que tivemos um outro efeito com esta proteção: não é mais possível conceder permissão de leitura nesta tabela. Resolveremos este ponto adiante.

 

Explorando um pouco mais o conceito de Realm, vamos falar do tipo que é mais restritivo, o MANDATORY. Como citado acima, ele impede quem tenha privilégios de sistema, privilégios de objetos e até mesmo o owner de fazer consultas em objetos protegidos.

Para ilustrar, vamos alterar o tipo do Realm PROTECT_HR para MANDATORY e, com isso, esperamos que o USER_CONSULTA_HR perca o acesso de leitura, visto que será necessário um privilégio a mais para conseguir “chegar” aos dados [4].

 

Consultando novamente, vemos que temos um Realm MANDATORY:

 

Vamos testar o acesso de USER_CONSULTA_HR aos dados protegidos (EMPLOYEES) e não protegidos (DEPARTMENTS).

 

Veja o que ocorreu com o HR:

 

O próprio owner perdeu acesso a seus dados. É nesse sentido que afirmamos que o MANDATORY é mais restritivo. Segundo a documentação, com sua utilização é necessária autorização explícita ao Realm. Ou seja, para acessar os dados, além dos devidos privilégios de objeto, será necessária autorização no Realm.

O que seria esta autorização no Realm? São dois os tipos de permissão: Participante (DBMS_MACUTL.G_REALM_AUTH_PARTICIPANT) ou Owner (DBMS_MACUTL.G_REALM_AUTH_OWNER). A principal diferença no tipo de autorização é que o tipo PARTICIPANT não permite a concessão de privilégios sobre os objetos protegidos. Para isso, é necessário a autorização do tipo OWNER.

Autorizando o USER_CONSULTA_HR como PARTICIPANT, resolverá o problema da falta de privilégio. Veja:

 

Precisamos também aumentar nossa query (removemos alguns campos para simplificar) que verifica a configuração atual, adicionando outra view:

 

E agora podemos ver que USER_CONSULTA_HR é PARTICIPANT do Realm PROTECT_HR. Será que isso resolve o problema de falta privilégio? Resolvido.

 

Para ilustrar a diferença, vamos conceder o mesmo nível de privilégio para o HR e em seguida vamos resolver um outro ponto citado acima.

 

O problema citado foi o user HR não conseguir conceder privilégio de leitura em uma tabela protegida, embora consiga agora acessar a tabela.

 

Para que seja possível, precisamos alterar o tipo de privilégio do HR para OWNER do Realm.

 

Agora temos:

 

Isto resolve nosso problema, confira:

 

Faltou ainda falar de um outro atributo da “autorização” a nível de Realm, os Rulesets. Deseja permitir o acesso apenas se determinadas condições forem verificadas? A partir de determinado host? Apenas em certos horários? Este é o ponto chave para atingir este objetivo. Falamos de Rulesets em [http://www.oracle.com/technetwork/pt/articles/idm/rule-ruleset-command-rule-vault-3038750-ptb.html] e citamos que elas poderiam ser utilizadas aqui.

Aumentando a especificidade do nosso exemplo, aproveitarei para incluir um questionamento que nosso time recebeu da equipe de Sec. Como fazer para que a concessão de privilégios tenha prazo de validade? Com os pontos que já discutimos nos artigos anteriores, temos condições de resolver este ponto.

Faremos agora com que o Realm só permita acesso do USER_CONSULTA_HR aos dados até um horário determinado: 10h 35min do dia 18/06/2016. É uma forma não depender de uma ação manual para removê-lo no futuro. Vale enfatizar que o Ruleset está vinculado com a autorização e, portanto, pode afetar apenas determinado user.

Vamos criar uma Rule e um Ruleset e associá-los.

 

Precisamos também alterar a autorização dada ao USER_CONSULTA_HR para que seja também validado o Ruleset:

 

Verificando a configuração, temos:

 

E finalmente, só admirar o resultado:

 

Último ponto que discutiremos nesta introdução a Realms, será como proteger também as Roles. No começo do artigo criamos uma role ROLE_READ_SCOTT. Vamos conceder privilégio de leitura em uma tabela do SCOTT e em seguida criar um Realm para proteger a Role. Depois, tentaremos conceder outro privilégio.

 

Grant concedido com sucesso. Agora a criação do Realm e incluindo a Role na proteção.

 

Analisando o resultado:

 

E agora que a Role está protegida, podemos conceder privilégio de leitura na SCOTT.DEPT?

 

A forma de “resolver” a violação é fazer com que o SCOTT tenha autorização de OWNER no Realm.

 

E o resultado:

Desta forma, vimos que podemos evitar que privilégios sejam adicionados ou removidos de determinada Role se a protegermos com Realm. Somente quem for autorizado como OWNER do Realm poderá fazer o Grant/Revoke.

 

CONCLUSÃO

Neste artigo exploramos uma outra feature poderosa do Oracle Database Vault. Este é o componente responsável por impedir o acesso de usuários privilegiados aos dados sensíveis. Vimos os diferentes tipos de Realms e que podemos escolher quando auditaremos os acessos (ou tentativas). Falamos também o quão específico ou genéricos podemos ser quando o assunto é proteger os dados.

Há ainda pontos a serem explorados nós próximos artigos como autorização para datapump e patches, auditoria, roles, schedulers, etc. Faremos na medida do possível.

 

REFERÊNCIA

[1] http://www.oracle.com/technetwork/pt/articles/idm/seguranca-oracle-database-vault-2999070-ptb.html

[2] http://www.oracle.com/technetwork/pt/articles/idm/rule-ruleset-command-rule-vault-3038750-ptb.html

[3] https://docs.oracle.com/database/121/DVADM/cfrealms.htm#DVADM70144

[4] https://docs.oracle.com/database/121/DVADM/cfrealms.htm#DVADM71156

 

Infraestrutura ágil em Cloud

O primeiro ganho tangível com a adoção de virtualização e Cloud foi a agilidade no tempo de provisionamento de infraestrutura. Com a parte física (servidores, switches e storages) da infraestrutura instalada em grandes quantidades e templates de VMs prontos, passou-se  a entregas VMs em questão de minutos. Há incontáveis artigos e depoimentos sobre isso, atualmente qualquer provedor de Cloud entrega novas VMs, Redes, Storage e LoadBalancer em minutos (as vezes até mesmo em segundos).

 

Entretanto mesmo utilizando o painel de qualquer provedor de Cloud para provisionar infraestrutura, você vai gastar mais tempo dando cliques do que esperando os recursos serem disponibilizados. Se antes o gargalo era o tempo de instalação e configuração fisica de equipamentos agora passou a ser o humano que faz a interação com as APIs via um painel de controle. Além disso fazer o deploy manual não garante que alguém consiga reproduzir o que foi feito, não há reaproveitamento ou padronização.

 

Para se atingir o próximo patamar em termos de agilidade e eficiência é necessário fazer provisionamento de infraestrutura de forma programática, ou se preferir utilizar a infraestrutura como código.

 

Quando falamos em provisionar infraestrutura de forma programática estamos falando em utilizar APIs (disponibilizadas por todos os provedores de Cloud) para criação de VMs, Redes, LoadBalancers, etc. Atualmente existem módulos que possibilitam utilizar APIs de provedores em praticamente qualquer linguagem, mas ainda assim deve-se conhecer alguma linguagem e escrever rotinas de conexão, fazer tratamento de erros, etc.

 

Outra possibilidade é utilizando uma ferramenta chamada terraform da Hashicorp (www.terraform.io). O terraform permite criar, alterar e evoluir infraestrutura de forma segura e previsível utilizando templates que tem uma linguagem bastante simples e intuitiva. Não é necessário aprender a programar, apesar de que neste tema cada vez mais serão aplicados conceitos de engenharia de software em questões relacionadas a infraestrutura e aprender a programar (em qualquer linguaguem) é algo cada vez mais importante para administradores de sistemas.

Entrando na prática, segue abaixo o exemplo de um template para deploy de uma infraestrutura em OpenStack para uma aplicação web tradicional, com loadbalancer, servidores web/aplicação e banco de dados, com múltiplas instâncias e regras de acesso.

 

 

Executando o terraforma com o template, a criação de todos esses componentes no UOL Cloud OpenStack demorou apenas 27 segundos !!! Eu não tentei fazer este deploy manualmente via Painel, mas não acredito que seja possível fazê-lo em menos de 10 ou 15 minutos…

A melhor parte é que o template ainda pode ser reutilizado para deploy de outros ambientes similares, utilizando estratégias de Blue/Green deployment ou algo do tipo.

 

Processos X Sistemas/Ferramentas: O que vem primeiro?

Olá pessoal, tudo bem? É um prazer escrever pra vocês novamente.

Vamos falar mais um pouquinho de processos mas desta vez envolvendo também a questão de sistemas ou ferramentas. Mas Melo, o que uma coisa tem a ver com a outra?

No post anterior nós dissemos que o processo é importante para todos e o contrário é recíproco, ou seja, todos são importantes para o processo também. Mas como “tocar o bumbo sem o instrumento”, ou melhor, como fazer com que os processos “rodem” sem sistemas ou ferramentas adequadas?

Normalmente precisamos de algum sistema, aplicação, ou outras ferramentas para realizar as atividades rotineiras do trabalho e dos processos envolvidos. Em muitas das vezes, sabemos inclusive que um único sistema ou ferramenta não basta e isso porque depende da necessidade de cada companhia. Mas antes de simplesmente pensar na ferramenta, mais uma vez devemos voltar para os processos.

É um desafio para os profissionais de processos exercitar isso com as equipes pois, ao conversar com as áreas ou fazer entrevistas questionando o que pode ser feito ou melhorado, em grande parte das vezes são apontadas alterações ou melhorias nos sistemas e ferramentas e não nos processos em si. No fim das contas, o analista de processos acaba virando por um momento o analista de sistemas 🙂

Mas é importante lembrar que os sistemas e ferramentas devem ser adequados às necessidades de processo e não o contrário, seja um processo de TI ou um processo de negócio. Uma das responsabilidades dos analistas de sistemas (e não dos analistas de processos) é traduzir as necessidades relatadas em processos para os sistemas e ferramentas.

Em muitos casos, com a avaliação de um profissional de processos e posteriormente de um profissional de sistemas (os analistas), pode-se chegar à conclusão de uma troca de ferramenta e não simplesmente de ajustes, melhorias ou alterações. E isso pode vir a ocorrer por vários motivos: adequação correta ao processo, limitação técnica de sistema, impossibilidade de customização, etc, etc.

Por isso, antes de pensar em alterar telas, botões, inclusão ou exclusão de campos, vale sempre se atentar ao que será impactado no processo. E digo mais, é importante lembrar que é necessário avaliar o que as alterações podem trazer de ganho pensando inclusive na produtividade dos times envolvidos, se colocando sempre no lugar de quem executa as atividades no dia a dia. Se a alteração não traz nenhum ganho, qual o sentido de fazê-la?

Veja que não estamos dizendo que os profissionais não devem pensar em melhorias para as ferramentas, muito pelo contrário, todos podem e devem pensar nisso.

E desta vez buscamos uma outra frase para ilustrar um pouco do que foi dito:

“Se a única ferramenta que você tem é um martelo, tudo começa a parecer com um prego.” (Abraham Maslow)

 

Então, vamos todos buscar melhorias, sejam elas em processos, sistemas ou outras ferramentas, pois através disso é que sempre haverá uma melhor qualidade de serviços.

 

#somostodosqualidade

 

Até a próxima 🙂

Melo