;(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
Topo

Ela faliu três vezes até criar startup premiada com foco em mulheres pretas

Divulgação
Imagem: Divulgação

De Universa, em São Paulo

21/06/2023 04h00

A designer Karen Santos, 31, testemunhou três iniciativas de empreendedorismo falirem até seu primeiro negócio vingar.

Primeiro foi uma agência de design; depois, uma loja de brindes, como canecas e camisetas personalizadas; e, por fim, uma empresa de marketing.

Hoje, ela está à frente da startup UX para Minas Pretas — que nasceu em 2019 como um projeto para trazer mais mulheres para a área de experiência do usuário (UX, de " experience", do inglês) e, em 2021, se transformou em negócio premiado nacional e internacionalmente.

Ela participa, no dia 24 de junho, de sessões de mentoria para mulheres que desejam impulsionar ou ressignificar a carreira durante o Universa Talks, em São Paulo. O evento é gratuito, mas o evento é sujeito à lotação. Para se inscrever, clique aqui e insira o código UNIVERSATALKS2023.

Karen se formou em design gráfico e trabalhou em agências de marketing por quatro anos até decidir migrar de área. Resolveu estudar UX, um setor promissor que oferecia vagas com bons salários em startups. A mudança de área foi feita rapidamente. Ela conseguiu entrar para a Piay, uma fintech (empresa que oferece soluções para o mercado financeiro), e outra startup, a Quinto Andar. O problema é que Karen se sentiu solitária no caminho.

Karen começou o UX para Minas Pretas com o propósito de criar uma comunidade de mulheres negras que pudessem trocar experiências. Em quatro anos, a ideia se transformou em uma edtech, uma startup em educação para capacitação de mulheres negras para o mercado digital.

"O projeto não surgiu para ser um negócio, mas nasceu da minha dor. Quando migrei para essa área não me enxergava: não me via nos eventos, nas palestrantes, no público, nos cursos e, principalmente, nas equipes das empresas de tecnologia", afirma.

"Pensava que existia uma área para pensar na experiência das pessoas, mas não são todas as pessoas que estão desenhando isso. Experiências não são neutras e nem universais."

Karen buscou mulheres negras do setor e conseguiu respostas de mais de 300 em todo o país. Em 2019, conseguiu fazer um evento com essas temáticas em empresas como Nubank e Nextel. "Tocava o projeto no final de dia, finais de semana e feriados para conseguir dar conta do projeto e do meu emprego CLT. Mas comecei a pensar na possibilidade de sair da CLT quando tive um princípio de burnout", conta.

Hoje, a empresa tem uma base de mais de duas mil mulheres que trabalham no ramo, tiveram investimento do Google e vão participar da rede mulheres empreendedoras pela Future Females Business School, iniciativa da embaixada britânica no Brasil.

Como próximo o, a UX para Minas Pretas vai elaborar metodologias próprias para os cursos e estruturar a equipe de colaboradores. Hoje, a empresa atua, além da capacitação, com um time de recrutadoras e também com ações de publicidade e o à informação.

Karen enxerga uma área com potencial de geração de empregos, mas pouco o. "É uma área em ampla expansão, que tem vagas com salários altíssimos. Mas os cursos são caros, podem custar de R$ 2.000 a R$ 12 mil", afirma.

Por isso, a startup liderada por Karen também aposta no lançamento de um curso introdutório em UX para as mulheres pretas e periféricas que querem fazer um processo de migração de área.

Universa Talks tem patrocínio de Allegra, Buscofem, Eudora e Gino-Canesten.