La migliore struttura organizzativa per una società di software è orientata agli oggetti.
Creare gruppi funzionali, e avere meccanismi chiaramente definiti per questi gruppi per comunicare con altri gruppi. (I gruppi possono essere piccoli come una sola persona, anche se questa persona dovrà sia codificare che comunicare, quindi assegnare un comunicatore per diversi gruppi di una sola persona sarebbe più efficace.)
La struttura sarebbe quindi:
- Persone che decidono quali progetti saranno intrapresi, e il loro "comunicatore"
- Persone incaricate del personale di quei progetti (con i gruppi), e il loro "comunicatore"
- Persone responsabili della comunicazione intergruppo tra i gruppi di codifica
- La leadership del gruppo all'interno del gruppo (basata sia sull'abilità che sulla capacità di insegnamento)
- Persone incaricate del feedback di come i gruppi stanno operando (analisti), e il loro "comunicatore" -- e questo può includere il benessere personale dei membri del gruppo
- Persone responsabili delle risorse, e il loro "comunicatore"
- Persone responsabili di altre operazioni aziendali (ottenere e mantenere i clienti, legale), e il loro "comunicatore"
- L'organizzatore primario di tutto questo (il "leader," o più probabilmente un team di leadership, che ha anche un comunicatore).
Questa non è un'organizzazione a matrice, perché una matrice implica la disposizione delle persone sia in discipline funzionali che in team di progetto, quasi sempre con il risultato che gli individui si sentono tirati in direzioni contrastanti, il che è nel peggiore dei casi estenuante e demoralizzante. Creando la performance solo all'interno della funzione dell'oggetto specifico, e con l'intera organizzazione che sostiene la salute di quegli oggetti, il "double-bind" a livello tattico viene eliminato.