O livro de receitas da itexto

Escrever software é difícil: mantê-lo ainda mais. Neste post apresento uma técnica que nossa equipe aplica internamente, recomendamos a nossos clientes e que abrimos agora ao resto do mundo: o livro de receitas.

A ideia parece simples, é simples (quase óbvia) porém poucas equipes a aplicam. Neste post vamos conversar um pouco a respeito disto.

O que é um livro de receitas?

No dia a dia sempre surgem momentos nos quais você não consegue prosseguir na execução das suas tarefas devido a pequenos detalhes. São normalmente dúvidas bem simples: como exponho um serviço executado em minha máquina para o cliente testar? Como gero uma branch a partir de um commit? Como resolver o erro xpto que aparece quando executo o backup do MySQL?

São pequenos conhecimentos, triviais para os mais experientes, ocultos para os iniciantes, que impactam e muito a produtividade das equipes. Então por que não ter um local no qual documentemos estes conhecimentos para que na repetição dos problemas possamos usar esta base de conhecimento como referência?

O livro de receitas é este “local” no qual você documenta estes procedimentos para que outras pessoas não sofram o que você sofreu até descobrir como resolver aquela situação.

Como criamos nosso livro de receitas

Jornalisticamente Falando...: Gutemberg, aquele maldito capitalista!

O livro de receitas pode assumir as mais variadas formas. Nossa primeira versão era uma pasta compartilhada no Google Docs na qual colocávamos pequenos textos que ilustravam estas questões. As limitações deste formato rapidamente se apresentaram: conforme nosso conteúdo aumentava, categorizar o conteúdo ia se mostrando mais difícil. Poderíamos ter uma pasta por assunto, mas muitas receitas tangem mais de um assunto.

A segunda iteração foi um wiki. No caso usamos o que o Redmine provê e nos atendeu por um bom tempo. Era mais fácil encontrar o material, entretanto o problema da categorização ainda se mantinha. Colocávamos páginas que eram índices e, nestes índices, chegávamos ao assunto. Não só isto: havia momentos em que precisávamos aplicar um estilo ou imagem e ele não nos atendia tão bem quanto gostaríamos.

Finalmente veio a terceira iteração: adotamos o WordPress como solução e esta tem sido sua forma desde então. O WordPress atendeu diversos dos nossos requisitos essenciais e mais alguns:

  • O editor é excelente (especialmente o baseado em blocos).
  • Os mecanismos de busca são bem interessantes também, melhores que os das iterações anteriores.
  • Fácil de usar: em cinco minutos quem precisa escrever algo já pega o jeito da coisa.
  • Permite controlar o acesso ao conteúdo de forma fácil. Nosso livro de receitas é e continuará sendo privado por razões que vocês entenderão melhor adiante neste post.
  • A categorização é super adequada: podemos ter mais de uma categoria associada a um post.
  • Nos permite ver como está crescendo nosso conteúdo na medida em que apresenta quantos posts foram criados por mês.

Resumindo: WordPress foi a melhor solução que poderíamos encontrar.

Mas há um outro fator importante neste livro de receitas: todos da equipe deve ter acesso a seu conteúdo. O objetivo é compartilhar soluções.

E o compartilhamento de soluções é a forma mais eficiente que conheço de reuso.

Como escrevemos as receitas

Poemas de Luís de Camões. Um gênio da literatura portuguesa.
Aspirantes a Camões? Nem um pouco!!!

A receita deve ser simples: curta e direta. Essencialmente é composta por duas partes apenas:

  • O problema a ser resolvido: descrito em no máximo três frases.
  • A solução para o problema, que não deve ser muito longa também.

A concisão aqui é fundamental: ela torna claro a todos o problema que deve ser resolvido e já delineia o escopo do texto que escreveremos a seguir. Também apresenta um outro ganho inesperado: normalmente quando o autor da receita escreve títulos enormes este é o momento em que percebe que de fato não conhece o problema cuja solução deseja descrever (muito interessante isto!).

Já quanto à solução o ideal é que seja o mais simples possível. Pode se manifestar de qualquer forma:

  • Um passo a passo pra solução do problema.
  • Trechos de código fonte que exponham a solução do problema.
  • Um texto rápido explicando a solução.
  • Não raro apenas um link que aponte para outro lugar que contém a solução.
  • Uma imagem, vídeo, áudio. Há situações em que é simplesmente um arquivo com sua descrição ultra sucinta.

A linguagem não precisa ser shakespeariana. Não precisa ser um Machado de Assis, o importante é que você consiga transmitir a ideia e rápido para que seus colegas resolvam o mais prontamente possível aquele problema.

Vamos a um exemplo de receita então?

Um exemplo rápido

Erro mysqldump: Unknown table ‘COLUMN_STATISTICS’ in information_schema (1109)

Se deve à versão 8 do mysqldump ter uma nova flag padrão que busca por esta tabela, mesmo em versões anteriores do MySQL que ainda não a tenham.

Fácil de resolver: apenas forneça o parâmetro –column-statistics=0 ao mysqldump que o backup funcionará normalmente.

Mais detalhes neste link: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_column-statistics

Comentando o exemplo

