Desde comienzos del desarrollo de programas o “software”, las organizaciones han luchado con la pregunta: Construir o comprar? Es decir, ¿debería una organización desarrollar el software de forma interna (“in-house”) o deberían comprarlo a terceros, como por ejemplo, una compañía de consultoría en programación? Hoy día, miles de compañías de consultoría compiten por los millones de dólares que genera la industria de subcontratación para desarrollo de software (“outsourcing”).
Muchos ejecutivos creen firmemente que la organización debe enfocarse en la misión de la organización y no desperdiciar valiosos recursos en el intento de convertirse expertos en desarrollo de “software”. Por ejemplo, una escuela debería enfocarse en la educación y subcontratar para el software que necesiten, como por ejemplo, desarrollar un nuevo sistema de matrícula.
Aquellos opuestos a la subcontratación (“outsourcing”) creen que la organización se beneficia más manteniendo el desarrollo de “software” de forma interna (“in-house”) porque la aplicación es crítica a la misión de la organización. Además, la organización necesita de expertos internos (“in-house”) que comprenden a cabalidad las procesos internos de la organización en comparación con los programadores subcontratados cuyo único interés es generar dinero por algún proyecto de desarrollo de “software”.
Muchos proyectos grandes de desarrollo de “software” que han sido subcontratados a terceros han fracasado debido a la falta de entendimiento de estos acerca las funciones de la compañía. Hoy día, la mayor parte de las grandes organizaciones utilizan una combinación de subcontratación (“outsourcing”) y desarrollo interno (“in-house”), dejando los proyectos críticos al equipo interno. Aún así, algunas organizaciones dependen completamente de la subcontratación (“outsourcing”) mientras otras compañías nunca recurren a esto.
¿Es el desarrollo de software interno superior a la subcontratación? ¿Por qué sí o por qué no? ¿Qué criterios usarías para tomar la decisión de desarrollar vs. comprar un sistema?
¿Cómo podrían las compañías protegerse contra malas experiencias al subcontratar a terceros?

