Cinco regras de ouro para conseguir a localização Agile

Ilustrações por Julia Feng (OhISeeItNow.com)

Agile_Loc_LogoAo longo da última década, muitas equipes de desenvolvimento de software mudaram sua metodologia de desenvolvimento de um modelo em cascata para algo muito mais ágeis, como Scrum. Através desta transição, suas expectativas em relação a outras equipes, como localização mudaram e essas equipes tiveram que melhorar a sua agilidade também.

No Adobe, temos um grupo de localização centralizada, que atualmente suporta 135 produto e equipes funcionais. A maioria dessas equipes adotaram alguma forma de metodologias ágeis de desenvolvimento e reduziram o seu ciclo de desenvolvimento de 18-24 meses a anual, trimestral, mensal e, nos dias de hoje, lançamentos bi-semanais. Um casal de equipes de produtos Adobe e outras empresas estão até lançando versões atualizadas do seu produto várias vezes por dia, tornando-se imperativo para localização de continuar a melhorar a sua agilidade.

Elaborado a partir de nossa experiência, este artigo apresenta Cinco Regras de Ouro que precisam ser satisfeitas para conseguir a localização ágil ideal.

Regra 1 - "Somos uma equipe!"

Dentro de muitas empresas, Adobe incluiu, A localização é uma função centralizada de todo o produto que serve e funcional (por exemplo. Marketing, De vendas, Legal, e assim por diante) equipes. Esta estrutura faz sentido, porque a localização é um campo especializado, Portanto, os recursos (pessoas, ferramentas) e os processos podem ser aproveitados por toda a empresa. Todavia, localização ainda deve ser preocupação de todos. A equipe de localização pode chegar a muitas soluções, mas os melhores originam quando há uma verdadeira parceria entre as equipes de produto / funcional e localização.

We're one team!

Nós somos uma equipe!

As equipes mais ágeis tratar pessoal localização, como se fosse parte de sua própria equipe.

Um aspecto central do Scrum é incluir todos os conjuntos de habilidades, incluindo localização, obrigado a entregar um produto para usuários. Portanto, Membros da equipe de localização deve ser incluído em todos os aspectos de desenvolvimento – de avaliação backlog de retrospectiva – para que eles pudessem planejar e resolver questões internacionais desde o início. Parcerias fortes também devem ser estabelecidas com fornecedores de localização quando as empresas, como Adobe, interagir com parceiros e fornecedores para a sua tradução e atividades de teste.

Envolvimento do cliente é um aspecto fundamental de metodologias ágeis como ele valida a qualidade e utilidade do trabalho realizado até o momento. Recomendamos que você se envolver com clientes internacionais também, porque seus problemas de aumentar a conscientização em torno da internacionalização.

Em síntese, todas as partes interessadas (equipes de desenvolvimento, equipes funcionais, incluindo localização, fornecedores e clientes) precisam colaborar estreitamente a fim de alcançar grande agilidade.

Regra 2 - "A internacionalização é rei"

No nosso Série Mitos Sobre Globalização, definimos Internacionalização (comumente abreviado como i18n) como um exercício de engenharia focada em generalizar um produto de modo que ele pode lidar com vários idiomas, scripts e convenções culturais (moeda, regras de classificação, número, data e hora formatos ...) sem a necessidade de redesign.

Internationalization is King

Em outras palavras, o melhor internacionalizado um aplicativo é, o mais fácil será para localizar.

No modelo em cascata, equipes poderia contornar algumas das deficiências de internacionalização por causa de ciclos de desenvolvimento mais longos. Infelizmente, no mundo ágil, não há tempo suficiente para procurar trabalho em torno de soluções mais. O código precisa ser internacionalizada a partir do get-go.

