La limitación de competencias consiste en determinar de forma
lógica quien es el responsable de una determinada funcionalidad de un sistema
complejo. Y cuando digo responsable, me refiero a todos los estratos del ciclo
de vida de la funcionalidad:
- Desarrollo
- Mantenimiento
- Solución de errores
- Etc..
La limitación de competencias es un gran problema ya que, aparte
de que es un asunto muy subjetivo, los responsables se ven sujetos a demasiados
detalles de muy bajo nivel (lo que costo hacer esto, los problemas que dio lo
otro, etc..) y tienden a “barrer para casa”; es decir, a no buscar la mejor
solución si no lo que menos trabajo les de.
Por ejemplo, un equipo que se encarga del desarrollo de una página
web(PW) y otro de una capa de Web Services(WS) que controla los datos del
cliente. Entonces:
1º PW quiere saber los datos de un cliente y WS le dice “llama a
la función A con el DNI”.
2º Lo hace y funciona.
3º Se entra en producción y los usuario se dan cuenta que algunos
DNI no funcionan. Se le indica a PW. PW se lo dice a WS y este le responde:”Es
que si el DNI no esta cuando se llama a la funcion A hay que llamar a la
funcion B con el DNI”
4º …. PROBLEMA
Que seria lo correcto: ¿PW cambia la llamada y llamaría a la
funcion B? ¿WS cambia la funcion A para llamar a la funcion B y obtener el
resultado?
Ambas soluciones tienen pros y contras. Ambas soluciones podrían ser
correctas y/o erróneas bajo determinados contextos. Entonces como determinar
quien tiene que hacer la modificación?
La solución mas común es solucionar el problema llegando a un
acuerdo entre los responsables de PW y SW y si no se puede llegar a una
solución entonces acudir a una figura superior (un jefe de los dos equipos).