8 melhores práticas de sinalizadores de funcionalidades que deve conhecer

Discover how to lead product teams and build better products. Create a Free Account

Os sinalizadores de funcionalidades podem ser utilizados para resolver lançamentos complexos, personalizar produtos ou criar experiências. Utilize estas melhores práticas de sinalizadores de funcionalidades para alcançar a máxima flexibilidade e facilidade de utilização.

8 feature flag best practices you should know standard editorial post 40241

As funcionalidades condicionais são uma verdadeira mudança de paradigma para os gestores de produto. Permitem lançar novas funcionalidades sem dores de cabeça — sem alterações ao código, sem lançamentos completos e sem qualquer risco.

Pense nelas como um interruptor que pode ativar para personalizar o seu produto ou realizar experiências em tempo real. Quer esteja a acelerar os ciclos de lançamento ou a testar novas ideias, as funcionalidades condicionais colocam o poder nas suas mãos.

Neste artigo, partilho as melhores práticas para a gestão de funcionalidades condicionais e mostro como utilizei estas técnicas na Guardian Soulmates, a plataforma de encontros do The Guardian, para simplificar uma grande reformulação.

Key Takeaways

Definição: Os sinalizadores de funcionalidades melhoram os ciclos de lançamento ao permitirem disponibilizar funcionalidades de forma segura e flexível, sem alterações ao código.

Porque são úteis: Convenções claras para nomear sinalizadores de funcionalidades ajudam as equipas a compreender facilmente a sua finalidade e a evitar confusões.

Utilizá-los eficazmente: Gira os sinalizadores de forma eficaz, eliminando os que já não são necessários e garantindo que podem ser facilmente ativados ou desativados.

Comece com pouco: Utilize sinalizadores de funcionalidades para testes, começando com públicos pequenos e aumentando gradualmente com base no feedback, de modo a minimizar os riscos.

Melhores práticas para a gestão de funcionalidades condicionais

Para gerir eficazmente as funcionalidades condicionais e garantir lançamentos de produto sem problemas, é importante seguir boas práticas que promovam a clareza e a eficiência. Eis algumas práticas fundamentais a ter em conta:

  • Utilize um sistema consistente: Quer seja através de uma ferramenta de gestão ou de um ficheiro de configuração, certifique-se de que o sistema é fácil de compreender e acessível a todos os membros da equipa.
  • Defina convenções de nomenclatura claras: Cada tipo de funcionalidade condicional (por exemplo, lançamento, permissão ou desativação) deve ter nomes únicos e descritivos, garantindo a clareza para todos, mesmo anos mais tarde.
  • Facilite a ativação e desativação: As funcionalidades condicionais devem poder ser ativadas ou desativadas facilmente, sem exigir alterações ao código ou a intervenção de um programador.
  • Limpe as funcionalidades condicionais obsoletas: Remova as funcionalidades condicionais que já não são necessárias para evitar a desorganização e reduzir a dívida técnica no seu sistema.

1. Utilize um sistema consistente para a gestão de funcionalidades condicionais

Não importa se utiliza uma ferramenta de gestão de funcionalidades condicionais (como, por exemplo, a LaunchDarkly), um ficheiro de configuração ou uma tabela de base de dados. Seja qual for a sua escolha, o sistema deve ser fácil de compreender e incluir boas convenções de nomenclatura, para que todos os engenheiros de software compreendam o que faz cada funcionalidade condicional.

Dedique algum tempo, quando introduzir as funcionalidades condicionais pela primeira vez, a discutir qual é a melhor solução para si, uma vez que pretende manter este sistema a longo prazo. 

2. Defina convenções de nomenclatura para diferentes tipos de funcionalidades condicionais

Pode implementar funcionalidades condicionais para alcançar muitas coisas diferentes:

  • Funcionalidades condicionais de lançamento: facilitam a implementação do código de produção antes de uma funcionalidade estar pronta para ser lançada publicamente.
  • Funcionalidades condicionais de experimentação: para criar um teste A/B, a funcionalidade condicional controla qual dos grupos de utilizadores recebe cada experiência.
  • Funcionalidades condicionais de permissões: permitem controlar o acesso a determinadas funcionalidades para diferentes clientes 
  • Funcionalidades condicionais de desativação: permitem degradar o seu produto de forma controlada em caso de problemas de desempenho ou sobrecarga. 

Convenções de nomenclatura claras para cada tipo de funcionalidade condicional significam que todos sabem o que cada uma faz, mesmo anos mais tarde. 

Get Free Access to the Product Vault
We’ve collected the goods — AI prompts, exclusive deals, and a library of resources for product leaders. Unlock your account for access.
Get Free Access

Have an account? Log In

3. Facilite a ativação e desativação de uma funcionalidade condicional

