Desarrollo de software

biometricsHubo una época en la que bastaba leer un libro de Peter Norton para saber lo que había que saber sobre la programación de una IBM PC. Esa fue otra época. En los últimos 30 años, pese al esfuerzo de todo el mundo para edificar un nivel de abstracción sobre todas las distintas capas de hardware y software que van y vienen en la industria de la informática y la computación, la programación de computadoras, la solución de problemas empleando un computador y el desarrollo de sistemas de información sigue siendo difícil. Adicionalmente, las cosas que uno debe saber para ser un buen programador siguen expandiéndose todo el tiempo.

Python logoEl convertirse en un programador competente, hábil, tan sólo en uno de los múltiples mundos de la informática o la computación toma años. Sí, no falta el estudiante recién egresado o profesional forjado en la práctica que dice que todo ya está hecho y “sólo debe aprenderse la API“. Claro, aprenden Java en una semana, Python en otra semana, y JavaScript en una semana más y piensan que son competentes. Piensan que conocer lo que está de moda es más que suficiente y desprecian aprender otros lenguajes y paradigmas de programación. Muchos de ellos, especialmente los “certificados”, harán uso de las más extrañas, nuevas y obscuras relaciones y consecuencias sintácticas del lenguaje pero desconocerán incluso las más elementales estructuras de datos y algoritmos a su alrededor. Si son cuestionados se limitarán a responder “en todos mis años como programador jamás tuve que preocuparme por saber que algoritmo usar, sino que elemento de la API conocer“. La nota final es que no tienen la más remota idea de lo mucho que se pierden y que les permitiría crecer mucho profesionalmente. Todos ellos creen que “la programación visual” es el futuro y se aterran cuando deben hacer algo a través de la línea de comando.

web-technologyUn paso mayor en la maduración de todo programador es aceptar el hecho de que lo que uno crea está muy lejos de ser bueno y más de ser perfecto. Aceptar el hecho de que la carrera que ha elegido será una de errores y aprendizaje es el primer paso en ello. Así, uno debe aprender a desarrollar no sólo defensivamente (colocando controles, registros y elementos de seguridad que le ayuden después a saber porque la aplicación falló) pero también científicamente (saber qué hace, por qué lo hace y para qué lo hace). Un paso más es entender que eso que sabe será sólo por poco tiempo, mientras no aparezca un nuevo paradigma, herramienta o técnica.

En el entorno profesional prácticamente nadie acepta que la teoría paga, y paga bien. Esto es porque los beneficios de una buena formación y cimientos teóricos son al largo plazo. Los estudiantes subvaloran la importancia de la abstracción porque carecen de la experiencia necesaria para ver que lo que hacen es sólo un caso (inclusive hipotético) de muchos posibles, en un mundo imperfecto. La verdad es que para lidiar con todo ello, las abstracciones son la mejor herramienta que tenemos y ésta ha estado disponible desde los inicios de la creación de software como un producto. Prueba de ello son las abstracciones que yacen en los cimientos de los estándares y especificaciones sobre las cuales se implementan las más ubicuas y exitosas aplicaciones de software que gobiernan nuestro mundo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s