¿El hardware ideal para un programador?

¿Cuanta potencia necesito para programar?

¿Cual computador necesito para programar?


   Como en muchas otras áreas de la informática, este es un punto en el que aún no hay consenso, hay quienes aseguran que aún en tiempos modernos con una Pentium IV y una modesta tarjeta vídeo es suficiente, y yo personalmente he visto a muy buenos programadores hacer proesas en estas máquinas dignas mas bien de un museo que del escritorio de un programador, pero eso si, estos maestros de la programación suelen trabajar en lenguajes de pocos requerimientos gráficos como C, HMTL5 (algunos niegan que sea un lenguaje de programación), y a lo mucho PHP, en contraste la opinión de muchos otros es que la mejor tecnología aumenta tu productividad, lo que es una verdad a medias si tomamos en cuenta que la gran mayoría de los programadores son también adictos al gaming, y el entretenimiento online.

   Así que estas declaraciones tan opuestas son la base de la que partimos para intentar darle una respuesta definitiva a esta pregunta moderna.


¿En que lenguaje programas?



    La primera pregunta que deberías hacerte es esta, como programador  debes considerar el lenguaje en el que vas a desarrollar software, y cuales son los requerimientos de tu obra, mientras mas efectos gráficos tenga mayores requerimientos de hardware tendrá tanto para el programador como para el usuario final.

Aún hay programadores que usan pentium IV y les va muy bien


   Por ejemplo quienes desarrollan micro-controladores, o software basado  en Assembler o en lenguaje C, no necesitan de un gran equipo, estos lenguajes son bastante veloces, eficientes, y ademas compactos, por lo cual con una pentium IV con la tarjeta gráfica integrada, o con una GPU de bajos recursos, podríamos ver satisfechas nuestras necesidades, inclusive con una Raspberry PI podríamos vernos cubiertos tomando en cuenta que los últimos modelos incluyen un procesador Quad Core por menos de 40€, esto es especialmente cierto cuando desarrollamos software para GNU/Linux que suele ser mas eficiente, y veloz que Windows.

     Quienes desarrollan en lenguaje mas pesados como C++ (que es mas gráfico que C), C#, Python, y hasta Ruby o Java pueden ver sus necesidades cubiertas con un Dual Core ya sea de Intel o AMD, e inclusive con la misma Raspberry PI.

     La verdad de todo esto es que como programadores solemos trabajar con fracciones de código (si laboramos en una gran empresa), o en proyectos pequeños, hay que considerar ademas que siempre tratamos de depurar el código priorizando la eficiencia de la máquina, y ademas este tipo de aplicaciones son desarrolladas basadas en la ligereza, por lo cual requieren bajos recursos para su funcionamiento, por lo tanto un programador no necesita tanto poder gráfico ni capacidad de procesamiento, así que antes de decidirnos por un hardware de bajas prestaciones pasemos al siguiente punto.


¿Que vas a desarrollar?


    Antes de comenzar a invertir en equipo deberíamos pensar en ¿que vamos a desarrollar? esta claro que no es igual de exigente una aplicación para celulares, un programa con fines académicos, o un software de gestión de inventarios, que crear un sistema operativo con miles (a veces millones) de lineas de código, o un sistema de edición gráfica, y hasta un vídeo juego, mientras mas elaborada sea la interfaz gráfica, y mas complejas sus funciones, mas lineas de código ejecutara simultáneamente, y requerirá mas recursos del procesador y la GPU, de hecho es precisamente la parte gráfica la que suele consumir mas recursos de nuestro ordenador, tanto que la GPU es un procesador (o un micro-ordenador) generalmente mas potente que el integrado en nuestro equipo, dedicado únicamente a procesar gráficos.

   Pero los programadores no somos diseñadores gráficos, nuestro trabajo no es crear o editar secuencias de vídeo, animaciones, ni nada por el estilo, de hecho nuestro trabajo a nivel gráfico suele limitarse a la apariencia de las interfaces, del resto todo se trata de una pantalla blanca o negra, con letras en contraste o de colores, por lo cual nuestros requerimientos de hardware suelen ser mas bajos que los de un diseñador gráfico el cual si necesita obligatoriamente de un hardware potente (a veces diseñado a medida) para poder llevar a cabo su trabajo eficientemente.

     Quizás en el único sentido en el cual un programador pueda requerir de un hardware de altas prestaciones es en el caso de los desarrolladores de vídeo juegos cuando necesitan correr un vídeo juego, o buscar bugs (fallas) en el mismo.


¿Emular o no emular?


    Existen muchos motivos para emular (generalmente montando máquinas virtuales) ya sea para tener el esqueleto del programa en una pantalla (el código fuente) y los resultados en otra (el programa corriendo) lo que evita los molestos intercambios de ventana (suena absurdo, lo sé, pero no es lo mismo escribir y comprobar un programa que pasar todo el día, todos los días, haciendo lo mismo), o para quienes trabajan bajo el esquema de "la armada de un solo hombre" (muy común en el mundo freelance), también existe el caso de quienes programan para sistemas operativos distintos al que utilizan ya sea de Windows a GNU/Linux o viceversa, u otros sistemas como Android, MacOS, Iphone, etc etc (muy común en nuestros días), y como olvidar a los que cocinan ROMs Android que necesitan emularlas para probarlas, e inclusive quienes desarrollan paginas web (poco común en nuestros días gracias a wordpress) necesitan probar el resultado en sus equipos, todo esto se logra gracias a la emulación, lo que consume mas recursos (fuerza bruta o capacidad de procesamiento, y ram) de lo que requiere nuestro equipo en condiciones de funcionamiento básicas.

    Por lo cual todo se reduce nuevamente a ¿que vas a desarrollar? y podríamos agregar ¿cada cuanto? pues como ya he aclarado, no es lo mismo desarrollar un programa alguna vez, que hacerlo todo el día, todos los días, así que podemos ir deduciendo que entre mas éxito como programador tengas, y mas complejos sean tus proyectos, mas recursos (y por extensión mejor hardware) necesitaras, así que ya la pentium IV, Raspberry PI, y el Dual Core, nos van quedando chicos si se trata de emular, sobre todo si lo hacemos todo el tiempo.
   

¿Entonces que hardware necesito?


   Como diría Einstein todo es relativo nada es absoluto, o lo que es lo mismo, todo depende de tus necesidades reales como usuario, existen quienes utilizan sus equipos para entretenimiento, seamos sinceros ¿a cuantos informáticos nos disgusta la idea de sentarnos frente a un equipo con una pantalla de 17 o mas pulgadas a jugar vídeo juegos, ver netflix, ademas de trabajar incansablemente como guerreros del teclado? en este sentido un equipo de altas prestaciones no solamente cubre nuestras necesidades laborales, sino que ademas de ello suple nuestras necesidades humanas de entretenimiento, en este sentido mientras mas potencia tengamos mejor.

Presupuesto la gran pega


    Guste o no, el dinero mueve al mundo, el problema es que no todos tenemos el dinero para adquirir un equipo de ultima generación, y la verdad es que la gran mayoría (énfasis en los programadores) no lo necesitamos, lo que resta puntos a la afirmación anterior, así que el equipo ideal para programar nuevamente depende del uso que le vayamos a dar ¿Que tipo de software vas a desarrollar?, ¿que tan complejo?, ¿en cual lenguaje?, ¿y para que mas vas a usar tu equipo?, pero a esto puedo agregarle algunas preguntas ¿necesito una pantalla en full hd para programar?, ¿necesito un joystick para programar?, ¿necesito cornetas o un set de audio especializado en mi labor como programador?, ¿necesito un monitor en 3d?, la mayor parte de estas preguntas pueden resolverse con un rotundo no, todo esto puede deleitarnos, y complementar nuestra experiencia como usuarios UE (User Experience), pero como programadores no lo necesitamos realmente, es mas algunos expertos en código suelen quejarse de estas distracciones.

El punto iitermedio (separando la paja del trigo)


    En vista de los razonamientos anteriores, solo queda buscar el punto intermedio entre un presupuesto adecuado, y las necesidades reales del usuario, por ejemplo si eres un programador trotamundos (hay muchos) necesitas movilidad, entonces lo tuyo será una laptop, mientras mas reciente sea la generación, y mayor capacidad de procesamiento mejor, recuerda que las laptops y notebooks son un complemento del equipo de escritorio y no sustituto, ademas los extravios, olvidos, y hasta robos, están a la orden del día, y lo ultimo que quisieras es perder todo tu trabajo, por lo cual un ordenador de escritorio aunque sea económico te viene muy bien como back up, o al menos un disco duro externo.


     Si eres mas conservador, y sedentario, entonces una desktop es lo tuyo, las desktop no solo suelen brindarnos mas potencia, sino que tienen mas posibilidades de actualización de hardware y estas son mas económicas que en el caso de las portátiles, aunque para cuando sales de viaje y debes llevar el trabajo contigo una laotop o una notebook representan un complemento ideal (e incluso una netbook, mas ligera y no tan costosa como la ultrabook).

     
    Sé que en el caso de los mas experimentados no es necesario aclarar esto, pero hoy en día es posible programar a pequeña escala, o algunas fracciones de código en un smartphone, o mas convenientemente en una tablet, lo que no tiene mucho sentido ya que estos dispositivos están enfocados mas bien a quienes interactuan con las redes sociales o consumen contenidos en Internet, estos dispositivos no están diseñados para el programador aunque compartan procesadores con la Raspberry PI que recomiendo al principio (partamos de que su sistema operativo base es Android), el teclado en pantalla tampoco es la mejor idea del mundo si hablamos de programación, y aunque en algunos casos podemos agregar un teclado externo hay que admitirlo, no es cómodo. Peor es el caso de la ChromeBook de Google, un dispositivo diseñado para deleitarte con un bajo precio, a veces un hardware impresionante, y un diseño extremadamente similar al de las ultrabooks, pero nula libertad en un sistema operativo completamente dependiente de la nube y la conexión a Internet (la gran pesadilla de cualquier informático avanzado).


     Y finalmente mi opinión directa, sincera, y muy personal, no necesitas tanto... Con un i3, i5 o i7 de segunda o tercera generación, la GPU integrada, y unos 8 Gb de ram, es mas que suficiente hoy en día; con el pasar del tiempo como usuarios (especialmente para los gamers) estos equipos quedaran en la obsolencia, pero como programadores estas especificaciones son mas que suficientes para sacarle provecho laboral, y personal, a un equipo durante varios años, claro que esto depende mucho de tu presupuesto, un equipo de estas especificaciones puede que ya lo tengas en casa, que puedas ensamblarlo por menos de 300€, o que simplemente puedas adquirirlo en linea a un buen precio, a diferencia de los programadores que comento al principio del articulo no te recomiendo equipos obsoletos como un Dual core o un Pentium IV (volver a las cavernas) ya que tu equipo de trabajo representa tu fuente de ingresos, y adquirir refaccionamiento para estas puede ser toda una odisea hoy en día, si tu presupuesto es mas holgado siempre te recomiendo invertir en el mejor equipo posible porque la tecnología seguirá avanzando y cada vez los requerimientos serán mayores, pero si estas comenzando, eres un estudiante, aficionado, o un programador amateur, y tu presupuesto esta limitado, con estas especificaciones es mas que suficiente para trabajar, y divertirte.

Dratza.... Otras paginas y blogs recomiendan algo distinto


     Claro, yo también he visitado muchas webs y blogs, y la recomendación general es adquirir la ultima tecnología, lo cual no desestimo a nivel personal, siempre y cuando la potencia (o fuerza bruta) y posibilidad de actualización marque una diferencia realmente significativa, lo cual puede ser importante para un usuario enfocado en el entretenimiento o el desarrollo gráfico, pero para programar no necesitas tanto, la mayor parte de los bloggers y webs intentan venderte algo, son influencers, o trabajan con sistemas de afiliados, por lo cual están interesados en que gastes mas dinero, en mi caso en cambio la poca publicidad en este blog se utiliza para cubrir los gastos del dominio, es algo que hago netamente por hobby, y no tengo ningún interés particular en venderte nada, ni ganare nada porque compres uno u otro equipo, lo que realmente me interesa es compartir mi experiencia, y ayudarte a elegir un equipo adaptado a tus necesidades y presupuesto.

 No soy una persona muy sociable, pero en la vida he tenido dos grandes pasiones, soñar, y preservar mis principios e ideales, por ende creo en la justicia, la equidad, y sobre todo la libertad.


EmoticonEmoticon