sábado, 22 de octubre de 2011

El equipo de un desarrollador de estos dias

Parte de esta entrada se va a volver rápidamente obsoleta seguramente, pero para mí es una referencia del estado actual de las cosas. Obviamente las empresas esperan de un desarrollador de software muchas cosas: profesionalismo, todo el conocimiento del mundo, grandes capacidades analíticas, confidencialidad, compromiso, consistencia en sus resultados en general, y a veces un par de milagros al mes, si no al día. Eso es al día de hoy y, para bien o para mal, no va cambiar en un tiempo.

Lo que no es obvio para muchas empresas, es que no se le puede exigir a un soldado que gane batallas sin buenas armas, y por supuesto un buen desarrollador necesita el mejor equipo al que pueda tener acceso para sus tareas diarias.

El desarrollador de estos días debe tener instalada -y gran parte ejecutándose- una cantidad inmensa de herramientas para hacer su trabajo, y dichas herramientas son cada vez más hambrientas de recursos, despegándose cada vez mas de las necesidades del usuario común.

Y es que así es, un programador a principios de los 90s usaba ambientes que eran básicamente editores de texto con algunas capacidades específicas, mientras que un usuario abría Lotus 1-2-3, tal vez Windows 3.11 con Harvard Graphics 2.1, o WordPerfect 5 que eran aplicaciones que consumían los 2 Megabytes de RAM a los que se tenía acceso a los 30 segundos de ejecutarlos. El programador vivía en un editor de texto, y no requería tanto de estar switcheando a otras herramientas, si acaso volver a la línea de comandos a compilar.

A principios de siglo (XXI claro), ya todos sobre sistemas operativos gráficos, un programador solo necesitaba un Ambiente Integrado de Desarrollo (nuestros IDEs) que hacia todo, como Delphi, Visual Basic o Eclipse. Estas herramientas son, por si solas, tan pesadas como Adobe Photoshop o como tener Excel, Word, Outlook e Internet Explorer abiertos al mismo tiempo, como es muy común en un usuario típico de oficina. Las necesidades del desarrollador estaban mas o menos en el mismo rango del usuario diario o del power user cuando mucho.

Ahora en estos días, pasando la primera década de este siglo, hay muchas nuevas necesidades a cubrir, además que se desea que un desarrollador sea hiperproductivo. Un programador profesional debe tener, además del persistente IDE de la plataforma diaria (como Visual Studio o Delphi), otros IDEs de diferentes plataformas (por ejemplo Eclipse) ya que el mundo hoy es menos homogéneo, es decir, si usas Visual Studio o Delphi pero quieres programar para Android de forma nativa, además se necesita Eclipse o una de sus alternativas.

Por supuesto, ahí no para la cosa, también es posible que sea necesario tener un buen editor de HTML, una herramienta de desarrollo especializada en XML/XSD/XSLT/XPath/X...cetera, un buen editor de gráficos porque para que lo sepa todo el mundo, Paint no es suficiente cuando se trata de hacer iconos y no se diga gráficos para web, y por supuesto un administrador de bases de datos. Es necesario tener Outlook o Thunderbird si quieres que tus programadores te respondan los correos de vez en cuando, y no se diga Skype y similares, aunque esto vaya en detrimento de su concentración. Y para acabarla, es muy probable que sea imprescindible tener una o más máquinas virtuales corriendo en el mismo equipo, ya sea para pruebas en diferentes ambientes, pruebas de conexión remota o para ejecutar herramientas no compatibles con el sistema operativo principal de la máquina.

Hay otras herramientas que muy probablemente serán necesarias son por ejemplo, la utilería del control de versiones, algún profiler o analizador de código, servidores web o de aplicaciones (Apache y IIS, juntos en ocasiones), el explorador web sin lugar a dudas, y algunas herramientas de colaboración. Sin descartar además Excel y Word.

Sabiendo esto, es el colmo tener a buenos programadores haciendo su trabajo en una laptop con 1 GB de RAM con 80 GB de disco duro, heredada del gerente que la heredo del director. Pero... estoy seguro que esto no sucede tanto, ¿verdad? :)

Afortunadamente tengo un equipo decente, y siempre trato de estar actualizado. Me he topado con fiascos, como una HP Pavillion que creí muy buena, y que no me duro ni el periodo de garantía. Pero en general no me puedo quejar, en lo personal claro, pero he visto esto suceder a mí alrededor una cantidad increíble de veces, y sigue sucediendo.

Un buen equipo para hoy en día, sin exagerar y centrándose únicamente en cubrir las necesidades diarias comunes, depende de cada quien, pero podría ser algo como esto, y no menos que esto:
  • Procesador Intel Core i5 o AMD Opteron Quad-core. Un Intel Core i7 sería un gran plus.
  • Al menos 4GB en RAM, pero 8GB seguramente son una buena inversión para la productividad
  • 250 GB de disco duro por lo menos. 500 es un buen numero.
  • Dos pantallas. IMPORTANTE: Cada centímetro cuadrado más de despliegue hace más productivo al desarrollador. Codificar, depurar, leer documentos de diseño y requerimientos, instalar, dar soporte y mantener la comunicación, todo en una pantalla de 15", es un abuso y nada menos que un abuso. Si es una laptop, una pantalla extra es suficiente, todas las laptops desde hace 8 años tienen salida para la pantalla adicional y pueden extender el escritorio, no hay pretextos.
  • En caso de una laptop, una base que levante el monitor, un cómodo teclado y un mouse.
Es lo menos, así es. NO, no. No hay regateo ni se fía nada. Esto es lo que se llama UNA INVERSIÓN SEÑORES, se las presento.

Y cualquier programador que enorgullezca de serlo un poco, estará de acuerdo, ¿o no?

9 comentarios:

  1. Hola Salvador, primero que nada un gusto saludarte.

    En mi caso no estoy de acuerdo. Habrá situaciones donde una sola persona desee, pueda y le agrade trabajar de la manera que planteas, pero un buen equipo de desarrolladores hoy en día debe repartirse el trabajo por especialidades.

    Pretender que un solo individuo haga todo lo que mencionas me resulta un tanto anticuado y poco digno para un profesionista respetado y que se haga respetar.

    Vaya, que si alguien trabaja de esa manera, o es aquel desarrollador que egoísta o jactanciosamente siente y quiere hacer todo solo (como era la tendencia a principios de los noventas), o en su empresa se ve obligado, aunque no quiera, a hacer de todo (como desafortunadamente sigue siendo costumbre en muchos lugares).

    Creo que las características técnicas y aplicaciones que sugieres están bien para tenerlas en cuenta en cualquier empresa o departamento de desarrollo, pero no necesariamente es lo que debe tener todo desarrollador para hacer bien su trabajo.

    Más bien depende de qué tipo de trabajo haga cada persona en particular. Con tu permiso, me permito referir uno de mis artículos al respecto:

    http://rescatandoadelphi.blogspot.com/2009/06/dte-y-la-figura-del-bibliotecario.html

    Un abrazo bien equipado.

    Al González. :)

    ResponderEliminar
  2. Probablemente para los desarrollos con delphi no haga falta un equipo tan potente.

    En mi experiencia con desarrollos en Java y aun cuando aplicamos el "desarrollo por especialidades" requerimos un equipo potente porque tenemos que ejecutar:
    - IDE Eclipse
    - Servidor de aplicaciones
    - Base de datos
    - Cliente de correo
    - Cliente de SQL para hacer consultas
    - Cliente de mensajeria
    - El antivirus

    Y coicido con Salvador, tambien usamos dos monitores: en uno estamos ejecutando la aplicacion y en otro mostrando el log de la ejecuición.

    Saludos.

    ResponderEliminar
  3. Estoy de acuerdo contigo Salvador, aunque apliquemos el desarrollo por especialidades como dice Al, no hay nada como sentir que el equipo en el que estas trabajando responda a todas tus necesidades, recuerdo cuando trabajaba en un consultoria en la cúal nos daban equipo mediocre, ya me daba miedo oprimir "F9" por el tiempo que tardaba en compilar. Ahora trato de siempre tener un buen equipo el cuál me haga sentir bien y hasta termino mi trabajo en menos tiempo.

    y como dice Al:

    Un abrazo bien equipado

    ResponderEliminar
  4. [...] no hay nada como sentir que el equipo en el que estas trabajando responda a todas tus necesidades [...]

    Así debe ser, Marco, muy de acuerdo con esa parte. :)

    Salvador, espero no haberte parecido grosero, extenderé un poco mi punto de vista:

    El análisis que haces me parece certero como tal. Y como dije antes son características que haríamos bien en tomar en cuenta al buscar mayor productividad.

    Sólo que quizá debemos detenernos un momento, para revisar si no estamos haciendo apología del "informático multifunciones", esa idea que muchas personas suelen hacerse de los que trabajamos en esta profesión, y que tan poco bien ha hecho a la misma.

    Me tomo el atrevimiento de citar esta parte de tu texto, no porque esté de acuerdo con ella, sino para invitar a la reflexión:

    Es necesario tener Outlook o Thunderbird si quieres que tus programadores te respondan los correos de vez en cuando, y no se diga Skype y similares, aunque esto vaya en detrimento de su concentración.

    Un cordial saludo.

    Al González.

    ResponderEliminar
  5. Concido con todos. Me explico: es necesario cuidar que no la hagas --como dice Al-- de todologo.

    Pero también es cierto que aunque estés trabajando en la parte de la interfaz de usuario (utilizando componentes de la capa de negocio que otro programador hizo) uno de los dos va a necesitar la mayoria de los servicios en ejecución como bien menciona el compañero que trabaja con java.

    Saludos a todos.

    ResponderEliminar
  6. Ya que mencionan la necesidad de usar varios IDE´s, me ha sucedido que al tratar de trabajar con Delphi 2005 y Eclipse 3.5 creo que ocurre algun conflicto porque el IDE de Delphi funciona de manera extraña que inclusive se desinstala, ¿saben algo al respecto?

    ResponderEliminar
  7. Al: Un gusto saludarte como siempre. No me parece indigno que se espere que solucionemos varias cosas, pero si es ideal un equipo multiespecializado. Ojala asi fuera todo el tiempo.

    Marco: Asi es mi amigo, pocas cosas hay mas frustrante y en ocasiones nada peor para el ciclo mental de un desarrollador, que un equipo que no responde al paso del proceso de analisis y abstracción del desarrollador.

    De hecho, estoy seguro que un equipo inadecuado sea de vez en cuando razon suficiente para buscar otro empleo.
    Un abrazo a todos desde Guadalajara.

    ResponderEliminar
  8. Hola Salvador, un saludo creo que te falto lo mas importante el asiento ya que en realidad trabajamos con el trasero. Por mas equipo chingon que tengas si la silla no reuno los requisitos necesario no creo que aguantes mas de 3 horas salvo ya esten dormidas las ignacias.

    Un abrazo.
    Ramiro

    ResponderEliminar
    Respuestas
    1. Cierto Ramiro, la silla tal vez es lo primero que nos ayuda a ser mas productivos y nos evita serios problemas de salud. Que tal una Aeron Chair o una Mitra de Herman Miller http://www.hermanmiller.com/products/seating/work-chairs/aeron-chairs.html

      Eliminar