*

Online

El precio del software: cuánto cuestan los desarrollos a medida

Cómo hacen los programadores para determinar cuánto sale una pieza de software. Por qué el tiempo es un factor clave. Por PABLO LABARTA - 28 de Marzo 2018
El precio del software: cuánto cuestan los desarrollos a medida

En toda negociación, hay un “tire y afloje” en el que las dos partes luchan por obtener una leve ventaja para sí. Se valen, para eso, de diferentes herramientas: conocimiento, dinero, tiempo. En algunos verticales, las cuentas son más claras y en otros, más informales; y llegar a un presupuesto aceptable tiene más de arte que de método. La industria del software —que, según datos de IDC y Gartner alcanzó el año pasado una facturación global de US$ 3,5 billones— está, todavía, a mitad de camino.

Responder la pregunta “¿cuánto saldría hacer esto?” es más complicado que hacer un simple cálculo. Hoy, en la Argentina, conviven dos escuelas. Una, que tiene en común con otras profesiones informales más de lo que podría pensarse a simple vista, toma en cuenta variables como tipo de cliente, tiempo que se necesita para entregar llave en mano el producto o el know-how necesario para llegar a un producto mínimo viable. Otra, que están impulsando las Software Factories, intenta profesionalizar la manera en la que se presupuesta dándole método a presupuestar software a medida, que si bien tiene muchos requerimientos de cáracter técnico a la vez demanda una cuota de creatividad.

No es sencillo. Si bien el software define, cada vez más, nuestras vidas —los hospitales tienen que digitalizar sus registros médicos, los fabricantes de autos crear vehículos inteligentes, los retailers maximizar ganancias utilizando automatización— una de sus características —su intangibilidad—hace difícil poder encontrar un “precio justo”. Porque es un producto virtual, su falta de existencia física disminuye los costos y también los insumos necesarios para producirlo; esa inmaterialidad hace que su costo de fabricación esté atado solamente a una cosa: el trabajo necesario para producirlo. “El costo de un desarrollo se mide en cuánto tiempo lleva y cuál es el equipo necesario para hacerlo”, sintetiza Pablo Sametband, el director Comercial de Baufest, una empresa dedicada a soluciones empresariales de software.

Eso significa muy poco: el diseño y la implementación de una solución puede costar de miles a millones de pesos. Lo que importa es el trabajo detrás: donde un usuario ve un botón de “Like”, un desarrollador entiende que hay todo un proceso de diseño que, sin una estructura que permita su funcionamiento, no sería más que un lindo conjunto de píxeles.

Armar un presupuesto es una de las tareas más difíciles para un desarrollador porque no solo tiene que conocer el trabajo, sino que debe contar con experiencia previa y disponer de los recursos necesarios para realizarlo”, detalla David Donari, un desarrollador independiente que usa la plataforma Freelancer.com, un marketplace australiano que opera en la Argentina en el que distintos profesionales pueden ofertar su fuerza de trabajo.

Todo depende del proyecto. El proceso empieza mucho antes de escribir la primera línea de código, cuando se realiza una investigación preliminar para detallar cuál es el problema que hay que resolver, cuál será el alcance de la solución y quiénes serán sus usuarios. De lo contrario, se gastaría tiempo valioso en producir algo que quizás no es lo que el cliente necesita o no logra ser eficiente. Recién ahí, con una buena cantidad de información, es posible determinar cuánto podría costar la resolución del problema.

 

Los jugadores

Casi todos los desarrolladores trabajan en equipo, incluso los freelancers. “Entre los involucrados suele haber arquitectos, diseñadores, maquetadores, programadores, testers y líderes de proyecto”, cuenta Sametband. Cada mercado laboral es distinto y aún teniendo la misma cantidad de experiencia, no cobran lo mismo.

La tecnología utilizada no suele marcar una diferencia, sí lo hacen los distintos roles que participan. Dependiendo de las funcionalidades definidas, un proyecto puede requerir más trabajo de diseño, de programación e incluso, al tratarse de equipos grandes, una notable porción del presupuesto puede destinarse a organizar al equipo.

“Nosotros cobramos por tiempo, pero hacemos un relevamiento de lo que se necesita y luego estimamos cuánto tomará diseñarlo y desarrollarlo. A eso se le suma un porcentaje para cubrir el trabajo del líder de proyecto”, aclara Sebastián Gil, un programador que trabaja para dos equipos de desarrollo web, Okame y SolenOnline, hace más de 10 años y que cuenta entre sus desarrollos la intranet de ISIC, la tarjeta para estudiantes que viajan por todo el mundo.

Otro de los factores determinantes es la conocida escala de experiencia, también llamada seniority, que va del nuevo, o junior, hasta el más experimentado, o senior. Aunque formen parte de un mismo equipo, un desarrollador recién iniciado no cobra lo mismo que uno que lleva diez años trabajando en el rubro. “Donde más se nota es en la resolución de problemas, el manejo de las emociones y, especialmente, en los momentos de crisis. Un programador senior sabe apoyar a sus pares y toma  decisiones correctas ante una divergencia del plan original”, explica Conrado Mader Blanco, TMO de la Software Factory argentina Wolox.

Conrado Mader Blanco, TMO de Wolox.

Entonces, mientras que un junior puede implementar soluciones clásicas o diseñadas por un tercero, la experiencia se destaca a la hora de navegar aguas desconocidas, innovar sobre la marcha y adaptarse rápidamente. Por supuesto, esto tiene su costo: un equipo senior puede llegar a cobrar más del doble. Las cifras oficiales publicadas por la Cámara de la Industria Argentina del Software (Cessi) ilustran este gap: un programador junior, sin experiencia, gana en promedio $19.500 mensuales, un semisenior con alguna experiencia $28.750 y un senior experimentado $38.900.

Lo mismo ocurre con los encargados de liderar y gestionar los proyectos. A medida que la complejidad y el tamaño aumentan, pasa a ser más caro mantener al equipo conectado y sincronizado.

 

El arte (o la ciencia) de estimar el tiempo

Definir los meses, semanas, días y horas, que va a tomar un proyecto es difícil. Cuando un desarrollador trabaja en un proyecto que no es propio es necesario determinar precisamente qué es lo que el cliente quiere (y espera) para poder crearlo. Ni más, porque no es necesario, ni menos, porque luego podrían tener que hacerse cargo de la diferencia. Así, el costo de esta producción de soluciones intangibles depende enormemente del tiempo que el equipo tenga que sentarse a trabajar en el problema.

Según Mader Blanco, de Wolox, hay tres variables que se tienen en cuenta al estimar cuánto tiempo llevará un proyecto: su alcance, la tecnología involucrada y el equipo de personas que lo llevará a cabo. “Se necesita comprender a fondo cuál es el problema que quiere resolver el cliente y quién será su usuario target para encontrar la mejor forma de hacerlo”, explica y agrega: “La cantidad de funciones es lo que más determina cuánto tiempo lleva desarrollar algo”. Cuando los proyectos involucran coordinar con otro equipo o plataforma, los tiempos se extienden notablemente. El tiempo no siempre puede reducirse agregando más personas. Algunas soluciones necesitan recorrer un plan lineal y su implementación es larga, no solamente grande.

Hay más de una forma de estimar el tiempo necesario para producir un software determinado. Una opción es acudir a la experiencia de un desarrollador veterano que pueda anticiparse a los problemas y determinar cuánto tardará el equipo en resolverlos. La otra, usar un método formal para analizar los datos de proyectos pasados para calcular cuánto tiempo llevará hacer algo similar. Por lo general, es una mezcla de ambos. Uno da estructura gracias a la información de desarrollos anteriores y el otro brinda la flexibilidad necesaria para atreverse a resolver nuevos problemas.

Una de las principales dificultades se presenta al tener que definir cada una de las funcionalidades para poder evaluarlas. Parte del trabajo consiste en tomar la idea del cliente y bajarla a algo concreto que pueda ser desarrollado. Esto puede tardar hasta dos semanas y es un trabajo que, por lo general, se cobra. Otra es la tecnología que se usa. Si bien, los programadores no suelen cobrar distinto por usar una u otra, hay herramientas con distintos niveles de madurez: las hay más nuevas y más viejas, más disruptivas y más establecidas. Las más innovadoras pueden tener importantes beneficios pero si su comunidad todavía es pequeña es probable que haya poco hecho y, por lo tanto, cada paso del desarrollo requerirá más investigación que si se trabajase con un lenguaje o framework conocido donde muchos escenarios ya están resueltos y los programadores pueden encontrar el material fácilmente.

“Por lo general, un especialista de su misma rama es quien define los tiempos de un área. A veces, hacemos que dos o más personas estimen la misma tarea de forma independiente y luego se reúnan para discutir las diferencias”, explica Sametband y destaca: “El armado de presupuesto es un proceso complejo y a la vez crítico, por eso es necesario tener la mayor precisión posible”, concluye.

 

Modelo para armar

Más allá del equipo involucrado y el tiempo de desarrollo, hay distintos modelos de presupuestos. Una opción son las cotizaciones “llave en mano”, soluciones ad hoc que se desarrollan e implementan desde cero. Son las más requeridas por las empresas pero tienen el problema de ser poco flexibles ante la necesidad de programar cambios. Para remediar esto, hay equipos que trabajan y cobran por iteración, segmentos de tiempo durante los cuales se trabaja hacia cierto objetivo. Al final de cada una de estas, llamadas sprints, se pueden introducir pequeños cambios sin problema y, a su vez, los desarrolladores van obteniendo más información sobre el proyecto, haciendo más precisa la estimación de los tiempos.

Algunas empresas presentan una factura que detalla qué funcionalidades se desarrollarán y cuánto esfuerzo implica cada una. “Nosotros presentamos, junto al presupuesto,  un desglose de cada tarea por un tema de transparencia. Queremos que el cliente pueda ver si lo que invierte en una funcionalidad es acorde a la ganancia que le traerá”, cuenta el director Comercial de Baufest.

Otras  también suelen reestimar los costos luego de las primeras etapas del desarrollo. “Brindamos un servicio de armado de proyectos donde se intenta bajar la idea del cliente y una vez terminado se vuelve a estimar el precio”, cuenta el TMO de Wolox. Ellos, por ejemplo, ofrecen las dos metodologías de trabajo: la primera, donde cobran por funcionalidades y se comprometen con la fecha, y la segunda, donde al trabajar por sprints, el cliente no paga por el alcance, sino por el equipo. Esta última es la más flexible.

Como en toda negociación, el precio no lo pone solamente una de las partes. El rol del cliente es fundamental. “Es necesario que se involucre con el proyecto porque de esta forma el equipo se mantiene informado”, explica Marcelo Ruiz, un desarrollador freelance con 15 años de experiencia trabajando para empresas como Nissan, Hitachi y Chevron. Debe mantener una comunicación fluida con los desarrolladores para asegurarse no solo de que la solución tenga impacto en el negocio sino que el presupuesto sea preciso desde el comienzo. Es el nexo entre la pieza de software y el problema real que busca resolver. Sin su colaboración, los desarrolladores no sabrán qué hacer y menos aún estimar cuánto saldrá.



¿Te gustó la nota?

Comparte tus comentarios

Sé el primero en comentar

Notas Relacionadas