Existem várias abordagens para melhorar a internacionalização de uma empresa, que inclui o seguinte:

  • I18n_EducationEducação: Desenvolvedores do núcleo de treinamento é uma forma eficaz de reduzir o número de questões de internacionalização em um produto. Ao expor os engenheiros para questões de localização e internacionalização, eles ganham uma perspectiva mais ampla sobre o impacto de seu código e evitar algumas das armadilhas de internacionalização clássicos.

 

  • I18n_LibrariesBibliotecas de internacionalização: Aproveitando bibliotecas de internacionalização Open Source, como UTI ou JavaScript i18n, é outra boa prática. Em vez de re-inventar a roda, engenheiros podem reutilizar o código que já foi validado por outros. Também, bibliotecas i18n normalmente suportam 100+ local, que requerem uma quantidade significativa de investigação e desenvolvimento vez. Vai ser difícil para uma única equipe ou até mesmo da empresa para suportar tantas localidades.
  • Peer_ReviewRevisão de código: Praticar avaliações pelos pares é um método eficaz para reduzir os defeitos de internacionalização em um produto. Desde desenvolvedores sabem o seu código será revisto, que prestar mais atenção à sua qualidade (efeito da pressão dos pares) por isso também beneficia internacionalização. Algumas empresas chegam a automatizar esse processo de revisão usando ferramentas como o Globalyzer.
  • Globalization Report Card: Produtos de benchmarking contra uma arquitetura ideal ajuda a melhorar a internacionalização também. Como parte de nosso programa de World-Readiness, nós criamos um sistema Report Card Globalização para avaliar o grau de mundo prontidão em cada produto Adobe. Este scorecard mede produtos contra um conjunto de critérios de internacionalização (capacidade de entrada de caracteres internacionais, exibir os formatos de data, traduzir a interface do usuário, e assim por diante ...). É uma forma eficiente de acompanhar o progresso feito por cada equipe ao longo do tempo e pode até mesmo criar uma competição saudável entre as equipes de produto. Essas equipes são motivados a estar no topo das paradas da i18n!

Globalization Report Card

Regra 3 - "Integrar a localização no processo de desenvolvimento"

Para lançar um novo produto, equipes de desenvolvimento tem muitas tarefas de alta prioridade e, geralmente, preferem não ter de se preocupar com a localização até que seja necessário. Como conseqüência, questões localizability muitas vezes são descobertos tarde demais e encontrar o risco de ser adiada para um futuro lançamento. As equipes de produtos nem sempre antecipar o impacto de uma tarefa / recurso específico sobre a localização, e muito frequentemente, a equipe de localização não é capaz de influenciar a concepção ou desenvolvimento até que o recurso já está implementado.

Em um processo ágil, recursos e tarefas de desenvolvimento são controladas em um backlog e revisto no início de cada Sprint. Para eliminar os efeitos colaterais da "throw-over-the-parede" modelo acima descrito, é fundamental para incluir representantes Localização Durante essas reuniões de planejamento de sprint assim mais visibilidade e importância é dada às tarefas de localização. Isso também proporciona grande valor educativo para todos os interessados ​​que podem, então, entender o impacto de suas decisões sobre o processo de localização. Localização ou um proxy também deve participar das reuniões diárias de sprint para acompanhar o ritmo e as decisões de desenvolvimento. Ao participar desses encontros, Membros da equipe de localização pode ser muito mais pró-ativo e influente.

Localization Process Integration

Adobe Revel e Photoshop.com são exemplos de equipes que integram a localização em seu processo de desenvolvimento. Eles também priorizar a localização de recursos intensivos / tarefas iniciais - escultura tempo suficiente para a equipe de localização para executar o seu processo e entregar versões localizadas de alta qualidade.

Num recente Localization World evento, Amrit Singh (Gerente do Programa Internacional para as nossas tecnologias de instalação) presented LocBan (Kanban aplicada à localização). Assim como em uma fábrica da Toyota, a equipe de localização mantém um conselho de "fazer", "Work in Progress" e "Concluído" tarefas que proporciona grande visibilidade sobre a localização "correia transportadora". Similarmente, seria benéfico para manter placas de Kanban para cada tradutor. No modelo em cascata, tradutores usados ​​para receber kits de localização de grandes, que teve que lutar para completar dentro do prazo. No mundo ágil, tradutores são agora capazes de "puxar" o trabalho como sua banda abre.

Localization Kanban

Usando um Kanban bordo integrado, todo mundo tem uma compreensão clara de todas as várias dependências e responsabilidades, resultando em uma maior colaboração e maior taxa de sucesso.

Regra 4 - "Reduzir, Reutilizar e Reciclar "

A localização pode gerar uma grande quantidade de resíduos se não for planejado corretamente. Assim, é fundamental para se tornar "verde" a fim de se tornar mais "ágil".

Reduce, Reuse, Recycle

Reduzir

