La mejor estructura organizativa para una empresa de software es la orientada a objetos.
Crear grupos funcionales, y tener mecanismos claramente definidos para que esos grupos se comuniquen con otros grupos. (Los grupos pueden ser tan pequeños como un solo individuo, aunque esa persona va a tener que codificar y comunicarse, por lo que asignar un comunicador para varios grupos de una sola persona sería más eficaz.)
La estructura sería entonces:
- Personas que deciden qué proyectos se llevarán a cabo, y su "comunicador"
- Personas encargadas de dotar de personal a esos proyectos (con grupos), y su "comunicador"
- Personas encargadas de la comunicación intergrupal entre grupos de codificación
- Liderazgo de equipos dentro del grupo (basado tanto en la habilidad como en la capacidad de enseñanza)
- Personas encargadas de la retroalimentación de cómo están funcionando los grupos (analistas), y su "comunicador" - y esto puede incluir el bienestar personal de los miembros del grupo
- Las personas a cargo de los recursos, y su "comunicador"
- Las personas a cargo de otras operaciones de negocio (conseguir y retener clientes, legal), y su "comunicador"
- El organizador(es) principal(es) de todo esto (el "líder", o más probablemente un equipo de liderazgo, que también tiene un comunicador).
No se trata de una organización matricial, porque una matriz implica organizar a las personas tanto en disciplinas funcionales como en equipos de proyecto, casi siempre con el resultado de que los individuos se sienten arrastrados en direcciones contradictorias, lo cual es, en el peor de los casos, agotador y desmoralizador. Al crear el rendimiento únicamente dentro de la función del objeto específico, y con toda la organización apoyando la salud de esos objetos, se elimina el "doble vínculo" a nivel táctico.