Juan Alvarado Ortiz
SICI 4087
sección: 066
Siempre ha existido un gran dilema dentro de las compañías sobre este tema de construir su propio software (in-house) o pagar a terceros para que los cree (outsourcing). Mi opinión al respecto sobre este tema es que en cierta manera todo depende de todo, me explico; el desarrollo de software interno será superior siempre y cuando la compañía posea los recursos necesarios para crear dicho programa y también de la capacidad de interpretar a cabalidad la necesidad o uso que se la valla a dar. De igual forma la subcontratación a terceros será superior dependiendo de la cabida que tenga esa compañía en interpretar las necesidades de la compañía entre otros factores. Es aquí donde entran los criterios o factores que hay q tener en cuenta para decidir si crear o comprar el software necesario. Si voy a crear el software (in-house) tengo que ver lo siguiente: personal capacitado para la creación, costos de la creación, costos del entrenamiento o adiestramiento al personal, costos del mantenimiento y costos de implantación. Por otro lado si voy a usar a un tercero para la creación de dicho software tendría en cuenta los siguientes factores: Costos de la creación, garantía del producto, Support de la compañía, training a los empleados, experiencia de la compañía y su localización. Son estos últimos 4 factores importantes a considerar en el momento de subcontratar a terceros para así de cierta manera minimizar las experiencias negativas con la compañía que se contrate. Finalmente, la decisión de subcontratar a terceros o del desarrollo interno de software se decidirá luego de medir los pros y contras de cada opción, seleccionando finalmente el que represente con más beneficios para la empresa.
Renan M. Beltran
SICI 4087
Seccion: 066
El desarrollo de un software interno puede ser bueno pero este requiere de mucho tiempo y dinero de la compañía que lo estaría creando. Por tal razón la subcontratación seria una Buena forma de poder lidiar con este problema. Adicional a eso las compañías que se especializan en desarrollar el software tienen el personal y los recursos que se necesitan para poder crear los programas sin tener que hacer ajustes mayores como seria el caso de las compañías que no se dedican a crear programas y estarían experimentando al tratar de hacer un programa “in-house”. Para que las compañías eviten el tener que comprar un programa que no esta de acuerdo a sus necesidades debería de trabajar en conjunto con las compañías desarrolladoras de software. De esta manera podrían revisar y arreglar cualquier dificultad o problema que surja durante el proceso de crear el software.
Es muy cierto que en ocasiones se nos hace un poco difícil decidir en cuanto a realizar nuestro propio software o permitir que terceros lo hagan. Sin embargo esto puede ser evaluado de distintas maneras. Para evaluar la decisión a tomar podríamos fácilmente realizar un análisis de costo beneficio pues debemos recordar que nuestra meta, como empresa que somos, debe ser generar ganancias de manera que logremos tener un software que satisfaga todas nuestras necesidades al menor costo posible. La alternativa que satisfaga esto debe ser la elegida. Otro modo de tomar esta decisión sería determinando cual es son las necesidades de la empresa y con que especialistas cuento dentro de la misma para satisfacerlas ya que si no tengo las personas adecuadas dentro de mi compañía lo mejor sería que contratara a alguien mas. Otro punto importantes es que si por ejemplo queremos crear un sistema para que las personas compren por internet lo mejor seria que lo realizaran terceros pues ellos estan entre la gente y conocen lo que quieren. En realidad esta decision en cuanto a contratar o crear el software por ellos mismos solo la puede tomar la compañía interesada pues son muchos los factores que hay que tomar en consideración. Además puede ser que a unas compañías eso no le haya funcionado pero tal vez a muchas otras sí.
Depende del punto de vista que veas la subcontratación puede ser beneficiosa o puede trabajar encontrar de los propósitos y objetivos de la empresa. El “outsourcing” o subcontratación ha cogido auge entre las empresas ya que esta técnica revoluciona alrededor del concepto de cost benefit donde se produce el objeto deseado que cumpla el propósito de la empresa por menos dinero. La subcontratación no solamente puede ser menos costosa si no también ayudar a la empresa a separarse de tareas o proyectos que realmente no están estrictamente relacionadas a los objetivos de esta. La empresa al no tener que desarrollar su propio software puede dedicarse a otros proyectos que estén más relacionados con la operación y producción de ganancias. En otro punto de vista la subcontratación en ocasiones puede ser dañina y maligna a las operaciones de la empresa. En estas ocasiones la empresa elige crear su propio software y no solo limitarse a crearlo si no crean también un departamento de personas adiestradas que lo administran y le den mantenimiento. La organización o empresa entiende que al ellos designar un grupos de personas dentro de la empresa a crear el software están más relacionados a los objetivos y operaciones que ocurren todos los días. Además se sobre entiende que estas personas tienen un amplio conocimiento de la cultura y lenguaje utilizado en la empresa que podrán compartir con los usuarios e implementar en el software.
En mi opinión la decisión de subcontratar o crear su propio software depende del propósito de la empresa. Los encargados de esta decisión se deberían preguntar qué beneficios podrán obtener de la subcontratación, que será más costo beneficioso, se afectaran los objetivos operacionales al subcontratar y si los empleados serán menos eficientes con un lenguaje y una cultura que no entienden. La decisión de subcontratar es una actividad sumamente a riesgosa ya que puede traer beneficios futuros o sacrificios para evitar malas experiencias se debería experimentar con ambas opción a ver cuál es la más beneficiosa.
En mi opinión, el desarrollo de software interno siempre será hasta cierto punto superior a la subcontratación. Sería justo decir que el software que un programador desarrolla para su organización sería en muchas ocasiones más eficiente y más acorde con las necesidades de la misma, comparado con el software que pudiera desarrollar un programador para una compañía para la cual no labora y en la cual no está involucrado. Diría que esto es así debido a que el programador de una compañía está familiarizado con la misión de la compañía y los productos o servicios que ofrece, y conoce mejor y de antemano las necesidades que tiene. Por el contrario, un programador subcontratado, que no está familiarizado con los trabajos o proyectos de la compañía en cuestión, quizás realice un programa un poco más genérico, con errores, o que no contenga todas las especificaciones que la compañía requiera por no comprenderlas en su totalidad.
La decisión de desarrollar el software internamente o subcontratar estaría basada en la necesidad de la compañía, la complejidad y nivel técnico que requiera el software, y de la relevancia o prioridad que el mismo pueda tener. Siguiendo el ejemplo del artículo, un sistema de matrículas que una escuela pueda necesitar sería un excelente caso, en mi opinión, en el cual la organización podría subcontratar, o comprar un sistema. El sistema no es complejo y no se requiere ningún conocimiento técnico especial para desarrollarlo.
Las compañías podrían protegerse de malas experiencias a la hora de subcontratar a terceros asegurándose de que el o los programadores encargados de desarrollarles el software tengan conocimiento de lo que la compañía hace, que tengan el conocimiento técnico que requiera la lógica del software aparte de la programación, y que entiendan a cabalidad las especificaciones del programa.
Carlos E. Pérez Arroyo sici 4087 sec.066
En mi opinión, el desarrollo de software interno siempre será hasta cierto punto superior a la subcontratación. Sería justo decir que el software que un programador desarrolla para su organización sería en muchas ocasiones más eficiente y más acorde con las necesidades de la misma, comparado con el software que pudiera desarrollar un programador para una compañía para la cual no labora y en la cual no está involucrado. Diría que esto es así debido a que el programador de una compañía está familiarizado con la misión de la compañía y los productos o servicios que ofrece, y conoce mejor y de antemano las necesidades que tiene. Por el contrario, un programador subcontratado, que no está familiarizado con los trabajos o proyectos de la compañía en cuestión, quizás realice un programa un poco más genérico, con errores, o que no contenga todas las especificaciones que la compañía requiera por no comprenderlas en su totalidad.
La decisión de desarrollar el software internamente o subcontratar estaría basada en la necesidad de la compañía, la complejidad y nivel técnico que requiera el software, y de la relevancia o prioridad que el mismo pueda tener. Siguiendo el ejemplo del artículo, un sistema de matrículas que una escuela pueda necesitar sería un excelente caso, en mi opinión, en el cual la organización podría subcontratar, o comprar un sistema. El sistema no es complejo y no se requiere ningún conocimiento técnico especial para desarrollarlo.
Las compañías podrían protegerse de malas experiencias a la hora de subcontratar a terceros asegurándose de que el o los programadores encargados de desarrollarles el software tengan conocimiento de lo que la compañía hace, que tengan el conocimiento técnico que requiera la lógica del software aparte de la programación, y que entiendan a cabalidad las especificaciones del programa.
Uno de los eternos issues que siempre existirán en el mundo de negocios, lo es el tema de la sub-contratación. El crear un programa “in-house”, dependiendo de muchos factores, conlleva unos gastos mayores a la compañía, maxime si la compañía no se dedica a esto. Los Programas que son creados “in-house” hasta cierto punto son mucho mas superiores que los hechos por compañías externas. Esto es debido a que se tiene mucho mas información provilegiada y se conoce de antemano todas las necesidades y requerimientos para el mismo. ¿Quién te conoce mejor que tu mismo? Por otra parte, es mucho mas económico en ocaciones sub-contratar a otras compañías que se dedican a esto ya que ellos tienen el “expertise” y tienen los recursos y tiempo necesario para dedicarse enteramente al desarrolo de tu software. De esta manera no habría que hacer grandes cambios a tu estructura organizacional, presupuestos y recursos, sino que solo un gasto de operaciones para tu compañía.
La sub-contratación es sumamente vital para la optimización del funcionamiento de cualquier empresa. No importa cual sea el enfoque de la empresa siempre existirán áreas en las cuales no tendrán la capacidad de funcionar óptimamente en comparación a una empresa que se especialice en el producto. La creación de software se le debe dejar a una empresa que realmente se enfoque en esa área. Sin embargo, de existir alguna necesidad especifica o alguna incertidumbre de parte de un producto que podría ser robado o puesto en peligro en manos de una empresa sub-contratada se debe entonces considerar la creación del mismo internamente. También se debe tomar en cuenta el costo del producto o tarea, ya que si este es más barato y viable producirlo internamente entonces debería considerarse hacerlo de esta manera. Pienso que cualquier producto que se salga del enfoque real de la empresa o que no cumpla con las necesidades de sus inversionistas, debe ser sub-contratado. De esta manera se mantiene el enfoque de la empresa, se reducen los gastos operacionales fijos lo que reduce el riesgo de las actividades relacionadas a las operaciones de la empresa y se fomenta la economía general entre otras cosas. En adición a esto las sub-contrataciones son por contrato valga la redundancia, ósea que la empresa negocia el tiempo necesario de servicio por lo que puede mitigar el riesgo de no obtener el servicio esperado o tener una “mala experiencia” con la empresa sub-contratada. Pero Para evitar esto siempre es importante hacer un “benchmark” o evaluación comparativa entre otras empresas que ofrezcan el mismo servicio.
Si uno tiene una herramienta que permita enfocar el desarrollo sobre las reglas de negocio más que sobre la creación de componentes, clases, etc., es mucho mas conveniente el desarrollo in-house.
Nosotros utilizamos una herramienta que se llama Genero de Four J’s (http://www.4js.com) para el desarrollo y es muy rápido aprenderlo y hacer el desarrollo in-house. Además tiene una portabilidad muy eficiente.
holaaaa
Desde mi punto de vista, creo que la contratacion del servicio externo es una muy buena herramienta para el buen funcionamiento de una Empresa, ya que existen compañías de excelente calidad y confianza que si pueden ofrecer lo que la Empresa solicitante requiere de acuerdo a sus necesidades.
Aunque es muy cierto que el desarrollo de un software interno siempre va a ser superior a uno externo, ya que este contara con las herramientas necesarias basadas en las necesidades y la misión de la Empresa; siempre y cuando cuente con gente altamente capacitada y/o con experiencia : )
Pero en la actualidad la mayoría de las Empresas optan por el servicio externo y les ha funcionado ya que su inversión ha valido la pena, obteniendo las ganancias esperadas, y haciendo de estas unas Empresas competitivas.
El desarrollo de software interno tiene muchas ventajas, ya que como es creado en la empresa puedes ir capacitando al personal asi como lo vas haciendo. Aunque pudiera traer algunas consecuencias respecto a costos de “fabricacion” porque debes de contar con los materiales necesarios asi como con el personal capacitado y experto para llegar al fin que se tiene, de esta manera si creas tu software dentro de la empresa puedes ir modificandolo respecto a las necesidades que se tienen dentro de la organizacion.
Si se opta por contratar a alguien externo tenemos menos confiabilidad que funcione, ya que muchas veces solo les interesa realizar su trabajo y no toman en cuenta las necesidades que tenemos como empresa. No digo que no sea confiable, porque no sabemos si todos los externos trabajen de la misma manera, podria ser que nos encontararmos a alguien que si vea por los intereses de la empresa para la cual esta trabajando o podria ser que solo le interese su pago por el software que este desarrollando.
Es muy importante analizar este punto, y si hay personal apto en esta area en especifico porque no dejar que ellos lo hagan.