É claro que a redução do esforço de localização irá ter um impacto positivo sobre a agilidade de um equipa. Isto poderia ser conseguido no 2 maneiras: validando o âmbito localização e reduzindo o desperdício de tradução gerado durante o processo de localização.

  • Reduzir Localização Scope

O trabalho do Gerente de localização é para assegurar que a empresa localiza o produto e conteúdo certo para o conjunto de linguagem certa. No Adobe, tivemos situações em que fomos localizatórios muito conteúdo. Por exemplo, utilização Digital Marketing Suite da Adobe, descobrimos que os clientes russos preferem ler a documentação de Desenvolvimento (tais como descrições API) em Inglês, em vez de em russo. Fomos capazes de guardar um monte de tempo e custo através da remoção deste componente de nossos requisitos de localização.

Similarmente, através de pesquisa de mercado, descobrimos que a maioria dos clientes do Oriente Médio Creative Suite preferem usar uma interface de usuário Inglês com o árabe ou hebraico documentação. Esta combinação torna o conteúdo Inglês como vídeos e tutoriais mais acessíveis para eles.

Em resumo, rastreamento de web analytics e engajamento com os clientes, usuários de energia, testadores de pré-lançamento e GEOS constituem uma ótima maneira de validar os requisitos de localização e melhorar a agilidade.

  • Reduzir o desperdício de Localização

Uma vez que os requisitos de localização são confirmadas, é fundamental para limitar o desperdício gerado durante a tradução do processo de localização. Isso, obviamente, afeta o trabalho dos tradutores, mas também a largura de banda do pessoal para localização.

Sweep Away Waste!Uma forma eficaz de reduzir o desperdício de localização é através da compreensão de sua causa raiz. No Adobe, categorizamos todos os defeitos de localização através de um conjunto de palavras-chave, que nos fornece uma boa imagem dos problemas enfrentados em todos os produtos. Podemos, então, desenvolver soluções para reduzir, se não eliminar, estes defeitos.

Resíduos de localização por vezes origina Inglês Inglês seqüências de assumir é o idioma de origem. De fato, traduções criadas antes de cadeias inglesas ficar finalizado terá de ser revisto e provavelmente vai gerar alguns resíduos.

No mundo ágil, não podemos permitir que o tempo extra, por isso é importante para validar o conteúdo Inglês antes de entregá-lo para os tradutores. Fazer algo tão simples como a verificação ortográfica pode ajudar a reduzir a quantidade de resíduos de localização. Em um produto tal como o InDesign, sobre 3% das seqüências em inglês interface do usuário são atualizadas uma vez que se revista para erros ortográficos e gramaticais. Para um produto que está localizada dentro 25 línguas, isto representa uma perda equivalente a 75% de um único escopo linguagem!

Também, muitas das atividades de análise de localização de software são necessárias porque a localização está acontecendo fora do contexto. Resolver esse problema pode tremendamente acelerar o processo de localização. Em um mundo ideal, localização deve ser uma característica do produto que permite que tradutores para traduzir a interface do usuário no contexto. Facebook fez um ótimo trabalho nesta área, permitindo tradutores (neste caso, a sua comunidade de usuários) para traduzir e fornecer feedback dentro do próprio aplicativo. Alternativamente, tradutores devem ser fornecidas informações de contexto através constrói, imagens ou informações de meta-dados (por exemplo. Comentários desenvolvedor, nome do recurso, tempo de entrega previsto, e assim por diante).

Para reduzir o desperdício, Também é recomendado que os localizadores desenvolver glossários, guias de estilo e ferramentas que aproveitam localizações anteriores.

Finalmente, é fundamental para os tradutores para validar o seu trabalho como eles traduzem. Dessa forma,, actividades para baixo da linha de produção pode ser eliminada ou reduzida, o que torna todo o processo mais ágil.

Reutilizar

Reuse when it makes sense!Reutilizando cordas às vezes pode ser uma fonte de defeitos difíceis em localização de software, por isso tem de ser manuseado com cuidado. Por exemplo, a seqüência de Inglês "none" poderia ser traduzido como "aucun" ou "aucune" em francês baseado no gênero do substantivo a que se refere.

Dito, reutilização de cordas - no mesmo contexto – Também poderia ajudar a melhorar a agilidade, uma vez que estas cordas não precisa ser traduzido várias vezes.

