Se il software deve essere utilizzato tatticamente o strategicamente o è fondamentale per la tua attività, quindi avere i programmatori che comprendono anche l'attività commerciale può essere la chiave. Devono anche comprendere il supporto e il ciclo di vita e quanto costerà alla tua azienda sostenere i sistemi dopo il rilascio.
Non penso che il costo sia generalmente un fattore reale. Se qualcuno sostiene che lo è, sono ignoranti o bugiardi. Se esternalizzi, stai pagando il margine di profitto di qualcun altro in cima ai loro costi. I risparmi dovuti ai differenziali geografici del mercato del lavoro sono di solito rapidamente compensati dall'aumento del costo della comunicazione e dell'istruzione, e le differenze tariffarie non sono così grandi come in passato, dal momento che il mondo in via di sviluppo è chiamato per un motivo.
Ci sono molti tipi di software là fuori. In molti casi, puoi esternalizzare qualcosa e star bene. Il problema è che questa decisione deve essere presa caso per caso, e non è possibile risolverla in una situazione adatta a tutte le situazioni.
Sono sicuro che ci sono un milione di cose da cercare nel processo decisionale.
Ci sarebbero casi in cui lo sviluppo di un software ben specificato ma core potrebbe essere facilmente esternalizzato ad una società specializzata in quel tipo di lavoro - ad esempio una cosa a livello di sistema come un driver di periferica o un server web potrebbe ancora essere esternalizzato da una società che ha realizzato un elettrodomestico e desidera specializzarsi nell'esperienza utente più dei blocchi predefiniti.
D'altra parte, se stai guidando quel server web in modi speciali e anche se lo hai ben specificato, avrai questo componente strettamente legato alle principali iniziative di sviluppo multi-fase, tu probabilmente non vorrai esternalizzarlo.