Essa é uma pergunta um tanto complexa a ser respondida porque, como muitas coisas, depende realmente das circunstâncias do projeto, do nível de controle da empresa contratada, se o software personalizado foi gerenciado pela empresa contratada durante todo o seu ciclo de vida, a quantidade de "interferência" por outras pessoas com acesso à base de código, a atitude de todas as pessoas envolvidas, a complexidade do projeto e as metodologias utilizadas ... Eu realmente poderia continuar.
Todos os sistemas têm um grau de dívida técnica. Em alguns casos, isso pode não ser particularmente perceptível devido aos esforços diligentes por parte dos desenvolvedores que trabalham para manter sempre uma base de código limpa; no entanto, nenhum sistema é perfeito e uma grande reformulação pode tornar um problema aparentemente inocente e de longa data aparente. Então, como as empresas contratadas lidam com isso?
Em muitos casos, eles não. Geralmente, o software é escrito por uma empresa, depois modificado por outra, e não é incomum ver a base de código ficar realmente confusa, pois cada empresa contratada trabalha com um prazo apertado e não justifica o tempo para manter o código limpo ( e às vezes mal testados) se isso significa que eles podem correr o risco de perder um prazo.
Em outros casos, você encontra empresas que não apenas gerenciam bem seu projeto contratado, mas também encontram tempo para deixar a base de códigos existente em um estado melhor do que o encontrado. Eles fazem isso frequentemente com um planejamento cuidadoso, identificando fontes de dívida técnica - geralmente aquelas que mais impactam em novos trabalhos - e desenvolvem estratégias para fornecer casos de teste e modificações que contribuam para o gerenciamento da dívida técnica e levam tudo isso para o cronograma do projeto .
Ser um software personalizado garante dívida técnica em vez de criar um produto central? A resposta curta é não, mas é provável que a dívida técnica se acumule se não for tratada ativamente. É o mesmo que em qualquer outro projeto de software. Se você controlar o projeto inteiramente durante todo o seu ciclo de vida, terá uma oportunidade melhor de lidar com dívidas técnicas. Caso contrário, será necessário lidar com a dívida técnica que pode ter acumulado do código que a empresa anterior deixou para trás.
Por outro lado, se sua pergunta for perguntar se escrever software independentemente do seu modelo de negócios é uma garantia de dívida técnica. A resposta seria Absolutamente. A verdadeira questão é como qualquer empresa lida com dívidas técnicas. Deixe acumular e lidar com ele em um horário agendado, ou gerencie uma base de código limpa de maneira contínua para pagar as dívidas técnicas o mais rápido possível? Essa resposta se resume às prioridades individuais de uma empresa e se a dívida técnica incorrida é financeiramente relevante.