A beleza das funcionalidades condicionais é poderem ser ativadas e desativadas facilmente. Idealmente, deve ter uma forma de configurar uma funcionalidade condicional sem qualquer alteração ao código ou intervenção de um programador. Como as funcionalidades condicionais podem ser utilizadas de forma tão abrangente, várias equipas podem querer manipulá-las, por exemplo:

  • A equipa de QA, para investigar ou reproduzir uma situação específica de um cliente.
  • O serviço de apoio ao cliente, para ativar ou desativar uma funcionalidade para um cliente.
  • A equipa de DevOps, para encerrar (partes do) seu produto de forma controlada em caso de sobrecarga ou outros problemas. 

Se tiver um ecrã online para configurar as funcionalidades condicionais, tudo isto pode ser feito sem trabalho da sua equipa de engenharia. 

4. Torne visíveis as definições das funcionalidades condicionais

Deve ser fácil ver que combinação de definições de funcionalidades condicionais está configurada para um utilizador específico. Estas informações devem ser armazenadas no perfil do utilizador, tanto na sua base de dados de utilizadores como no seu sistema de análise.

Isto pode ser muito útil para o serviço de apoio ao cliente investigar quaisquer problemas comunicados. Também pode ser muito valioso para analisar os diferentes comportamentos dos utilizadores com diferentes definições. É essencial ao analisar os resultados de um teste A/B.

5. Limpe as funcionalidades condicionais obsoletas

As funcionalidades condicionais de lançamento e de experimentação são, por definição, necessárias apenas temporariamente. Após o lançamento completo de uma nova funcionalidade controlada por uma funcionalidade condicional ou a conclusão de uma experiência, reserve algum tempo para remover a funcionalidade condicional como último passo. Desta forma, não acumula dívida técnica no código e a sua gestão de funcionalidades condicionais mantém-se organizada e fácil de compreender. 

6. Evite Dependências Entre Sinalizadores

Cada sinalizador deve ter uma finalidade específica, independente de qualquer outro sinalizador. Para os sinalizadores de permissões, isto significa que o código precisa de ser tão modular que diferentes funcionalidades possam ser ativadas em qualquer combinação.

Se forem necessários vários sinalizadores para ativar um determinado caso de utilização, ou se estes entrarem potencialmente em conflito com outros sinalizadores, a configuração dos sinalizadores pode tornar-se confusa e, mais cedo ou mais tarde, surgirão problemas na experiência dos utilizadores. 

7. Utilize um Interruptor de Funcionalidade para Evitar Ramificações de Código

Ao discutir a implementação de uma funcionalidade maior na equipa de produto, irá discutir como dividir o desenvolvimento de software em partes mais pequenas. Nesta fase, deve também discutir a utilização de um sinalizador de funcionalidade. 

Quando implementa um sinalizador e o mantém desativado, evita a criação de ramificações de funcionalidades de longa duração. Em vez disso, o código da nova funcionalidade pode ser continuamente integrado e lançado sem ser exposto aos utilizadores numa implementação de código de CI/CD (integração contínua / entrega contínua) ou num sprint Agile. Isto melhora a integridade da sua base de código, uma vez que deixa de haver processos de integração grandes e complicados e quaisquer conflitos são identificados rapidamente.

Também separa o lançamento do código da apresentação das alterações aos utilizadores finais, conforme explicado no ponto 8.

8. Utilize Sinalizadores de Funcionalidades para Pequenos Lançamentos de Teste

Os lançamentos de novas funcionalidades importantes tendem a ser stressantes e arriscados, mas pode resolver este problema expondo primeiro a sua funcionalidade a um pequeno grupo de utilizadores, monitorizando os efeitos e revertendo a alteração, se necessário.

Se tiver utilizado um sinalizador de funcionalidade para integrar e lançar continuamente o seu código antes de o expor ao mundo, conforme recomendado no ponto 7, já dispõe da ferramenta necessária para o conseguir.

Quando a nova funcionalidade estiver pronta, ative-a no ambiente de produção para a disponibilizar apenas a testadores internos, depois a uma pequena percentagem de clientes (num lançamento canário) e, por fim, a toda a base de clientes. 

Em cada etapa, monitorize as suas métricas principais. Se algo correr mal em qualquer momento, pode facilmente desativar novamente o sinalizador e investigar o problema sem o stress de uma reversão complicada. 

O estudo de caso seguinte apresenta um exemplo de redução do risco associado a uma reformulação importante de um produto. 

Estudo de Caso - Sinalizadores de Funcionalidades na Reformulação do Guardian Soulmates

Quando trabalhei como gestor de produto do Guardian Soulmates (a plataforma de encontros por subscrição do Guardian na altura), enfrentámos dois desafios: um site móvel abaixo do padrão e uma identidade de marca cansada. Decidimos abordar a transição para um site responsivo com uma nova identidade de marca em duas etapas. 

Sejamos realistas: os clientes geralmente detestam mudanças, especialmente os clientes pagantes. Uma mudança de marca é um empreendimento importante que pode causar muitas perturbações.

