¿La programación perdió el rumbo?

¿La programación perdió el rumbo?


El usuario final promedio no tiene idea de lo que sucede en el desarrollo del software. Todo lo que ven es: si el software funciona o no, si se ve bien o si es fácil de usar. Pero para los desarrolladores es una historia totalmente diferente. Ellos se sienten, cada día, más abrumados con las nuevas tecnologías y técnicas de programación, en lugar de ser cada vez más fácil, a veces se convierte más y más difícil.

Los programadores a menudo están a merced de los que crean las herramientas de desarrollo que ellos utilizan. Arrastrar y soltar, IntelliSence, XAML, editores de código sustituido por entornos de Studio, depuradores, programación orientada a objetos y más programación orientada a objetos. Ahora tenemos metro, WinRT y un mundo totalmente nuevo de desarrollo de Windows. ¿Se convirtió realmente en una programación más fácil, con todas las opciones que tenemos hoy en día? ¿O es que la programación perdió su camino?

¿De que se trata la programación?

  1. 1. Bits y bits. La programación tiene que ver con bits y bits. El texto en nuestras pantallas son bytes. Los gráficos que mostramos son bytes. Administradores de memoria para manejar bytes. Una compleja estructura de datos es sólo un montón de bits y bits. Es cierto que el usuario final ve las palabras, fotos y todo tipo de datos; pero el programador no, ya que su trabajo consiste en mover una gran cantidad de bytes en torno al lugar correcto en el momento adecuado.
  2. 2. Lógica. Sí, la programación tiene que ver con la lógica. Si pasa esto, haz esto. Hacer esto, mientras exista. Si la lógica es buena, el software funciona correctamente. Si la lógica es mala (por error) no va a funcionar como estaba previsto. Es tan simple como eso.
  3. 3. Mucho de matemáticas. Si hay una cosa que he aprendido a lo largo de los años, es la siguiente. Cuando se trata de programación, “cuenta con las matemáticas”. Si un programador puede traducir una tarea en sus componentes matemáticos, mejor será su programa y más rápido podrá codificar. Ahora algunas de las tareas son tan complejas, que sólo los programadores más avanzados son capaces de manejarlos. Tengo un gran respeto por las personas que escriben cosas como códecs de video o motores gráficos. Probablemente un fondo matemático excelente juega un papel importante en sus habilidades.

Ahora noten, que no he mencionado XAML, programación orientada a objetos COM o cualquier otra tecnología. No importa qué lenguaje de alto nivel o qué tecnología es utilizada por un programador, todo culmina en cosas mucho más simples, como mencioné anteriormente. Al final, un equipo debe ejecutar algún código de la máquina y luego tomar decisiones lógicas y mover un montón de bytes alrededor.

Para apreciar esto, hay que tener en cuenta el último iPad que Apple lanzó el 16 de marzo. Observa todo el entusiasmo sobre la nueva pantalla de Retina y el CPU más potente. ¿Sabes una cosa? Cuatro veces más pixeles en una pantalla, significa cuatro veces más datos para que el software pueda moverse, lo que quiere decir mas espacio en la memoria para almacenar todos esos bytes, más espacio en una unidad de disco para manejar todos esos datos y un CPU que es cuatro veces más potente para manejar, las cuatro veces más datos de la pantalla. Es fácil ¿no?.

Acabo de reventar la burbuja, porque esto significa que, literalmente, han perdido gran parte de los beneficios del CPU más rápido de iPad, ya que ahora tiene cuatro veces más trabajo que hacer. Los trabajadores tienen que considerar éste tipo de cosas.

Dos habilidades que a veces faltan

Si me preguntan: “Que cree Ud. que es lo que más frecuentemente carecen los programadores de hoy? Hay dos habilidades que creo que son fundamentales para el desarrollo de software que son más propensos a estar ausente.

  1. 1. Comprensión de los usuarios finales. Uno de los mayores problemas que pueden tener los desarrolladores, es la comprensión de sus usuarios finales. No importa lo buenos que somos en la programación, esto no significa que entendemos lo que el usuario final quiere o necesita realmente. Por desgracia, nuestras propias habilidades técnicas, pueden ponerse en el camino. Podemos estar tan atrapados con la última tecnología, que es fácil “perderse en el bosque”, como se suele decir. Una buena pregunta cuando se desarrolla el software es, ¿hacia donde me inclino, hacia lo complejo o a lo simple?”

