¿Por qué las grandes empresas contratan ingenieros de software permanentes para hacer todo lo que no está relacionado con un ingeniero de software?

Nunca he trabajado en una empresa que practique esto tan al extremo (usted afirma que toda la codificación es realizada por contratistas), pero es común que las empresas contraten contratistas para muchos, si no para la mayoría de los grandes proyectos de TI. Quizás no sea la mayoría de las empresas, pero ciertamente es común.

Los grandes proyectos bien realizados requerirán un trabajo inicial significativo y mucho menos trabajo de mantenimiento posterior ^. Por ejemplo, si un proyecto tarda 20,000 horas hombre en desarrollarse durante 6 meses, solo puede tomar 8,000 horas hombre por año en mantenimiento. Entonces, si bien necesita de 20 a 25 personas por adelantado para completar el proyecto, solo necesita de 4 a 5 personas para mantenerlo. Si no tiene una cartera constante de grandes proyectos para cada equipo interno de TI, entonces los contratistas pueden ser su única opción.

Cuando los ejecutivos establecen su agenda estratégica de TI, generalmente no quieren esperar a que los empleados existentes aprendan nuevas herramientas. Contratar contratistas que lo hayan hecho antes es atractivo. Los empleados a tiempo completo (FTE) se utilizan para ayudar a los contratistas a aprender su dominio, realizar el control de calidad y mantener el producto después de que se complete el desarrollo inicial. Con el tiempo, los FTE aprenderán las nuevas herramientas y los contratistas serán menos necesarios.

Aunque creo que las compañías que continúan usando contratistas para mantenimiento y mejoras a largo plazo están desperdiciando dinero. Los FTE existentes pueden ser entrenados y / o nuevos FTE pueden ser contratados. Un FTE generalmente es la mitad del costo de un contratista (por hora de trabajo), y generalmente aprende el dominio específico de su empresa mejor que los contratistas, por lo que casi siempre prefiero el personal a tiempo completo a los contratistas a largo plazo.

^ (Quiero decir, el mantenimiento llevará menos tiempo por año que el desarrollo inicial, aunque casi siempre el mantenimiento es más costoso que el desarrollo inicial durante la vida útil del producto de software)