Uma área onde a Adobe tem experimentado resultados positivos com a redução e reutilização de conteúdos em Inglês está em nosso conteúdo instrucional. Na documentação, Adobe depende Acrolinx para controlar a qualidade do Inglês (fonte) conteúdo. Autores precisa usar um certo estilo de autoria (por exemplo. frases curtas) e são incentivados a aproveitar parágrafos existentes (por exemplo. avisos legais). Isto melhora a coerência na documentação Inglês e tem a grande vantagem de reduzir a carga de trabalho muito localização.

Similarmente, DITA (ler Reduzir, Reutilizar e Reciclar: Desenvolver uma estratégia de reutilização para DITA) e Sistemas de Gerenciamento de Conteúdo como Adobe Experience Manager (anteriormente conhecido como Dia CQ) são projetados para reutilização / partilhar conteúdos através de múltiplos canais e publicações.

Reciclar

A reciclagem é o processo de transformação de materiais existentes (ou resíduos) de tal forma que eles podem ser reutilizados - às vezes para uma finalidade totalmente diferente. Criação de lã polar a partir de garrafas plásticas usadas ou isolar paredes usando velhos jeans são exemplos clássicos de reciclagem.

Tais transformações podem ser aplicadas a traduções muito. Tradutores não precisa traduzir cada frase a partir do zero. Tecnologias de tradução, como memórias de tradução e de tradução automática pode ajudar os tradutores reciclar traduções anteriores e acelerar o processo de tradução. No Adobe, temos experimentado ganhos de produtividade dramáticos quando usamos essas tecnologias. Em geral, um tradutor suportado por estas tecnologias vão entregar em uma hora o que outros tradutores iria entregar em um dia. Estes são ganhos expressivos que contribuem para a agilidade localização muito.

Regra 5 – Automatizar, Automatizar, Automatizar

O último requisito para obter a localização ágil é a automação. Com ágil, você não pode dar ao luxo de enviar pedidos de tradução por meio de e-mails ou cortar e colar cordas de uma planilha para um arquivo de origem. Todos tradução hand-offs devem ser automatizados e gerenciados através de um sistema centralizado. Ao longo dos anos, A equipe de Adobe globalização tem desenvolvido como uma plataforma. Este sistema é capaz de se conectar com vários sistemas de controle de origem, gerenciar os trabalhos de tradução, alavancar traduções existentes entre os projetos e tipos de conteúdo e fornecer mecanismos de tradução automática. Na tab Mito globalização 4 artigo, Guta Ribeiro introduziu Aeroporto, nosso novo sistema para se conectar automaticamente com os nossos fornecedores e nos ajudar a marcha em direção ao nosso sublime de uma hora objetivo tradução.

Automate

Além da tradução, também é importante para automatizar outros aspectos do processo de localização, como construir, garantia de qualidade, correção de bugs, screenshots e distribuição das versões localizadas. Nós só podemos ir tão rápido quanto o nosso componente mais lento, é por isso que é fundamental para automatizar todos os aspectos do processo de localização.

Conclusão

Agilidade localização pode ser alcançado, desde que todas as partes interessadas trabalhar como uma equipe unificada. É fundamental para os engenheiros do núcleo para desenvolver um código bem internacionalizado a partir do get-go. Isto pode ser conseguido através da formação, revisões de código, utilização de (Open Source) bibliotecas de internacionalização e globalização boletins.

O processo de localização devem ser plenamente integrados no processo de desenvolvimento global para que todas as dependências e responsabilidades são claras. Recomendamos o uso de placas de Kanban (através de ferramentas como o Trello) para aumentar essa visibilidade. Para se tornar ágil, também é importante para agir "verde" (I.E. reduzir, reutilizar e reciclar). Isso representa uma maneira eficaz de controlar a produção de resíduos, antes e durante o processo de localização. Finalmente, todos os esforços devem ser feitos para automatizar todas as partes do processo de localização simplificada.

No Adobe, nem todos os projetos de localização são tratados com grande agilidade - ainda! Alguns projetos são mais ágeis do que os outros. Contudo, com base em nossa experiência, acreditamos que a agilidade pode ser alcançado com a adoção destas Cinco Regras de Ouro:

  1. "Nós somos uma equipe!"
  2. "A internacionalização é rei"
  3. "Integrar a localização no processo de desenvolvimento"
  4. "Reduzir, Reutilizar e Reciclar "
  5. "Automatizar, Automatizar, Automatizar "

 