El primer paso que llevaría a un nuevo cliente, sería simplemente pasar algún tiempo aprendiendo acerca de lo que hacen. Algo así como, “deme un recorrido por su negocio”. Usualmente, esto daría lugar a preguntas como ¿Por qué hace esto o aquello?. Ser un programador, no significa que se es un medico, un abogado, maquinista o un dueño de una tienda al por menor. Cuando se trata de las tareas que el cliente tiene que tratar a diario, se es un maniquí, no ellos.

Así que para escribir un buen software, un programador necesita ser un buen estudiante, un buen oyente.

  1. 2. La depuración es un arte. Ahora bien, si solo había una cosa que me gustaría enseñar a un nuevo, joven y cierne desarrollador, sería lo siguiente: La depuración es una forma de arte, no una tecnología. Los nuevos desarrolladores a menudo preguntan a los programadores experimentados: “¿Qué depurador recomendaría Ud.?. Mi respuesta, “tu eres el depurador, y la tecnología informática no puede remplazarte”

La depuración es una forma de arte, una habilidad, que es difícil de enseñar a otro. Para ser un buen depurador, se requiere de las habilidades de un Sherlock Holmes, que cualquier otra cosa. En mi caso, diseño herramientas para los programadores. Esto significa que no sólo tengo que depurar mi propio software, sino que cuando los clientes tienen problemas tengo que ayudarlos a depurar su software también. La única manera de asegurarme de que el problema no es con mis herramientas es ayudar al cliente a encontrar la causa real de un problema. En algunos casos, el código tiene un error, pero muchas veces lo causa el cliente, entonces hay que trabajar con el cliente para descubrir el verdadero problema.

Ahora, cuando mis clientes me preguntan cómo depurar el software, se sorprenden al ver que no uso ningún software depurador en absoluto, ni siquiera los que existen en el compilador que uso. Todo lo que necesito es una ventana de depuración simple para mostrar el texto en puntos clave de la ejecución de un programa, un cuadro de mensaje, el comando BEEP en el lenguaje de programación y la habilidad de depurar.

Esto no quiere decir que los depuradores no tienen lugar, solo porque no los uso. El punto es, que los programadores no esperen de un depurador para lograr algo que depende más de la programación que del depurador. El depurador no puede sustituir al programador.

Un choque a mi sistema

¿Cuál fue mi experiencia cuando traté de usar la ultima versión de Visual Studio como alguien que en realidad no ha trabajado con un lenguaje de Microsoft durante 10 años? El shock es la única palabra que puedo usar. Estoy acostumbrado a la codificación en un lenguaje de programación que esta a solo unos pocos megabytes para descargar. Puedo usar un simple editor de código IDE y escribir código, mucho de ello.

En comparación, Visual Studio es el entorno de desarrollo gigantesco que requiere para instalar gigabytes, y no megabytes. No creo que soy un idiota total, pero no puedo encontrar mi camino en el IDE. Muy pocas cosas tienen sentido para mi. XAML es tan totalmente ajeno a mi (¿XAML tiene que ver con Windows?)

Incluso el diseñado de formularios de metro no es intuitivo para mí. Ahora  bien no puedo utilizar los lenguajes de programación de Microsoft hoy en día, pero tengo un montón de aplicaciones de diseño visual orientado, por lo que puedo encontrar mi camino en una operación de arrastrar y soltar medio ambiente. Me vuelvo a preguntar ¿en qué se convirtió la programación hoy en día? ¿Es realmente más fácil la programación? ¿Perdimos la perspectiva como programadores? ‘¿sabemos como codificar mas?.

Visual Studio es una herramienta de programación excelente en las manos adecuadas. Pero para alguien que no utiliza lenguajes de programación de Microsoft, me preguntó qué le sucedió a la programación. Hoy en día, ¿ es tan fácil el desarrollo de software? ¿Los lenguajes de programación del futuro requieren terabytes en lugar de megabytes?

¿si las herramientas de desarrollo son tan complejos hoy, tienen todo el poder en manos de los programadores de filtrado hasta llegar a los usuarios finales? Bueno, todavía nos llegan quejas sobre que el software es lento, hinchado, con errores y no intuitivo. Lo sé, no se puede complacer a todos, pero nosotros, como desarrolladores realmente logramos el objetivo final de hacer que nuestros usuarios finales sean felices y productivos.

Termino el artículo con la pregunta que se inició: ¿La programación ha perdido el rumbo?

Fuente original: betanews.com/2012/03/20/has-programming-lost-its-way/