{"id":24,"date":"2007-05-10T05:55:26","date_gmt":"2007-05-10T04:55:26","guid":{"rendered":"http:\/\/www.dtsato.com\/blog\/default\/Agile\/XP\/?permalink=Propriedade-Coletiva-do-Conhecimento.html"},"modified":"2007-05-10T05:55:26","modified_gmt":"2007-05-10T04:55:26","slug":"propriedade-coletiva-do-conhecimento","status":"publish","type":"post","link":"https:\/\/www.dtsato.com\/blog\/2007\/05\/10\/propriedade-coletiva-do-conhecimento\/","title":{"rendered":"Propriedade Coletiva do Conhecimento"},"content":{"rendered":"<p>Depois de recentes discuss\u00f5es sobre o assunto, achei interessante compartilhar algumas id\u00e9ias sobre uma das pr\u00e1ticas de XP: a Propriedade Coletiva de C\u00f3digo.<\/p>\n<p>Uma das principais caracter\u00edsticas nas <span class=\"nobr\"><a href=\"http:\/\/www.martinfowler.com\/bliki\/CodeOwnership.html\">defini\u00e7\u00f5es<\/a><\/span> da <span class=\"nobr\"><a href=\"http:\/\/www.improveit.com.br\/xp\/praticas\/codigo_coletivo\">pr\u00e1tica<\/a><\/span> \u00e9 o que podemos chamar de socializa\u00e7\u00e3o do c\u00f3digo. N\u00e3o \u00e9 que ningu\u00e9m \u00e9 dono do c\u00f3digo, mas sim TODOS s\u00e3o respons\u00e1veis por TODO o c\u00f3digo. Isso implica que a equipe n\u00e3o corre o risco de depender do &#8220;dono da classe&#8221; para fazer uma altera\u00e7\u00e3o ou melhorar uma parte do sistema. Se o &#8220;dono&#8221; ficar doente ou tirar f\u00e9rias, a equipe continua produzindo. Por\u00e9m, como em toda metodologia \u00e1gil, essa pr\u00e1tica pode precisar ser <span class=\"nobr\"><a href=\"http:\/\/martinfowler.com\/bliki\/ShiftingToCodeOwnership.html\">adaptada<\/a><\/span> ao seu contexto.<\/p>\n<p>O <span class=\"nobr\"><a href=\"http:\/\/giulianomega.blogspot.com\/\">Giuliano<\/a><\/span> me fez perceber hoje que minha defini\u00e7\u00e3o da pr\u00e1tica ia um pouco al\u00e9m do que descrevi acima. Acredito que a equipe tem muito mais a ganhar com o compartilhamento do conhecimento sobre o c\u00f3digo. Poder alterar qualquer classe \u00e9 importante, mas \u00e9 muito melhor saber o que est\u00e1 acontecendo no sistema como um todo. \u00c9 essa vis\u00e3o global que vai agu\u00e7ar o &#8220;olfato&#8221; da equipe para identificar <span class=\"nobr\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/Code_smell\">&#8220;maus-cheiros&#8221;<\/a><\/span>.<\/p>\n<p>Mas como esse compartilhamento de conhecimento acontece na pr\u00e1tica? XP sugere outras pr\u00e1ticas que podem ajudar, como <span class=\"nobr\"><a href=\"http:\/\/www.improveit.com.br\/xp\/praticas\/programacao_par\">Programa\u00e7\u00e3o Pareada<\/a><\/span> e <span class=\"nobr\"><a href=\"http:\/\/www.improveit.com.br\/xp\/praticas\/integracao\">Integra\u00e7\u00e3o Cont\u00ednua<\/a><\/span>. Minha experi\u00eancia me mostrou que analisar os <i class=\"italic\">logs<\/i> e <i class=\"italic\">diffs<\/i> entre as revis\u00f5es do reposit\u00f3rio tamb\u00e9m ajuda. N\u00e3o vamos excluir tamb\u00e9m a comunica\u00e7\u00e3o face-a-face. No entanto, analisar <i class=\"italic\">logs<\/i> e <i class=\"italic\">diffs<\/i> nem sempre \u00e9 uma tarefa trivial. Especialmente quando a equipe integra c\u00f3digo novo v\u00e1rias vezes ao dia.<\/p>\n<p>Outro dia estava discutindo exatamente sobre o mesmo assunto com o <span class=\"nobr\"><a href=\"http:\/\/fly.ath.cx\">Julian<\/a><\/span> e ele estava procurando por um meio mais eficaz de garantir que certas informa\u00e7\u00f5es essenciais seriam lidas pelos outros programadores. Coisas do tipo: <i class=\"italic\">&#8220;Criei uma nova classe para encapsular o comportamento X. Usem essa classe a partir de agora&#8221;<\/i>, <i class=\"italic\">&#8220;Novo padr\u00e3o de c\u00f3digo: cabe\u00e7alho alterado para incluir dados-extra. Alterar em todas as classes criadas\/atualizadas a partir de agora&#8221;<\/i> ou <i class=\"italic\">&#8220;Filtro de autentica\u00e7\u00e3o criado. Considerar esse aspecto ao criar novas funcionalidades&#8221;<\/i>. Seria uma esp\u00e9cie de &#8220;Release Notes&#8221; das \u00faltimas altera\u00e7\u00f5es no reposit\u00f3rio. Acredito que uma ferramenta poderia auxiliar os desenvolvedores na comunica\u00e7\u00e3o desse tipo de conhecimento. Eu gostaria de ver algo assim ao sincronizar minha c\u00f3pia local do projeto.<\/p>\n<p>E voc\u00eas, como lidam com esse compartilhamento de conhecimento t\u00e9cnico no seu projeto? Quais as adapta\u00e7\u00f5es que voc\u00eas consideram apropriadas para o seu contexto?<\/p>\n<p class=\"paragraph\"\/>\n","protected":false},"excerpt":{"rendered":"<p>Depois de recentes discuss\u00f5es sobre o assunto, achei interessante compartilhar algumas id\u00e9ias sobre uma das pr\u00e1ticas de XP: a Propriedade Coletiva de C\u00f3digo. Uma das principais caracter\u00edsticas nas defini\u00e7\u00f5es da pr\u00e1tica \u00e9 o que podemos chamar de socializa\u00e7\u00e3o do c\u00f3digo. N\u00e3o \u00e9 que ningu\u00e9m \u00e9 dono do c\u00f3digo, mas sim TODOS s\u00e3o respons\u00e1veis por TODO [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[16,41,53,94],"class_list":["post-24","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-collective","tag-knowledge","tag-ownership","tag-xp"],"_links":{"self":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts\/24","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/comments?post=24"}],"version-history":[{"count":0,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/media?parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/categories?post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dtsato.com\/blog\/wp-json\/wp\/v2\/tags?post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}