Um agradecimento especial a Rob Jaworski, Amrit Singh Pal, Ashish Saxena, Janice Campbell, Leandro Reis, Peter Green, Julia Feng e Quynn Le pela sua inestimável feedback sobre este artigo.

O problema com Software Localizando para múltiplas plataformas

Adobe tem uma longa história de desenvolvimento de produtos para múltiplas plataformas, quer se trate de aplicações de desktop como nossos aplicativos Creative Suite emblemáticos ou aplicações sensíveis ao toque mais recentes, como Photoshop Toque. A maioria dos nossos aplicativos de desktop foram construídos para Windows e Mac e aplicações mais recentes continuar esta tendência, com suporte para iOS e Android, incluindo tablet e telefone fatores de forma para ambos.

Claro que isso não teria sido possível sem os esforços cuidadosos da equipe de engenharia para manter em grande parte uma única base de código para todas as plataformas.

Apesar de ter uma única base de código tem benefícios óbvios, na camada de interface do usuário muitas vezes é importante ter variações de plataformas específicas para uma melhor usabilidade. Cada plataforma tem geralmente uma convenção específica para se referir ao sistema de menus, teclas de atalho e elementos de interface do usuário. Por exemplo, em uma plataforma Windows uma String UI pode ser – “Selecione um arquivo de mídia através do botão Procurar ou digite um caminho válido.” ea mesma seqüência para a plataforma do Mac pode ser – “Selecione um arquivo de mídia através do botão Escolher ou digite um caminho válido.”

Isso significa que as cordas UI traduzíveis pode ter muitas variações no idioma de origem, dependendo de qual plataforma eles são destinados a. Isto é o que o nosso grupo de globalização geralmente se refere como "Plataforma de variância’. Cordas localizáveis ​​são essencialmente múltiplo entidades. Cada corda localizável tem um identificador e múltiplos valores associados cada um dos quais podem ser selecionados com base em determinados critérios. Os critérios mais óbvios e comumente utilizado é o idioma da interface do usuário do aplicativo, mas ele não precisa ser o único. Plataforma também pode decidir o valor de uma string.

Suporte de variação plataforma não é apenas útil para o tratamento de diferenças de terminologia para se referir a elementos de interface do usuário do sistema, ele também ajuda a adaptar cordas para diferentes tamanhos de tela. Aplicação moderna são projetados para suportar vários formatos de dispositivos como tablet e telefone com a interface do usuário que está sendo ajustado para cada plataforma para uma melhor experiência do usuário. Variância plataforma, neste caso, pode ser usado para apoiar cadeias mais longas para a vista Tablet e cordas mais curtas para a exibição do telefone.

No entanto, outra área onde o suporte de variação plataforma poderia ser útil é em ter diferentes valores localizáveis ​​para uma versão Pro versus uma versão do Consumidor da aplicação.

Contudo, localizar strings com dados variante da plataforma é um problema. O problema é duas vezes, é na gestão dos processos e cronograma do projeto para permitir a localização ágil e lançamento simultâneo para todas as plataformas-alvo. O segundo aspecto é tecnicamente apoiar a variância plataforma em ambas as bibliotecas de programação e ferramentas de tradução. Muitas ferramentas e bibliotecas de assumir um único valor para uma origem e uma seqüência alvo, mas no caso da plataforma de variância não só pode haver múltiplas fontes e os valores de alvo para uma cadeia lá não necessita de ser de um-para-um entre os valores de origem e de destino. Pode haver múltiplas variantes de plataforma para a cadeia de origem que são mapeados para o mesmo valor / target traduzido ou uma única seqüência de origem pode precisam ser traduzidos de forma diferente com base na plataforma para o local de destino. Por exemplo:

  • pt_BR: “Por favor, feche a janela e começar de novo.”
  • fr_FR padrão: “Feche o diálogo e tente novamente.”
  • O Windows fr_FR: “Feche o diálogo e tente novamente.”

Desde que eu sou parte da equipe de ferramentas de globalização aqui no Adobe, o restante deste post eu descrever o problema mais de uma ferramentas técnicas e perspectivas bibliotecas, desenho da minha experiência. O problema processo também é bastante complexo e, provavelmente, ter um post muito mais tempo blog para discutir. Na verdade, há um um relacionado já neste blog, ver – link.

