;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Logo Pagbenk Seu dinheiro rende mais
Topo

Ex-capitão do Bope e consultor do "Tropa de Elite" dá 10 dicas de liderança

Larissa Coldibeli

Do UOL, em São Paulo

21/11/2013 06h00

Paulo Storani, 51, foi capitão do Bope (Batalhão de Operações Policiais Especiais) do Rio de Janeiro de 1994 a 1999, o que lhe rendeu a função de consultor dos filmes "Tropa de Elite" 1 e 2.

Mestre em antropologia, pós-graduado em istração pública e em gestão de recursos humanos, hoje ele dá palestras sobre como construir equipes de alto desempenho baseado nos métodos de treinamento do Bope.

O Bope é uma tropa de elite da polícia do Rio de Janeiro, chamada em situações em que os pelotões normais da PM não conseguem resolver o conflito. Por causa da dificuldade, cada trabalho do Bope sempre é chamado internamente de missão.

“Os momentos de crise exigem mais da gente. Missão exige sacrifício. Transforme seus objetivos em missões para alcançá-los”, declara Storani.

Veja as dicas do ex-capitão do Bope para formar um time qualificado e bem-sucedido na sua empresa:

1 – Seja transparente e objetivo: explique claramente qual é o trabalho e deixe que as pessoas decidam se querem participar dele ou não.

2 – Mostre o valor do trabalho: apenas enxergando o valor daquela tarefa é que as pessoas vão se dedicar o suficiente para alcançar os resultados desejados.

3 – Tenha voluntários: Storani diz que todos os membros do Bope são voluntários. Eles correm mais riscos no seu trabalho e não recebem a mais por isso. Ele acredita que voluntários se dedicam mais, pois estão ali porque querem, ou seja, veem o valor do trabalho ou se identificam de alguma maneira com a causa. Isso aumenta o comprometimento.

4 – Faça uma seleção rígida: escolha os funcionários por sua qualidade técnica, experiência e, principalmente, pela determinação. Ela fará com que a equipe coloque as ações em prática.

5 – Prepare a equipe: mobilize e capacite seus funcionários. Defina o papel e a importância de cada um, exaltando o time. “Se tiver alguém desmotivado, ele puxa os outros para baixo. Da mesma forma, se tiver alguém interessado apenas em fazer sua parte, ele pode ar por cima de outros para isso, desestabilizando a equipe”, declara Storani.

6 – Faça um planejamento: elabore um plano de ação para atingir o resultado esperado para a missão. Tenha estratégias e táticas.

7 – Tenha um plano B: Storani diz que o plano ideal dificilmente é executado, geralmente por limitações de tempo e financeiras. Por isso, tenha caminhos alternativos que levem ao objetivo.

8 – Execute o plano com excelência: o ex-capitão do Bope define excelência como “o melhor desempenho, com máxima segurança e mínimo esforço, ou seja, sem desperdício”.

9 – Tenha um padrão de qualidade: o padrão de qualidade não deve ser baseado no melhor integrante da equipe e, sim, no pior. Afinal, se ele faz parte da equipe, deve ser considerado.

10 – Avalie resultados e aprenda: confirme as ações positivas e corrija as que deram errado. Storani diz que, no treinamento, há um tanque de água gelada para onde os soldados vão quando fazem alguma atividade errada. “Lá, eles têm duas opções: pedir para sair do Bope ou voltar para a atividade, correndo o risco de retornarem ao tanque se errarem de novo. O que parece uma punição é, na verdade, uma superação, pois quando saem do tanque molhados e gelados, eles se dedicam com muito mais energia para a missão”, afirma.