viernes, 19 de diciembre de 2008

El hardware es barato, los programadores son caros

Recién estaba leyendo un artículo muy interesante de Jeff Atwood, titulado Hardware is Cheap, Programmers are Expensive.

Básicamente lo que dice el artículo es que antes de intentar optimizar código, siempre es mejor plantearse comprar más hardware, porque el costo es menor.

Hace un tiempo tuvimos un caso de estos. Era un proceso que en una instalación corría todas las noches, y demoraba toda la noche. Es más, había días que a la hora que los usuarios empezaban a trabajar seguía corriendo, por lo que enlentecía todo, y lo terminábamos matando.

Esta situación generaba desconformidad en el cliente, y mucho estrés en el grupo de trabajo, por no poder solucionar el tema. Se había intentado muchas veces optimizarlo, incluso pasó por varias personas, pero las mejoras que se le hacía en cada iteración no eran sustanciales.

Cuando el cliente cambió el servidor, el proceso pasó a correr en 3 horas...

No hice las cuentas, pero estoy seguro que salieron mucho más caras todos los intentos de optimización que lo que salió el servidor nuevo...

En general, creo que cuando se da una situación de estas, es necesario hacer un primer intento de optimización, porque en general siempre hay algo para hacer, pero llega un momento en que el costo de optimizar el programa no se justifica, y lo mejor es poner hardware más rápido.

4 comentarios:

  1. que tal Marcos? si..efectivamente aveces esto es verdad..
    PERO SI A MI COMO EMPRESARIO, ME SUCEDE ESTO:
    Me preguntaría, porque gasté tanto en un programador que no me hizo un código eficiente?

    Quizás el problema radica en no gastar un poquito mas en un buen programador (que desarrolle y lo haga optimizando) y no después tener que actualizar el HARD cada año porque los desarrollos son malos.

    (solo una humilde opinión)

    ResponderEliminar
  2. Marcos, comparto totalmente lo que decís y me ha pasado varias veces.

    Trabajo mucho con bancos y es normal que tengan buenas máquinas, pero con poca memoria.
    Lo cómico es que el usuario cuesta mas por hora que el costo de la memoria y nadie se da cuenta.


    En algunas empresa, es fácil vender un sistema 2000 dólares, pero es díficil poner requisitos (por ejemplo 2Gb RAM), porque te dicen que si y luego no lo hacen.
    Ahora optamos por incluirlo en el precio y nosotros se lo instalamos.

    ResponderEliminar
  3. Los Cardenales: Sí, estoy de acuerdo. Si tenés que elegir entre pagarle más a un buen programador o contratar a uno malo, me parece que la decisión es clara.

    Pero también tené en cuenta que hay problemas que no son fácilmente optimizables, y que en esos casos por bueno que sea el programador no va a poder resolverlo...

    Lo que intentaba plantear con esta nota es que a veces se intenta optimizar un proceso solamente con horas de programación, y no se tiene en cuenta que el hardware es realmente barato.

    ResponderEliminar
  4. El tema me interesa. La optimizacion nunca es perfecta.

    Para mi un programa esta optimizado si cumple con los requerimientos de performance en el hardware que existe.

    La forma de optimizar, es mejorar el programa o mejorar el hardware y tal cual como dice el articulo, algunas veces es mas barato mejorar el hardware.

    La optimizacion de programas, despues de salir de las optimizaciones obvias, se vuelve un tema complicado.

    Si fueramos programadores hace unos cuantos años, y tuvieramos el algoritmo de la burbuja para ordenar y nos pidieran que lo optimizaramos, creo que a muy pocos se le ocurriria un algoritmo mejor (tipo el quicksort).

    En cambio, poner mas hardware, casi siempre funciona, aunque es MUCHO MAS ABURRIDO.

    ResponderEliminar