Suporte Variance plataforma em Bibliotecas

Idealmente, as bibliotecas de globalização / APIs usadas no código para gerenciar cadeias externalizados e os formatos de armazenamento correspondentes para os dados externalizados deve ter uma noção de um valor variante plataforma para cada corda. Deve haver uma maneira de pedir um valor de string para uma localidade e uma plataforma específica, juntamente com uma disposição para voltar a cair para um valor padrão no caso de um valor específico da plataforma não é especificado.

Como um exemplo, a API Java ResourceBundle suporta a seleção de um pacote de 'Locale', não há menção explícita de uma "Plataforma", mas o 'Locale’ si é extensível para suportar variantes. O mecanismo de variante no 'Local’ pode ser usado para suportar plataformas diferentes, e existe também um mecanismo de queda para trás. No Adobe temos uma biblioteca multi-plataforma desenvolvido personalizado chamado ZString para o gerenciamento de cadeias de externalizados com apoio explícito para a plataforma de variância.

Suporte Variance plataforma em Ferramentas de Tradução

A maioria dos sistemas de gerenciamento de tradução (TMSS) ter um one-to-one modelo de strings com as cordas correspondentes traduzidos para cada localidade. Este pressuposto está por trás da arquitetura dos algoritmos correspondentes TM, bem como o desenho da bancada tradução. Um típico bancada tradução normalmente oferece um lado a vista lateral de origem e de destino cordas, mas apenas apoiar uma única seqüência de fonte correspondente a um valor único traduzido.

Typical Translation Workbench

Um lado típico de visão lateral de origem e conteúdo alvo de uma ferramenta de tradução

Nós ainda estamos procurando a solução ideal para este problema. Para gerenciar os TMs uma possível solução usando os sistemas existentes é ter entradas duplicadas na memória de tradução (TM) ou um TM separado para cada plataforma.

Contudo, tradutores ainda são limitados pela visão apresentada pela sua bancada de trabalho de tradução. Uma possível solução para permitir que os fornecedores de tradução para fornecer a plataforma traduções específicas é duplicar todas as cordas de origem para cada plataforma alvo possível. O valor de origem para o padrão da plataforma pode ser usado como valor de fonte para todas as outras, a menos que a plataforma de aplicação UI já especifica um valor para uma plataforma específica, caso em que é usado. Agora, o tradutor pode fornecer traduções diferentes para cada plataforma, se necessário. Essa solução no entanto parece ser uma quantidade significativa de trabalho adicional para os tradutores. Alguns otimização é possível traduzir uma única plataforma primeiro e aproveitando traduções para todas as outras plataformas.

Em um cenário ideal da bancada tradução daria um lado a vista lateral de todas as variantes de plataforma para a string de origem e as cordas alvo. Com a capacidade para o tradutor para remover as variantes da seqüência traduzida onde eles não são necessários e propor variantes para a cadeia traduzido mesmo se a seqüência de origem não tem qualquer. Isso permitiria que os tradutores a trabalhar com o conteúdo de origem em uma única passagem, edição de traduções alavancados, proporcionando novas traduções quando necessário e propondo valores traduzidos específicos da plataforma, conforme apropriado.

Uma aproximação com esta visão ideal é uma folha de Excel com cada corda fonte que está sendo representado em uma linha e ter uma coluna separada para cada plataforma, tanto para fonte e cordas alvo. Com os valores em branco numa coluna plataforma significando que o padrão de tradução é para ser usado para essa plataforma e entradas da plataforma não em branco a ser utilizado para a plataforma de tradução específicos.

Ideal Translation Workbench

A proposta vista bancada tradução permitindo traduções simultâneas para múltiplas plataformas

Nós ainda estamos experimentando para encontrar a solução ideal para as nossas necessidades, que oferece flexibilidade para tradutores e ainda aproveita o nosso investimento em processos e ferramentas de tradução existentes. O objetivo é ser capaz de suportar mais rápido ciclos de lançamento ágeis com todas as versões da plataforma acontecendo simultaneamente.

Acho que este é um bom fórum para pedir aos nossos leitores do blog, se enfrentaram problemas semelhantes e as soluções que desenvolvemos para lidar com ele.