{"id":509,"date":"2023-06-05T11:21:00","date_gmt":"2023-06-05T14:21:00","guid":{"rendered":"https:\/\/suspensao.blog.br\/descrenca\/?p=509"},"modified":"2023-06-04T17:48:28","modified_gmt":"2023-06-04T20:48:28","slug":"faturando-o-debito-tecnico","status":"publish","type":"post","link":"https:\/\/suspensao.blog.br\/descrenca\/faturando-o-debito-tecnico\/","title":{"rendered":"Faturando o d\u00e9bito t\u00e9cnico"},"content":{"rendered":"\n<p>Um tempo atr\u00e1s, <a href=\"https:\/\/mastodon.social\/@nukdf\/109936254198578789\">o homem, o mito, a lenda<\/a> Fabr\u00edcio Buzeto fez esta <a href=\"https:\/\/mastodon.social\/@nukdf\/109619474515127399\">esta interessante pergunta<\/a>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/suspensao.blog.br\/disbelief\/wp-content\/uploads\/2023\/02\/nuk-how-do-you-handle-tech-debt.png?ssl=1\" alt=\"Out of curiosity. Does your team keep a list of technical debt? Does it make you feel joy?\" class=\"wp-image-126\"\/><figcaption class=\"wp-element-caption\">S\u00f3 por curiosidade. Seu time mant\u00e9m uma lista de d\u00e9bitos t\u00e9cnicos? Isso faz voc\u00eas felizes?<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Isso me fez lembrar algumas coisas. Por alguns anos, fui respons\u00e1vel pelos portlets <a href=\"https:\/\/help.liferay.com\/hc\/en-us\/articles\/360018184591-Managing-Events-and-Calendar-Resources-with-Liferay-s-Calendar-Portlet\">Liferay Calendar<\/a> e <a href=\"https:\/\/help.liferay.com\/hc\/pt\/articles\/360018153271-Kaleo-Designer\">Kaleo Designer<\/a>. Eram aplicativos complexos, constru\u00eddos em ritmo acelerado quando o conceito de SPAs ainda estava em evolu\u00e7\u00e3o: muitas escolhas exigiam uma revis\u00e3o.<\/p>\n\n\n\n<p>Ent\u00e3o comecei a escrever t\u00edquetes do JIRA para d\u00e9bitos t\u00e9cnicos. Quando um desses problemas tornava uma demanda mais dif\u00edcil, eu convertia esse t\u00edquete em uma subtarefa da demanda. Como gosto de dizer, eu estava &#8220;faturando o d\u00e9bito na <em>feature<\/em>&#8220;.<\/p>\n\n\n\n<p>Comentei isso e ent\u00e3o ele me fez  <a href=\"https:\/\/mastodon.social\/@nukdf\/109620604549503141\">uma pergunta crucial<\/a>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/suspensao.blog.br\/disbelief\/wp-content\/uploads\/2023\/02\/nuk-why-not-treat-2.png?ssl=1\" alt=\"Why not treat them like any other card in the backlog then?\" class=\"wp-image-128\"\/><\/figure>\n<\/div>\n\n\n<p>De fato, por qu\u00ea?<\/p>\n\n\n\n<p>Bem, a princ\u00edpio, n\u00f3s tentamos! Eu apresentava as <em>issues<\/em> de d\u00e9bito t\u00e9cnico em nossas reuni\u00f5es de prioriza\u00e7\u00e3o. Ter os problemas escritos ajudou muito a chamar a aten\u00e7\u00e3o dos gestores, ali\u00e1s.<\/p>\n\n\n\n<p>D\u00e9bito t\u00e9cnicos s\u00e3o um peixe dif\u0107il de vender, no entanto. As pessoas s\u00e3o compreensivelmente cautelosas ao investir em algo cujo valor n\u00e3o \u00e9 evidente. Ainda assim, as altera\u00e7\u00f5es demoravam cada vez mais para serem entregues e os bugs de regress\u00e3o continuavam aparecendo. Precis\u00e1vamos corrigir a raiz dos problemas.<\/p>\n\n\n\n<p>\u00c9 por isso que comecei a trabalhar em d\u00e9bitos como parte das tarefas que agregam valor. Quando consert\u00e1vamos um d\u00e9bito para facilitar uma demanda, ficava evidente de que o trabalho extra valia a pena. Aquela refatora\u00e7\u00e3o n\u00e3o foi apenas uma ideia aleat\u00f3ria: ela nos trouxe valor.<\/p>\n\n\n\n<p>Essa \u00e9 a primeira raz\u00e3o para lidar com d\u00e9bito t\u00e9cnico como subtarefas de outras demandas: <strong>ao vincular a d\u00edvida a uma tarefa que entrega valor, \u00e9 mais f\u00e1cil justificar o esfor\u00e7o extra para as partes interessadas.<\/strong><\/p>\n\n\n\n<p>No in\u00edcio, esse &#8220;faturamento de d\u00e9bito&#8221; era apenas um dispositivo de comunica\u00e7\u00e3o. Mas houve um efeito colateral interessante: os problemas mais gritantes eram naturalmente resolvidos primeiro. Faz sentido: como trabalh\u00e1vamos neles quando causam problemas, os que causassem mais problemas eram resolvidos primeiro. Como prioriza\u00e7\u00e3o \u00e9 sempre um desafio (e priorizar d\u00e9bito t\u00e9cnico \u00e9 ainda mais dif\u00edcil), isso foi muito \u00fatil!<\/p>\n\n\n\n<p>Ainda t\u00ednhamos uma pilha de tarefas de d\u00e9bito, mas muitas j\u00e1 n\u00e3o eram relevantes. Algumas, j\u00e1 haviam sido resolvidas. Outras eram ideias elegantes no passado, mas n\u00e3o faziam mais sentido. Em retrospectiva, boa parte do &#8220;d\u00e9bito&#8221; eram prefer\u00eancias pessoais, ou suposi\u00e7\u00f5es que n\u00e3o eram mais verdadeiras ap\u00f3s alguma evolu\u00e7\u00e3o do produto.<\/p>\n\n\n\n<p>Esta \u00e9 a segunda raz\u00e3o para o faturamento da d\u00edvida:<strong> trabalhar na &#8220;sa\u00fade do c\u00f3digo&#8221; como parte de demandas \u00e9 uma maneira eficaz de priorizar em qual d\u00e9bito merece o esfor\u00e7o.<\/strong><\/p>\n\n\n\n<p>Veja que \u00f3timo! Tiv\u00e9ssemos resolvido o d\u00e9bito t\u00e9cnico sozinho \u2014 por exemplo, em uma for\u00e7a-tarefa \u2014, talvez fiz\u00e9ssemos mudan\u00e7as que poderiam, de fato, dificultar a evolu\u00e7\u00e3o futura. A cobran\u00e7a de d\u00edvidas permitiu-nos confirmar que solicita\u00e7\u00f5es se adequavam aos nossos objetivos. E houve uma consequ\u00eancia mais sutil e importante.<\/p>\n\n\n\n<p>N\u00f3s, desenvolvedores, temos opini\u00f5es fortes, e isso \u00e9 bom. Geralmente tentamos transformar essas opini\u00f5es em um objetivo. Mas \u00e9 dif\u00edcil saber se um objetivo \u00e9 o correto. Uma vez que usamos essas ideias para ajudar em algo mais claramente relevante, esse objetivo se transforma em uma ferramenta. Ferramentas s\u00e3o muito mais f\u00e1ceis de avaliar!<\/p>\n\n\n\n<p>Esse \u00e9 um terceiro motivo para  faturar o d\u00e9bito: <strong>quando o d\u00e9bito t\u00e9cnico est\u00e1 atrelada \u00e0 entrega de valor, a for\u00e7a criativa da equipe se alinha com os objetivos da organiza\u00e7\u00e3o.<\/strong><\/p>\n\n\n\n<p>Nossa experi\u00eancia com essa estrat\u00e9gia foi bastante eficaz. Todos sabiam que suas sugest\u00f5es seriam avaliadas: as tarefas de sa\u00fade n\u00e3o seriam mais uma obriga\u00e7\u00e3o a priorizar, mas um conjunto de ferramentas que nossos colegas buscariam para ajudar em seus desafios O <em>backlog<\/em> de d\u00e9bito t\u00e9cnico n\u00e3o era mais apenas um po\u00e7o dos desejos.<\/p>\n\n\n\n<p>Os aplicativos tamb\u00e9m ficaram melhores. Quando comecei a trabalhar no Calend\u00e1rio, por exemplo, ele era visto como um portlet especialmente problem\u00e1tico. O primeiro lan\u00e7amento n\u00e3o podia agendar eventos! Quando sa\u00ed daquele time, o Calend\u00e1rio n\u00e3o tinha bug de prioridade 3 ou superior (n\u00edveis que temos que corrigir). E entregamos uma boa quantidade de recursos, mesmo alguns ausentes nos l\u00edderes da concorr\u00eancia. Nada mal para um produto que fora um exemplo de como n\u00e3o funcionar!<\/p>\n\n\n\n<p>Por tudo isso, sempre me pareceu bom pagar o d\u00e9bito t\u00e9cnico como parte das demandas, mas nunca pensei muito sobre por que. Ent\u00e3o, obrigado pela pergunta, Fabricio! Foi uma prazer pensar nisso.<\/p>\n\n\n\n<p><strong>PS<\/strong>: Acabei de lembrar que Ron Jeffries escreveu <a href=\"https:\/\/ronjeffries.com\/xprog\/articles\/refactoring-not-on-the-backlog\/\">um excelente post sobre quando refatorar<\/a>. Ele na verdade \u00e9 <em>contra<\/em> algo que defendi aqui, mas vi bastante semelhan\u00e7as, e naturalmente ele explica muito melhor. Vale muito a leitura!<\/p>\n\n\n\n<p><em>(Esta \u00e9 uma tradu\u00e7\u00e3o de <a href=\"https:\/\/suspensao.blog.br\/disbelief\/billing-the-technical-debt\/\">Billing the Technical Debt<\/a>, um post em <a href=\"https:\/\/suspensao.blog.br\/disbelief\/\">Suspension of Disbelief<\/a>.<\/em>)<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um tempo atr\u00e1s, o homem, o mito, a lenda Fabr\u00edcio Buzeto fez esta esta interessante pergunta: Isso me fez lembrar algumas coisas. Por alguns anos, fui respons\u00e1vel pelos portlets Liferay Calendar e Kaleo Designer. Eram aplicativos complexos, constru\u00eddos em ritmo acelerado quando o conceito de SPAs ainda estava em evolu\u00e7\u00e3o: muitas escolhas exigiam uma revis\u00e3o. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[164],"class_list":["post-509","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-programacao"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23QLV-8d","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/posts\/509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/comments?post=509"}],"version-history":[{"count":3,"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/posts\/509\/revisions"}],"predecessor-version":[{"id":516,"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/posts\/509\/revisions\/516"}],"wp:attachment":[{"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/media?parent=509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/categories?post=509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/suspensao.blog.br\/descrenca\/wp-json\/wp\/v2\/tags?post=509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}