Discutimos a melhor forma de atingir os nossos objetivos de substituir o site móvel e implementar uma nova identidade de marca sem causar demasiadas perturbações aos nossos subscritores. A solução escolhida foi um processo em duas etapas que envolvia dois sinalizadores de funcionalidades:

  • Sinalizador para o esquema responsivo: este sinalizador foi utilizado para nos permitir apresentar qualquer página individual com um esquema responsivo ou com o esquema de ambiente de trabalho existente (o site móvel separado permaneceu inalterado até estarmos prontos para lançar totalmente o novo site móvel). 
  • Sinalizador para a nova identidade de marca: este sinalizador permitia-nos apresentar todo o site com a identidade de marca antiga ou nova.

More Articles

Sinalizador para o Site Responsivo

Depois de criar uma estrutura responsiva, migrámos as páginas uma a uma para o novo esquema responsivo. Se estiver a trabalhar em algo semelhante, estas ferramentas de prototipagem de design responsivo podem ajudá-lo a testar e aperfeiçoar os esquemas antes de os disponibilizar.

Para cada página migrada, o sinalizador da funcionalidade responsiva era ativado primeiro para um pequeno grupo de utilizadores, com uma opção para enviar comentários.

Depois de alguns dias, a página responsiva era disponibilizada a todos os utilizadores. Este processo foi repetido até todo o site ser responsivo. 

Em seguida, o site móvel foi transferido para o novo site responsivo. A perturbação para os utilizadores de computadores foi mínima, uma vez que tínhamos feito a transição das páginas de forma incremental. 

A perturbação para os utilizadores móveis foi reduzida, uma vez que, na altura, não tínhamos muitos utilizadores móveis (dado que o antigo site móvel não era muito bom!). 

Sinalizador para a Mudança de Marca do Site Responsivo

Depois do lançamento do site responsivo, o sinalizador da funcionalidade para a nova identidade de marca permitia-nos alternar todo o site entre a identidade de marca antiga e a nova.

Os programadores implementaram um botão no site para alterar a identidade de marca por utilizador, o que permitia aos designers, à equipa de garantia de qualidade e também a mim, enquanto gestor de produto, acompanhar o progresso.

As páginas reformuladas eram lançadas continuamente, mas, no ambiente de produção, este sinalizador permanecia desativado para que nenhum utilizador visse páginas com a nova identidade de marca.

Quando todas as páginas estavam prontas, colocámos um botão no site para permitir que os utilizadores optassem por uma pré-visualização pública da nova imagem da marca. Este botão ativava a nova imagem da marca para um utilizador. Os utilizadores puderam dar-nos feedback e, após uma semana, ativámos a imagem da marca para todos. 

Todo o processo foi completamente indolor, tanto para a equipa de desenvolvimento como para os nossos clientes. Foi um excelente exemplo da utilização de sinalizadores de funcionalidades para reduzir o risco de uma grande reformulação do site. 

Se tiver interesse em compreender com maior detalhe o que fizemos, pode encontrar um artigo sobre o projeto de reformulação do Soulmates no Blogue de Engenharia do Guardian.

Considerações finais

Defina corretamente a estrutura inicial e verá que a utilização de sinalizadores de funcionalidades pode aumentar significativamente a flexibilidade e a eficiência do seu produto.

Deve também considerar a utilização de sinalizadores de funcionalidades em iniciativas de maior dimensão para minimizar o risco, bem como de um plano de gestão de lançamentos, de modo a garantir uma implementação sem problemas. Também pode utilizar a IA na gestão de lançamentos para criar este plano. O único limite à utilização de sinalizadores de funcionalidades é a sua imaginação!

Conte-nos, nos comentários, algumas formas engenhosas como utilizou sinalizadores de funcionalidades no seu produto. 

Se quiser mais dicas e truques para melhorar as suas competências de gestão de produtos, subscreva a nossa newsletter.

Obtenha a ajuda de outro Gestor de Produto da sua equipa com este guia útil: Como criar uma descrição eficaz de funções para um Gestor de Produto Ágil (+exemplo)

Também vale a pena consultar:

Kerstin Exner
I am a senior product manager with 15 years experience in a variety of companies, amongst them some of the best practice Product companies in the world like eBay and Guardian News & Media. In my varied roles I have worked in companies of various sizes and at different stages of maturity of their Product Management organizations. I have been the first product manager of the company in several of my roles and tackled introducing Product Management into a business. My other passion is User Experience. I undertook an MSc degree in Human-Centred Systems at City University London from 2010-2012. The combination of Product Management and User Experience means that user insight is always at the heart of my work. I believe that real-life Product Management can be quite daunting and the solutions to numerous challenges cannot always be found in textbooks. I hope that sharing my own experiences of what works in real life helps product managers to succeed and their products to thrive.
Follow the author:

You may also like