Mas fazer yak shaving é divertido
(parksb.github.io)- Ao tentar personalizar livremente o blog, o autor acabou criando desde escrita em HTML, um sistema de escrita em JSON e conversão de Markdown até ferramentas de compilação e deploy, o que no fim levou à experiência de implementar por conta própria um gerador de site estático
- yak shaving se refere a uma situação em que uma cadeia de tarefas para alcançar um objetivo vai se afastando do propósito original; a expressão foi criada por Carlin Vieri, do MIT AI Lab
- Engenheiros e gestores tendem a cair facilmente na armadilha de construir do zero quando não gostam de soluções prontas ou sentem que elas não se encaixam nos requisitos
- Com orçamento e tempo limitados, pode ser mais importante do que a diversão de implementar tudo por conta própria escolher alternativas que atendam aos requisitos centrais e reduzir o volume de trabalho
- Há casos em que isso leva a grandes resultados, como o TeX de Donald Knuth, mas a maioria dos yak shavings pode fracassar; ainda assim, se houve aprendizado, isso por si só tem valor
Um blog feito à mão acabou virando um gerador de site estático
- Não usa geradores de site estático nem frameworks como Jekyll, Hugo, Gatsby
- No início, testou algumas ferramentas, mas achou que ofereciam pouca liberdade de customização e decidiu criar a própria solução
- Escrever posts em HTML era incômodo; para resolver isso, criou um sistema de escrita baseado em arquivos JSON, mas ele também parecia estranho para textos longos
- Depois, ao criar também um serviço para converter arquivos Markdown em HTML e ferramentas para compilar e fazer deploy dos arquivos resultantes, acabou, na prática, construindo do zero um gerador de site estático
O significado e a origem de yak shaving
- yak shaving descreve a situação em que, ao seguir tarefas relacionadas para alcançar um objetivo, a pessoa perde o propósito original e acaba fazendo algo completamente diferente
- O exemplo do LangDev IRC mostra alguém que vai cortar madeira com um machado, mas antes precisa encontrar uma pedra para afiá-lo; para ir à vila onde há uma boa pedra, precisa conseguir um yak; como o pelo do yak está comprido, acaba tendo de tosá-lo
- O exemplo de Seth Godin começa com lavar o carro e passa por mangueira, Home Depot, E-ZPass, o E-ZPass do vizinho e um problema com um travesseiro emprestado, até terminar com a tosa de um yak no zoológico
- A expressão foi criada por Carlin Vieri no MIT AI Lab
- Vieri jogou hóquei até tarde numa terça-feira e, ao jantar de madrugada, assistiu ao episódio Yak Shaving Day de The Ren & Stimpy Show
- Alguns dias depois, enquanto lidava com burocracias como autorização administrativa, configuração de conta da DHL e procura de uma agência dos correios, disse a um colega que estava fazendo yak shaving
- Nos meses seguintes, continuou usando a expressão no laboratório, e ela se espalhou
O risco de construir tudo do zero
- Um dos erros frequentes de engenheiros ou de gestores que lideram equipes de engenharia é construir do zero
- O engenheiro pode não gostar de soluções prontas ou querer provar sua própria capacidade
- O cliente ou o gestor pode entender mal o que a solução existente faz ou concluir que ela não atende exatamente aos requisitos
- A maioria dos projetos, seja de produto ou projeto pessoal, tem orçamento e tempo limitados
- Quando se começa a implementar por conta própria, é fácil isso evoluir para yak shaving; e, uma vez dentro, não dá para saber onde vai terminar, podendo até levar ao abandono do objetivo original
- Nesses casos, é mais adequado procurar alternativas que atendam ao núcleo dos requisitos e reduzir ao máximo o trabalho
Mesmo assim, por que yak shaving é divertido
- É difícil largar o yak shaving porque há prazer em construir algo com as próprias mãos
- O processo de criar algo que não existia, encontrar problemas e resolvê-los, e mergulhar na cadeia de conhecimento para entender como as coisas funcionam atrai os engenheiros
- Mesmo para quem não é engenheiro, a própria ideia de fazer aquilo que se quer por conta própria é atraente
- Frederick P. Brooks Jr. resume em The Mythical Man-Month por que programar é divertido
- o prazer puro de criar algo
- a alegria de fazer algo útil para outras pessoas
- o fascínio de construir um objeto complexo, como um quebra-cabeça de peças interligadas, e ver suas regras funcionarem em ciclos sutis
- a alegria de continuar aprendendo
- o prazer de trabalhar com um meio de expressão flexível e fácil de manipular
TeX: um yak shaving que deu certo
- TeX também é um caso nascido de yak shaving
- TeX é um sistema de composição tipográfica criado pelo professor de Stanford Donald Knuth e se refere ao sistema completo em funcionamento, incluindo a linguagem de composição e o compilador que a processa
- Como facilita a entrada de fórmulas, é amplamente usado nas áreas de ciências sociais, ciências e engenharia; a maioria dos usuários utiliza LaTeX, um conjunto de macros para usar o TeX com mais facilidade
- Em 1976, ao preparar a 2ª edição do volume 2 de The Art of Computer Programming, Donald Knuth queria a composição tipográfica usada na 1ª edição, mas ela já não estava mais disponível
- Insatisfeito com as alternativas, Knuth viu um livro de composição tipográfica digital de Patrick Winston e decidiu criar ele mesmo um sistema de composição digital
- Knuth fez a primeira versão do TeX na linguagem SAIL e depois concluiu o desenvolvimento usando a linguagem WEB, criada por ele
- O código-fonte em WEB mistura documentação e código
- Com os programas Weave e Tangle, é possível extrair de um arquivo WEB, respectivamente, um arquivo TeX e um arquivo Pascal
- Knuth chamou esse paradigma de programação de literate programming
- Junto com Michael Plass, Knuth também criou o algoritmo de quebra de linha Knuth-Plass, que decide onde dividir as linhas em um parágrafo
- Ele projetou a fonte Computer Modern para o TeX, criou a linguagem METAFONT para definir gráficos vetoriais e também desenvolveu o formato DVI para produzir a saída do TeX sem depender de um dispositivo específico
- Em outras palavras, para escrever um livro, ele acabou criando uma linguagem de programação, um paradigma, algoritmos, ferramentas e fontes; a produção do TeX levou quase 10 anos, e o livro também saiu com esse atraso, mas o esforço não foi em vão
Entre fracasso e aprendizado
- TeX é um caso extremo de sucesso, e a maioria dos yak shavings fracassa
- É preciso parar no ponto certo, mas muitas vezes é difícil desistir porque o tempo investido já parece valioso ou porque o próprio yak shaving é divertido
- Mesmo quando é preciso ir até o fim, pode surgir o pensamento “o que exatamente eu estou fazendo agora?”, o interesse pode esfriar, ou os recursos destinados ao projeto podem se esgotar e interrompê-lo
- Para quem quer aprender, o yak shaving pode ser extremamente eficaz
- Muitas aulas de ciência da computação, independentemente da intenção do professor, exigem algum grau de yak shaving, e às vezes se aprende mais ao explorar o conhecimento ao redor do que ao focar apenas no enunciado do trabalho
- Para construir um sistema de computação no estilo yak shaving, é preciso estudar desde Boolean logic, circuitos lógicos, arquitetura de computadores, linguagens de programação e sistemas operacionais
- The Elements of Computing Systems de Noam Nisan e Shimon Schocken segue exatamente esse processo
- Mesmo sem chegar até o fim, se você aprendeu alguma coisa enquanto tosava o yak, isso por si só já tem valor
2 comentários
Parece que a versão em coreano do post é a original.
https://parksb.github.io/article/32.html
Comentários do Lobste.rs
Tosar o iaque é divertido, mas é preciso definir algum limite de profundidade de recursão ou de esforço e parar quando chegar nele
Acho realmente irritante quando inventam uma expressão que quase ninguém usa e a empregam como se fosse um termo que todo mundo conhece. Usuários do Reddit são especialmente bons nisso, sempre citando alguma tal lei
Encontrei a fonte no MIT para esse termo: https://projects.csail.mit.edu/gsb/old-archive/…
Se você nunca entrar em contato com coisas fora do seu horizonte, como vai ampliar esse horizonte?