{"id":103,"date":"2026-08-14T09:00:00","date_gmt":"2026-08-14T12:00:00","guid":{"rendered":"https:\/\/dcoder.io\/blog\/ferramenta-de-projetos-organizada-por-cliente\/"},"modified":"2026-09-20T20:44:20","modified_gmt":"2026-09-20T23:44:20","slug":"ferramenta-de-projetos-organizada-por-cliente","status":"publish","type":"post","link":"https:\/\/dcoder.io\/blog\/ferramenta-de-projetos-organizada-por-cliente\/","title":{"rendered":"Reorganizei minha ferramenta de projetos por cliente, n\u00e3o por reposit\u00f3rio"},"content":{"rendered":"<p>Uso uma ferramenta pr\u00f3pria para tocar os projetos. Chama-se Shipyard, roda no meu computador e n\u00e3o tem usu\u00e1rio al\u00e9m de mim. Ela guarda hoje <strong>2.863 tarefas<\/strong>, das quais 2.596 j\u00e1 fechei, espalhadas por doze projetos.<\/p>\n<p>Durante um ano ela teve uma aba por reposit\u00f3rio. Parecia certo. Cada reposit\u00f3rio \u00e9 uma unidade de trabalho, com git pr\u00f3prio, deploy pr\u00f3prio, pasta pr\u00f3pria. O problema apareceu na conversa com cliente, n\u00e3o no c\u00f3digo.<\/p>\n<h2>A pergunta que a ferramenta n\u00e3o respondia<\/h2>\n<p>Um cliente meu tem sete sistemas, cada um num reposit\u00f3rio separado, com branch e deploy pr\u00f3prios. Quando ele perguntava o que faltava, eu abria sete abas, somava de cabe\u00e7a e respondia por aproxima\u00e7\u00e3o. Outro cliente tem dois sistemas e um site, mesma hist\u00f3ria em escala menor.<\/p>\n<p>O trabalho acontece por reposit\u00f3rio. A conversa acontece por cliente. Minha ferramenta estava do lado errado dessa fronteira.<\/p>\n<h2>O que mudei<\/h2>\n<p>Passei a ter <strong>uma aba por cliente<\/strong>, apontando para a pasta-raiz dele. Hoje s\u00e3o sete abas de cliente e cinco de projeto meu. As 113 tarefas que estavam espalhadas pelos subprojetos foram para as abas de cliente, com o nome do subprojeto entre colchetes no t\u00edtulo.<\/p>\n<p>Parece pouca coisa. Na pr\u00e1tica, abro uma aba e vejo tudo o que devo \u00e0quele cliente, sem somar nada. O que est\u00e1 parado aparece ao lado do que est\u00e1 andando. E tarefa que n\u00e3o pertence a cliente nenhum, tipo estudo ou ferramenta interna, fica nas abas de projeto pr\u00f3prio e n\u00e3o polui a conta.<\/p>\n<h2>O que ficou disso<\/h2>\n<p>Ferramenta interna tamb\u00e9m tem usu\u00e1rio, e esse usu\u00e1rio tem um jeito de pensar. Meu erro foi copiar para dentro dela a estrutura do disco, quando o que eu precisava era a estrutura da conversa. Git organiza c\u00f3digo. Cliente organiza compromisso. S\u00e3o dois recortes do mesmo trabalho, e a ferramenta que eu abro toda manh\u00e3 precisa do segundo.<\/p>\n<p>Vale para o software que entrego tamb\u00e9m. Quando um painel espelha o organograma de quem construiu, em vez do trabalho de quem usa, o resultado \u00e9 sempre o mesmo. Algu\u00e9m soma de cabe\u00e7a, todo dia, para chegar ao n\u00famero que interessa.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eu tinha uma aba por reposit\u00f3rio e n\u00e3o conseguia responder a pergunta mais simples do dia: o que falta para este cliente? A troca levou uma tarde.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-103","post","type-post","status-publish","format-standard","hentry","category-sem-categoria"],"_links":{"self":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/comments?post=103"}],"version-history":[{"count":1,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/103\/revisions"}],"predecessor-version":[{"id":113,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/103\/revisions\/113"}],"wp:attachment":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/media?parent=103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/categories?post=103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/tags?post=103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}