Isso é algo em que estou pensando desde que li esta resposta no controverso tópico de opiniões sobre programação :
Seu trabalho é sair do trabalho.
Quando você está escrevendo um software para o seu empregador, qualquer software que você criar deve ser escrito de tal maneira que possa ser adquirido por qualquer desenvolvedor e entendido com um esforço mínimo. Ele é bem projetado, escrito de forma clara e consistente, formatado de forma limpa, documentado onde precisa estar, compilado diariamente conforme o esperado, verificado no repositório e com a versão apropriada.
Se você for atropelado por um ônibus , demitido, demitido ou sair do emprego, seu empregador poderá substituí-lo a qualquer momento, e o próximo funcionário poderá assumir seu papel, pegar seu código e ser correndo dentro de uma semana no máximo. Se ele ou ela não puder fazer isso, você falhou miseravelmente.
Curiosamente, descobri que esse objetivo me tornou mais valioso para meus empregadores. Quanto mais eu me esforço para ser descartável, mais valioso me torno para eles.
E isso já foi discutido um pouco em outras questões, como essa , mas eu queria trazê-lo novamente para discutir de um ponto em branco " é um cheiro de código !! " do ponto de vista - que realmente não foi coberto em profundidade ainda.
Sou desenvolvedor profissional há dez anos. Eu tive um trabalho em que o código foi bem escrito o suficiente para ser captado relativamente rapidamente por qualquer novo desenvolvedor decente, mas na maioria dos casos na indústria, parece que um nível muito alto de propriedade (propriedade individual e de equipe) é o norma. A maioria das bases de código parece não ter a documentação, o processo e a "abertura" que permitiriam a um novo desenvolvedor buscá-las e trabalhar com elas rapidamente. Sempre parece haver muitos pequenos truques não escritos e hacks que apenas alguém que conhece muito bem o código base (o "possui") saberia.
Obviamente, o problema óbvio disso é: e se a pessoa sair ou "for atropelada por um ônibus"? Ou no nível da equipe: e se toda a equipe sofrer intoxicação alimentar quando sair para o almoço da equipe e morrerem? Você seria capaz de substituir a equipe por um novo conjunto de novos desenvolvedores aleatórios de maneira relativamente indolor? - Em vários dos meus empregos anteriores, não consigo imaginar isso acontecendo. Os sistemas estavam tão cheios de truques e hacks que você " apenas precisa saber ", que qualquer nova equipe contratada levaria muito mais tempo que o ciclo de negócios lucrativo (por exemplo, novos lançamentos estáveis) para fazer as coisas funcionarem novamente. Em resumo, não ficaria surpreso se o produto tivesse que ser abandonado.
Obviamente, perder uma equipe inteira ao mesmo tempo seria muito raro. Mas acho que há uma coisa mais sutil e sinistra em tudo isso - que é o ponto que me levou a pensar em iniciar esse tópico, pois não o vi discutido nesses termos antes. Basicamente: acho que uma grande necessidade de propriedade do código é muitas vezes um indicador de dívida técnica . Se houver uma falta de processo, comunicação, bom design, muitos pequenos truques e hacks no sistema que você "apenas precisa saber", etc. - geralmente isso significa que o sistema está se endividando progressivamente cada vez mais.
Mas o fato é que a propriedade do código geralmente é apresentada como uma espécie de "lealdade" a um projeto e empresa, como uma forma positiva de "assumir a responsabilidade" pelo seu trabalho - por isso é impopular condená-la completamente. Mas, ao mesmo tempo, o lado da dívida técnica da equação geralmente significa que a base de código está ficando progressivamente menos aberta e mais difícil de trabalhar. E, especialmente, à medida que as pessoas seguem em frente e os novos desenvolvedores precisam tomar seu lugar, o custo da dívida técnica (ou seja, manutenção) começa a subir.
Então, em certo sentido, acho que seria uma coisa boa para nossa profissão se um alto nível de necessidade de propriedade de código fosse visto abertamente como um cheiro de trabalho (na imaginação popular do programador). Em vez de ser visto como "assumindo responsabilidade e orgulho" no trabalho, deveria ser visto mais como "entrincheirando-se e criando segurança artificial no emprego por meio de dívidas técnicas".
E acho que o teste (experimento mental) deveria ser basicamente: e se a pessoa (ou mesmo toda a equipe) desaparecesse da face da Terra amanhã. Isso seria um ferimento gigantesco - possivelmente fatal - para o projeto, ou poderíamos atrair novas pessoas, levá-las a ler os documentos e arquivos de ajuda e brincar com o código por alguns dias - e depois voltar para negócios em algumas semanas (e voltando à produtividade total em mais ou menos um mês)?