Este artigo foi traduzido por máquina.

Limpeza de código

Usando técnicas ágeis para superar as dificuldades técnicas

David Laribee

Em cada codebase há cantos escuras e você tenha medo de alleys. Código que pedaços de volta com bugs regressão; código quando você tenta siga, irá unidade que você mad; código é incrivelmente frágil.

Ward Cunningham criada uma metáfora Linda para partes propensos a erros, disco rígido de alteração de código quando ele likened dívida financeira. Dívida técnica impede a frente, movendo de profiting partir permanecendo “ em preto. ” Como no mundo real, há dívida barata, dívida com um interesse menor do que você pode fazer em um instrumento financeiro de baixo risco. Em seguida, há coisas cara, as taxas de juros alta cartão de crédito empilhadas em dívida ainda mais.

Dívida técnica é um arrastar. Ele pode eliminar a produtividade, tornando a manutenção irritante, difícil ou, em alguns casos, impossível. Além do óbvia desvantagem econômica, há um custo real psicológico para dívida técnico. Nenhum desenvolvedor goza sentado para seu computador em saber a manhã ele tem sobre a face incrivelmente frágil complicado código fonte. Frustração e helplessness assim engendered geralmente é uma causa raiz mais problemas systemic, como desenvolvedor giro — apenas um dos custos reais econômicas de dívida técnico.

Cada codebase que já trabalhou ou revisados contém algumas medidas dívida técnica. Uma classe de dívidas é bastante inofensiva: byzantine dependências entre tipos nomeados bizarrely em recesses estáveis, raramente modificados de seu sistema. Outra é impreciso código que é facilmente corrigido no ponto, mas muitas vezes ignorado em urgentes para resolver problemas de prioridade mais alta. Há muitos exemplos mais.

Este artigo descreve um fluxo de trabalho e vários táticas para lidar com dívida juros alta. Os processos e práticas recomendadas que vai de detalhes não são novas. Eles são tirados retos de playbook Lean/Agile.

O caso para corrigindo dívida

A pergunta “ deve podemos corrigir dívida técnica, ” é um brainer não no meu livro. Você deve do curso. Dívida técnica funciona contra suas metas porque ele diminui você longo do tempo. Há uma visualização conhecida chamada de custo de alteração curva (consulte do Figura 1), que ilustra a diferença entre a 100 por cento-qualidade-teste-abordagem orientada e abordagem cowboy-coder-hacking-with-duct-tape.

Cost of Change Curve

Figura 1 custo de curva alterar

O custo de alteração curva ilustra que alta qualidade, simples e fácil seguir designs talvez custo mais inicialmente, mas incorrer dívida menos técnica — subseqüentes adições e modificações no código são menos onerosa longo do tempo. A curva de qualidade (azul), você pode ver o custo inicial é maior, mas é previsível longo do tempo. A curva golpe it (vermelha) obtém um custo menor de entrada, mas futuro desenvolvimento, manutenção e o custo total de proprietário de um produto e seu código se torna cada vez mais caro.

Primeira lei de programação ” ( c2.com/cgi-bin/wiki?FirstLawOfProgramming) estados de Ward Cunningham, “ diminuindo a qualidade aumenta o tempo de desenvolvimento. ”

“ O software de qualidade leva a menor quantidade de tempo para desenvolver. Se você tiver o código é simples como possíveis, testes estão completos e um design que se ajuste exatamente à direita, adições e alterações acontecem da maneira mais rápida possível porque o impacto é menor. Conseqüentemente, se você vise algo fora, mais você vise o mais lento você vá porque o custo de adição ou alteração cresce com cada linha de código. ”

Dívida técnica, simplesmente coloque irá diminuir a taxa de transferência de sua equipe longo do tempo.

Um dos meus joys excelentes no desenvolvimento de software é relishing sensação de produtividade bruta. O competindo e inverso sentir, para mim pelo menos, é sofrimento. É doloroso quando não estou produtivo e ele tem dificuldade robs me potencial de produtividade, os chamados “ boas dias no trabalho. ” Há muitas fontes de dor no desenvolvimento de software, mas nenhum mais óbvio que um codebase rígida e caótica. Esse efeito psicológico assume uma ligação ânimo da equipe que, por sua vez, faz com que produtividade latência.

Sistemas pensando

Para corrigir dívida técnica, você precisa cultivate comprar-in de interessados e colegas semelhantes. Para fazer isso, você precisa iniciar pensando systemically. Sistemas pensando é pensar de longo prazo. É pensar de investimento. É a idéia esforço colocar em será hoje permitem que você andamento em um ritmo previsível e mantido no futuro.

Talvez seja mais fácil explicar sistemas pensando com uma analogia. Eu mora em Atlanta, Georgia, em um ambiente pouco quaint chamado Inman Park centro. Estou principalmente muito feliz lá. Eu reservar, no entanto, alguns irritação relacionada a ignorância aparentemente completa de planejamento Urbano. Ruas em Campinas são byzantine, Labirinto semelhante, loucura provoking. Quando perder sua vez, você não pode simplesmente loop volta. Se você fizer isso, você vai ser enviada em um caminho para quem-sabe-onde spiraling. Parece haver pouco rhyme ou razão para o planejamento de estradas neste contrário muito agradável canto do mundo.

Compare isso com ruas ordenadas e vias de Manhattan em Nova York (a maioria dos, mesmo assim). É como se um instrutor de drill Marinha empresas projetado a cidade. Avenidas alongar o comprimento da Ilha, Norte para marcadores latitudinais Sul e formulário de ruas organizado, para baixo seu comprimento. Além disso, as ruas e avenidas são nomeadas na seqüência numérica: Primeiro Avenue, Avenue Second, 42nd Street, Rua 43rd e assim por diante. Você raramente vai movimentar mais de um bloco na direção errada.

Quais são raiz causa para a diferença entre Atlanta e Nova York nessa dimensão comparação?

Em Campinas as ruas foram formadas por cattle usando caminhos. Você ouviu direita, me cattle caminhos de . Alguns necessidade surgiu para freqüentemente mover entre o centro Urbano e suburbs, momento em que alguns caubói pensou, “ golly, seria mais fácil de transformar esses aqui cattle caminhos em estradas? ”

A visão do rio estado Legislature aplicado e prudência para o design da cidade crescente e o maior no estado. Eles escolheram o plano gridiron com ruas ordenadas, previsíveis e vias. Eles foram pensando no futuro.

Essa história obtém a essência de sistemas pensando. Enquanto legislativas processos são lentos, investimento no compromisso para visão e a hora paga dividendo maior de tempo de vida de um sistema . True você terá que lidar com doido cabs em ruas média de Manhattan, mas você poderá encontrar as utilidades em questão de dias. Em Atlanta, ele foi um ano de Obtendo perdidos e eu agradecer pensadores os sistema responsáveis para o Global Positioning System (GPS) cada dia.

Produtos de projetos

A idéia de ter uma equipe de desenvolvimento conclui um projeto e lança sobre a parede para uma equipe de manutenção fundamentalmente falhas. Cometer sem erros, você está trabalhando em um produto e se tiver êxito, ele vai live um longo, longo tempo.

Se você tiver o mesmo alguns anos de experiência como desenvolvedor profissional, você provavelmente já passou o efeito de gravidade crescente. Desenvolver uma parte do software que não se destina a última ou ser complicada ou alterar. E seis meses depois, o que você está fazendo? Modificando? Estendendo? Corrigindo erros?

Software útil tem o hábito de adequar-se ao redor por muito tempo às vezes desagradável. Ele é para você escolher a metáfora que você deseja reverter com. Será tendem uma floresta lindo Redwoods Califórnia, entidades viver tolerando os séculos e alcançar alturas mais altos, ou você permitirá contínuos vinha de Kudzu para starve sua floresta luz?

Workflow básico

Neste ponto, espero que eu tenha convencido a que dívida técnica pode tirar uma ligação horrível em sua saúde mental e linha de inferior do cliente. Espero, também, aceite a necessidade de assumir uma exibição longer-range os produtos que você está criando.

Agora let’s descobrir como aprofundar-se dessa brecha.

Não importa a loja meu sentido é que o fluxo de trabalho básico para lidar com dívidas técnicas — realmente qualquer tipo de aperfeiçoamento — é repetitivo. Essencialmente, você deseja fazer quatro coisas:

  1. Identifica onde você tem dívidas. Quanto cada item dívida está afetando linha inferior de sua empresa e produtividade da equipe?
  2. Criar um caso comercial e falsifique um consenso na prioridade com aqueles afetados por dívida, equipe e partes interessadas.
  3. Corrigi dívida escolhido cabeça em com táticas comprovadas.
  4. Repita. Volte para a etapa 1 para identificar dívida adicional e mantenha a linha em melhorias feitas.

Vale a pena mencionar, para o software processo nerd lá fora, este fluxo de trabalho é adaptado a partir de uma abordagem de gerenciamento de negócios chamada teoria de restrições (ToC) criado pelo Eliyahu Goldratt ( goldrattconsulting.com ). ToC é um modelo de sistemas pensando que fornece uma estrutura para melhorar a produtividade geral do sistema. Esta é uma simplificação bruta, mas ToC afirmado na idéia de que um sistema (um recurso de fabricação, por exemplo) só é tão produtivo como seu afunilamento maior. Valor, como uma solicitação de recurso ou automóvel ou qualquer item vendável é concebida de, projetado, produzido e implantado. Um recurso pode ser solicitado por um cliente interno ou externo, e esse recurso flui através de sua empresa (sistema), transformando o uma idéia para um resultado tangível. O que acontece quando esses recursos empilhadas na frente da sua equipe de garantia de qualidade? O que acontece quando há mais demanda para desenvolvimento de uma equipe de desenvolvimento pode atender? Obtenha um gargalo e todo o sistema fica lento.

É muito provável que você tem muitas áreas da dívida — afunilamentos muitos — em sua base de código. Localizar o débito diminui a maioria terá o efeito líquido maior em aumentar sua taxa de transferência. Compreendendo, em seguida, lidar com dívidas e resultante melhorias como uma equipe — como um sistema — é a maneira mais eficiente para fazer a alteração positiva, porque mais olhos e mãos no código equivale a menos risco e melhor designs.

Identificar áreas de dívida

É importante que você consiga apontar áreas problemáticas. Se você não tiver sido controlando-los de um wiki ou uma lista compartilhada ou em comentários do código, a sua primeira tarefa é encontrar o débito.

Se você estiver trabalhando em uma equipe, sugiro chamando uma reunião para desenvolver uma lista de concreta de áreas principais da dívida em seu código. Uma lista exaustiva não é importante. Focalizar capturando itens big-ticket. Esta reunião está sua primeira oportunidade, como um líder de equipe, para iniciar o forjamento consenso. Uma maioria mais que simples de membros deve concordar e entender um item para ele tornar a lista.

Depois de ter a lista, verifique durável. Criar um tópico wiki, gravar em um quadro de comunicações (com “ DO NOT ERASE ” destaque escrito em um canto) ou qualquer funciona na sua situação. A mídia que você escolher deve ser visível, permanente e fácil de usar. Ele deve estar na sua face regularmente. Você precisa retornar a essa lista e groom-lo. Seres humanos ter uma quantidade limitada de memória de curto prazo, portanto, sugiro manter uma lista de entre cinco e nove itens mais incômodos. Não se preocupe muito sobre como manter um inventário — itens importantes serão superfície novamente se elas estiverem realmente, bem, importante.

Usando métricas para localizar áreas de problemas

Às vezes é difícil encontrar dívida, especialmente se uma equipe é nova para uma base de código. Em casos onde não há nenhuma memória coletiva ou tradição oral para desenhar em, você pode usar uma ferramenta de análise estática, como NDepend ( ndepend.com ) para investigar o código para os pontos mais problemáticos.

Ferramentas são, na melhor assistenciais ou talvez até mesmo uma segunda opção. Ferramentas não informam o que fazer. Eles, no entanto, você terá entradas para tomada de decisões. Não há nenhum única métrica para débito de código, mas as pessoas que o trabalho em um dia de produto no e dia out certamente podem apontar para esses cantos escuras que causam a maioria dos dificuldade. Ferramentas de análise estática dirá a você onde você tem dívidas de implementação. Infelizmente, eles não informará onde você tem dívidas devido a fatores como nomeação ruim, detectabilidade, desempenho e outros mais design qualitativa e considerações de arquitetura.

Saber sua cobertura de teste (se você tiver testes) pode ser outra ferramenta valiosa para descobrir dívida oculta. Claramente, se houver uma grande parte do seu sistema não possui a cobertura de teste sólida, como você pode ter certeza de que uma alteração não terá efeitos drástico em qualidade de sua próxima versão? Regressão bugs provavelmente aparecer, criando afunilamentos para QA e potencial perda de receita devido a defeitos encontrados cliente e constrangimento.

Use o recurso de log do seu sistema de controle de versão para gerar um relatório de alterações sobre o último mês ou dois. Localizar partes de seu sistema que recebem a maioria das atividades, as alterações ou adições e investigar para dívida técnica. Isso ajudará você a localizar os afunilamentos são desafiador você hoje; há muito pouco valor em Corrigindo dívida nessas partes do seu sistema alterar raramente.

Afunilamentos humanos

Você pode ter um afunilamento se somente um desenvolvedor é capaz de lidar com um componente, subsistema ou aplicativo inteiro. Código individuais posse e conhecimento silos (onde “ Dave funciona no módulo Contas a receber ” — agora há uma memória dolorosa), pode bloquear a entrega se que a pessoa deixa a equipe ou tem uma pilha outro trabalho a fazer. Localizando lugares no seu projeto onde a propriedade individual está acontecendo permite que você considere os benefícios e o escopo de melhorar o design para que outras pessoas possam compartilhar a carga. Elimine o gargalo.

Existem benefícios enormes derivam eXtreme prática de programação de propriedade coletiva (extremeprogramming.org/rules/collective.html ). Com a propriedade coletiva, qualquer desenvolvedor da sua equipe é permitido para alterar qualquer código no seu codebase “ para adicionar funcionalidade, corrigir bugs, melhorar o refactor ou designs. Se não há uma pessoa torna um afunilamento de alterações. ”

AH! Há que palavra novamente, “ causar um gargalo ”. Habilitando coletiva propriedade, você eliminar as partes do seu sistema que somente um único programador escuras — quem pode percorrer desativar o trabalho ou obter visitado por um barramento — conhece. Há menos risco com um codebase coletivamente pertence.

Minha experiência, o design também é muito melhor. Dois, três ou quatro cabeças são quase certamente melhores que um. Um codebase coletivamente propriedade costume de design uma equipe surge e suplantará Idiossincrasias individuais e sutilezas.

Chamo coletivo código posse de uma prática mas posse coletivo é realmente uma propriedade de uma equipe well-functioning emergentes. Pense sobre ela — mostram quantos de você configurar e trabalhar nas “ seu código ” versus código compartilhada por toda a equipe? O que são freqüentemente chamado equipes no desenvolvimento de software são realmente grupos de trabalho com um editor de atribuição onde as tarefas de programação são doled out com base em quem é trabalhou em um determinado recurso, subsistema ou 
module no passado.

Priorizar como uma equipe

Já disse antes que é importante que envolver toda a equipe nos esforços para melhorar. Como um Coach Agile, eu mantenha intimamente para o mantra de um mundo que eles ajudam a criar suporte a pessoas que . Se você não tem uma massa crítica de suporte, um esforço para promover uma cultura de aperfeiçoamento contínuo pode ser muito difícil obter logoff terrestre, muito menos sustain.

Obter um consenso é a chave. Você deseja que a maioria dos membros da equipe para oferecer suporte a iniciativa de aprimoramento atual que você selecionou. Usei “ comprar um Feature ” abordagem de Hohmann alguns sucesso Luke do seu catálogo (innovationgames.com), Jogos de inovação. Que irá tentar um over-simplification bruto do jogo e insistir que você confira o livro se ele parece algo que vai trabalhar no seu ambiente.

  1. Gere uma lista resumida (5-9 itens) das coisas que você deseja melhorar. Idealmente, esses itens estão no seu caminho curto prazo.
  2. Qualifica os itens em termos de dificuldade. Gosto de usar a noção de um tamanho de camiseta abstrata: pequeno, médio, grande ou extra-large (consulte a barra lateral estimando oportunidades de aperfeiçoamento para obter mais informações sobre essa prática).
  3. Dar um preço com base em seu tamanho de seus recursos. Por exemplo, itens pequenos podem custar $ 50, médio itens $ 100 e assim por diante.
  4. Conceder a todos uma certa quantidade de dinheiro. Eles chave aqui é introduzir escassez em jogo. Você deseja que as pessoas têm seu dinheiro para comprar recursos estiver interessados em pool. Você deseja preço, digamos, recursos médios um custo onde ninguém indivíduo adquiri-los. É valioso para localizar onde mais de um único indivíduo vê a prioridade desde que você está tentando criar consenso.
  5. Executar um jogo curto, talvez 20 ou 30 minutos em comprimento, onde pessoas podem discutir, collude e com densidade seu caso. Isso pode ser bastante caótica e também bastante divertido e você verá onde assentos de influência estão na sua equipe.
  6. Reveja os itens foram comprados e por quais margens foram comprados. Você pode escolher classificar sua lista por recursos comprados ou, melhor ainda, use os resultados de comprar um jogo Feature em combinação com outras técnicas, como um reconhecimento do plano de lançamento próximo.

Estimando oportunidades de aprimoramento

Mencionei estimativa dívida itens ou oportunidades de melhoria aproximadamente em termos de camiseta tamanhos. Essa é uma técnica comum usada em metodologias de desenvolvimento ágeis. A idéia é que você está coletando coisas em termos de tamanho relativo. Os smalls juntos como vá os meios, larges e assim por diante.

Não é super-important traga muita de precisão para a tabela. Lembre-se: Essas são medidas relativas e não compromissos. Você deseja obter uma idéia estimada da dificuldade e a teoria é que depois estimar o número de itens, coisas irão iniciar ao mesmo fora. Mesmo que um item médio realmente leva um par de desenvolvedores de duas semanas para concluir enquanto outro leva um mês, em média um meio levará cerca de três semanas.

Com o tempo, no entanto, você começará reunir é realmente bons exemplos do que um item grande ou pequeno, e isso ajudará você no futuro estimativas porque você terá uma base de comparação. Usei vários exemplos de vários tamanhos no passado como um auxílio para estimar um novo lote de trabalho para efeito de BOM.

Isso pode ser um pill difíceis de assimilar para gerenciamento. Eles inicialmente vai querer saber exatamente uma coisa quanto pode tirar e, verdade ser informado, talvez você precise investir mais tempo em uma previsão preciso, baseada em tempo.

Vender o plano

Agora que você tem um plano, é hora para comunicar o valor de eliminar dívida para seus patrocinadores do projeto. Na realidade, esta etapa pode acontecer em paralelo com identificação. Envolve seu cliente de início. Afinal, o desenvolvimento do plano vai levar tempo, esforço e (basicamente) dinheiro. Você deseja evitar, todo custo, perguntas sobre cujo tempo e dime gasto desenvolver um plano coeso.

Qualquer esforço bem-sucedido e sustentado para remover uma grande quantidade de dívida absolutamente requer suporte de seu projeto financiers e patrocinadores. O pessoal que escrevem que as verificações precisam compreender o investimento que você está fazendo. Isso pode ser um desafio; você está perguntando pessoas pensar no intervalo longo, no futuro, e para mover longe de comprar agora, pagamento mentalidade posterior. A explicação “ apenas porque ” simplesmente não recortados.

O problema com isso é que os executivos inevitavelmente pedirá, “ não você profissionais ”? Você pode se sentir put contra ropes quando analisada junto essas linhas. Afinal, elas não estavam prestando você pro, para entregar um produto de qualidade no tempo e no orçamento?

Este é um argumento difíceis para contador. Digo que não se preocupe em. Ter a coragem e honesty para apresentar os fatos como eles estão. Essa abordagem aparentemente arriscada se resume a problemas muito humanos de responsabilidade e confiança.

Couch seu argumento como este: Você já fielded software bem-sucedido na quantidade solicitada de tempo para uma quantidade de dinheiro provisionada. Para conseguir isso, você teve tornar comprometimentos junto a maneira em resposta a negócios pressures. Agora, para ir para a frente a uma taxa previsível e estável, você precisa lidar com os efeitos dessas comprometimentos. Toda a organização tem comprou-los e agora é hora de voltar de pagamento.

Seu próximo desafio é comprovar pessoal não técnicos onde o débito está causando a maioria dos danos. Na minha experiência, executivos de negócios respondem aos argumentos quantitativos, orientado a dados suportados “ números ” e “ fatos ”. Coloquei números e fatos aspas porque sabemos realmente todos nós estiver morando em um mundo relativo e nenhum número único (cyclomatic complexidade, efferent acoplamento, linhas de código, cobertura de teste, o que você já) vende uma alteração. Composto essa dificuldade, você precisará se comunicar as áreas de Dreno maior em termos econômicas: Por que isso é mais lento do que seria assim; por que fez este recurso custo muito?

Evidências DERROTAS dúvida

Ao criar seu caso, é uma ferramenta útil imensamente do Dale Carnegie sistema de gerenciamento de treinamento incorporado em uma frase pithy, “ evidências derrotas Duvido. ” Como é comum com tais sistemas de gerenciamento (e nossa disciplina em geral), a parte de DERROTAS é um acrônimo. Eu vai detalham algumas das maneiras em que isso se aplica ao desenvolvimento de software. Observe, entretanto, eu omiti o segundo E qual significa de exposição porque parece repetir E primeiro, que significa por exemplo.

D é para de de demonstração. Não há nada melhor que mostrar e tell e esse é o que a demonstração é tudo sobre. Se você estiver controlando sua velocidade, isso deve ser fácil. Mostrar o dip longo do tempo (consulte do Figura 2) enquanto a conexão de desenho para cada vez mais inflexível e difíceis de alteração de código. Depois que você vende, você precisa manter vendendo.

Tracking Development Velocity

Figura 2 controle Velocity Development

Se você estiver usando um processo ágil como Scrum ou eXtreme Programming, eventos de comentários do cliente são uma prática essencial. No final de uma iteração, demonstre novos recursos para seu cliente. Enquanto a qualidade e a quantidade de recursos ficarem quando você encontrar pits de tar dívida técnicos e enquanto rampa até seus esforços de aprimoramento, você poderá demonstrar ganhos longo do tempo. Saída maior significa que menos dívida e maior saída produz mais coisas para demonstrar.

Como o idioma vai antes de criticar alguém, movimentar um km em seus sapatos. Se você tiver um Gerenciador mais técnico, incentive para trabalhar com os desenvolvedores em algumas seções mais difícil de codebase para desenvolver empatia para a dificuldade de alteração. Peça dela examinar alguns códigos. Ela pode segui-lo? É legível? Não há nenhuma maneira mais rápida para vencer o campeão.

E é para do exemplo. Não há nada como um exemplo concreto. Localize algumas histórias ou requisitos foram tanto regressão significativa impossível concluída devido a dívida técnica ou criado. Escolha uma seção de código é ilegível, byzantine, repletos de efeitos colaterais. Explique como esses atributos do código levaram a um defeito encontrado cliente ou a necessidade de enorme esforço de QA.

Outra ferramenta poderosa processos Agile lhe é o retrospective. Escolha uma história que ficou Sul no últimos iterações e fazer a pergunta “ por quê? ” Obter a raiz causa de por que essa determinada história não pôde ser concluída, duas vezes demorou tanto quanto sua história média ou estendidos mais de uma única iteração. Freqüentemente, inflexível software será o culpado ou talvez você tinha reverter alterações porque regressão bugs foram intransponíveis. Se você localizar a última “ porquê ” acaba sendo um motivo técnico relacionados dívida, capture a análise em um formulário curto, direto. É outro nível de suavização no seu Boné outro ponto no seu argumento.

F é do fato. Fatos são muito fácil vêm. Você liberar um projeto no tempo? Qual foi a taxa de pós-lançamento defeito? O que é a velocidade média da equipe com o tempo? Clientes foram satisfeitos com o software conforme entregue? Estes são o tipo de fatos que você desejará trazer para a tabela de negócios e acredita que é esses fatos falam mais diretamente para minded comerciais.

Colaboração é um elemento chave aqui. Como desenvolvedor, você pode fornecer mais prontamente fatos técnicos. Procure assistência de pessoas que possuem os orçamentos. Provavelmente que eles terá uma imagem muito mais clara e acesso mais fácil para os fatos de negócios que demonstram o dano que está causando dívida técnica.

A é do analogia. Localizar isso especialmente importante. Pessoas de negócios localizar às vezes o desenvolvimento de software confuso, até mesmo esotérico. Se você for para seus patrocinadores com falar de acoplamento e coesão e princípio da responsabilidade única, você espera uma chance muito boa de perdâ-las. Mas esses são conceitos muito importantes no desenvolvimento de software profissionais e, finalmente, é como você está criando um caso orientado a dados para lidar com dívidas. Minha sugestão é evitar jargão e explicar esses itens com uma analogia.

Você poderia descrever acoplamento como cartões de um casa, por exemplo. Informe seus patrocinadores que motivo que caiu sua velocidade é porque tornando o alteração para o código é como adicionar uma parede, teto ou texto para um cartões de casa já estabelecido e muito elaborado: uma operação surgical exigindo uma mão excepcionalmente estável, tempo significativo e Paciência, e é basicamente um evento incerto e provoking anxiety. Às vezes recolhe cartões de casa.

Quando empregando metáfora e como, é uma boa idéia de estado que são isso. Justifica seu analogia com uma breve descrição do conceito mais técnicas que você está tentando transmitir. Usando o exemplo de casa de cartões, você pode dizer, “ este é o efeito acoplamento tem capacidade de responder para alterar e adicionar novos recursos. ”

T é do Testimonial. Às vezes ouvindo a mesma mensagem de terceiros pode ter um efeito mais poderoso. Neste terceiro talvez líder do setor ou consultor. O motivo que seu palavra pode ir mais do que seu é que eles estiver percebidos como um especialista objetivo.

Se você não tiver dinheiro para contratar um consultor externo, considere coletar insight disponível gratuitamente e relatos de pensou líderes do setor. Enquanto depoimentos genéricos sobre práticas recomendadas chamados são improvável lacre o negócio, eles adicionará gestalt do seu argumento geral.

S é do estatísticas. Questão de números. Há uma frase comum no gerenciamento, “ se você não pode medir, você não é possível gerenciá-lo. ” Não tenho certeza de que a sabedoria convencional aplica totalmente, mas você certamente pode apresentar um caso. Acoplamento e complexidade são duas métricas que podem ser usadas para mostrar uma causa raiz relação entre uma taxa de transferência declínio (quanto trabalho está sendo entregue) e um codebase calcified cada vez mais com dívida.

Localizar estatísticas compostas geralmente são a melhor opção; é muito mais fácil entender a importância de cobertura de código se você pode sobrepor uma métrica de cobertura de código diminui com o tempo com uma diminuição de velocidade, implicando assim, se não mostrando um relacionamento.

Nomear um líder

Seus esforços para adquirir uma luz verde para corrigir dívida técnica irá muito mais com um líder efetivo, um campeão quem pode se comunicar em termos comerciais e quem tem influência com tomadores de decisões na sua organização. Geralmente, esse será seu gerente, seu diretor CTO, o VP de engenharia, ou alguém é uma posição semelhante de autoridade percebida.

Isso abre um problema interessante chicken egg. Como você vende essa pessoa? O processo de gerenciamento de “ até ” é responsabilidade do desenvolvedor, muito. Seu primeiro desafio é vender o vendedor. Exatamente como fazer isso? Duvido evidências derrotas!

Próximas etapas

Até aqui abordei dívida identificação como uma equipe e criando uma ocorrência para corrigir esse dívida. Vai reiterar: consenso entre sua equipe e comprar-com seus clientes são os principais fatores essas etapas.

Tornar as etapas pequeno e não investir muito tempo. Na primeira vez que você identificar dívida, necessariamente levará mais tempo do que quando iterar sobre novas oportunidades de aperfeiçoamento, mas quando você compila seu caso para gerenciamento, incluir somente os itens que você planeja trabalhar no. Manter um olho em produtividade pode ser uma proteção de energia enorme.

Em um problema futuro analisarei o restante do fluxo de trabalho, incluindo táticas para eliminando dívida e abordarei como você pode fazer esse processo iterativo e capturar as lições aprendidas com esforços de remoção de dívida anterior.

Dave Laribee equipe de desenvolvimento de produto em coaches a VersionOne. Ele é palestrante assíduo em eventos locais e nacionais desenvolvedor e foi concedido a um Microsoft MVP de arquitetura para 2007 e 2008. Ele escreve na rede do blog CodeBetter de thebeelog.com.

Graças aos seguintes especialistas técnicos para revisão deste artigo: Donald Belcham