Note como o exemplo é simples: o título mostra o problema que você enfrentou. Colocamos inclusive o código de erro ali, o que facilita a busca caso necessário.

O post também é categorizado. Neste caso, criamos uma categoria “MySQL” e outra chamada “Backups”. Assim fica fácil encontrar posts sobre estes assuntos.

E finalmente a descrição é simples, coloquial, e curta. Os colegas entendem o texto e facilmente aplicam a solução. E justamente por ser uma linguagem coloquial é que não recomendo que seu livro de receitas não seja público. Não raro alguém pode pode escrever alguns xingamentos ali (eu mesmo xingo bastante). 🙂

Além disto o fato de ser privado torna o ato de escrita mais convidativo para toda a equipe. Não são todos que querem ter seus textos publicados para que qualquer um os leia por aí. Isto sem mencionar que não raro alguém pode publicar algo errado ali. É papel da equipe aplicar as correções nos textos conforme aplicáveis.

Finalmente, notou que tem uma imagem ali? Ela é totalmente opcional: a coloquei apenas por que não raro os membros da equipe acessam com frequência este blog, então fica fácil identificar visualmente sobre o que aquela receita se refere.

Benefícios adicionais

O benefício óbvio é a função do livro de receitas, mas há outros ganhos que vale muito à pena mencionar.

O primeiro deles é o incentivo à escrita. Nossa experiência mostra que os melhores desenvolvedores são também aqueles que normalmente mais gostam de ler e, principalmente, escrever.

Isto porque o ato da escrita na prática é a externalização do nosso conhecimento. E você só consegue ter certeza de que realmente conhece algo se consegue descrever este algo por escrito e outras pessoas conseguem te entender.

(E o que é o ato de escrever se não a externalização em código do conhecimento que adquirimos a respeito do mundo?)

Outra vantagem é a produtividade imediata. Quando alguém enfrenta um problema já conhecido, o envio de um link já resolve a questão na hora, poupando com isto um bom tempo.

Observamos também que a confiança dos autores do livro de receita também aumenta com o tempo. Provavelmente devido à gratificação que é ver seus colegas prosperando graças à sua contribuição.

Mais que a confiança, é também um exercício que aumenta bastante o próprio sentimento de união do time. Quando uma mão lava a outra tudo fica muito mais fácil.

E agora vamos abrir o nosso livro de receitas para vocês!

Nosso livro de receitas já tem cinco anos de posts publicados e toda semana tem novos conteúdos. A exposição ao público geral deste material era vista como uma possibilidade remota, porém recentemente relendo alguns dos posts percebemos que muitos deles deviam ser publicados pois muitas pessoas que trabalham com desenvolvimento enfrentam estes problemas.

Sendo assim aguardem nossas postagens no blog da itexto. Semanalmente iremos elencar uma de nossas receitas privadas, lhe aplicar a maquiagem necessária para que possa se tornar pública e a publicaremos aqui.

Espero que esta ideia do livro de receitas lhe incentive a trilhar este caminho com sua equipe. Para nós tem sido uma experiência simplesmente maravilhosa.

Saiba quando publicamos novos conteúdos! Inscreva-se em nossa mailing list clicando no envelope abaixo!

6 comments on “O livro de receitas da itexto

  1. Interessante a abordagem que utilizam. Por aqui também sentimos a necessidade de documentar os problemas e soluções e estamos utilizando o Teams da Stack Overflow e está sendo bem satisfatório porque permite a publicação de respostas por todos da equipe além de possui tags e formatação de fácil utilização além de ser um ambiente que a maioria já está acostumada a utilizar.

    https://stackoverflow.com/teams

    1. O bacana do Teams é que quem participa do fórum é sua equipe e apenas a sua equipe.
      E isto é ótimo, por que promove a integração dos membros e evita o principal problema do Stack Overflow na minha opinião: o fato de que o indivíduo vai lá, encontra a solução que deseja, a aplica e não a divulga pra ninguém. Morre ali.

      Quando é algo comunitário e feito pela própria comunidade PRA comunidade, a história é outra. Fica muito melhor na minha opinião.

  2. Que experiência bacana Kiko, aqui na empresa também criamos algo semelhante, mas optamos por ser um repositório no GitHub, porque queremos ter o benefício de poder discutir e revisar as publicações através do mecanismo de pull requests e reviews. Ai vocês não vêm essa necessidade?

    Seria muito bacana se exporem alguns posts do Grails do seu livro de receitas. Aqui já temos alguns, poderíamos até de alguma forma fazer um intercâmbio.

    1. Oi Joás,
      na realidade o meio usado tanto faz. Cada um usa aquele que melhor se encaixa na sua situação.
      A ideia do Github é interessante, mas tem uma pequena limitação no nosso caso: há receitas que não vêm de desenvolvedores, então acaba que ele não seria tão acessível assim pra nós.
      E sobre as revisões, a própria natureza do WordPress nos permite isto também, por que ele salva as versões anteriores dos posts, isto sem mencionar os comentários que podem aparecer também.

      Sobre posts de Grails, pode aguardar que vêm sim! Tem um monte no nosso Livro de Receitas que queremos publicar aqui!

Responda

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *