Evilham.com

Cómo empecé a programar

Introducción

Primero quería empezar a escribir sobre cosas relacionadas con mi trabajo, pero después me dí cuenta que introducir el tema de la nada habría requerido explicar cómo empecé a programar y cómo lo uso en el trabajo.

Así que aquí intentaré hacer justamente esto.

Sólo quiero añadir, que programo porque me divierte y porque me simplifica la vida. Con frecuencia también le simplifica la vida a alguien más. Eso significa que programo en el trabajo, pero para ayudar a hacer mi trabajo (o el de alguien más) más rápido y mejor, es decir, no es mi función principal – al menos no lo es al escribir esto.

Tabla de contenido

Años tempranos

Soy de las nuevas generaciones, esto significa que mis años tempranos de alguna forma son los “nuevos tiempos”, de aquí que no tenga historias divertidas de ordenadores que necesitaban una habitación entera en una Universidad, que no haya tenido experiencia con las tarjetas perforables. De hecho, todavía no me habían concebido cuando internet se empezó a extender.

Eso significa que mi primera experiencia con un ordenador… Fue un “PC” de IBM (el ordenador personal). Sí, una cosa más o menos pequeña con 64MB de memoria RAM y con una pantalla de 15” que podía manejar una resolución de 800x600 píxeles (¡con una profundidad de color de 16 bits!).

Como el mini-humano curioso que era, lo primero que hice cuando tuve acceso al ordenador (¡que venía con Windows 95!) fue… descubrir qué hacer con él. Sí, lo podía encender, mover el ratón, hacer algunos dibujos con Paint, etc. Pero esto tenía que poder hacer más.

No pasó mucho hasta que ya me sabía todas las configuraciones disponibles y el ordenador me aburría. Por suerte, un poco después de esto recibí una copia de una versión de Logo.

¡Ahora empezaba la parte divertid! ¿Por qué dibujar figuras geométricas imprecisas con Paint, cuando tenía la oportunidad de dibujar cualquier cosa imaginable sólo con decirle a la tortuga simpática cómo moverse?

Tal vez era un deseo oculto de dominar el mundo y que todos hicieran lo que yo dijera, pero me sentía muy bien al ver que la tortuguita hacía lo que yo le pedía. Incluso cuando pasaba alguna cosa inesperada porque yo le había dicho que hiciera aquello, incluso si no era lo que yo quería.

En otras palabras, no era la tortuguita que se equivocaba, el problema era la criatura de 7 u 8 años entre la silla y el teclado; y ya en ese momento lo sabía.

Después, descubrí que no únicamente la tortuguita, que era el ordenador que está diseñado apra hacer exactamente lo que les decimos, incluso si nos equivocamos; el mini-dictador dentro de mí estaba muy satisfecho.

Mientras escribía esto, la nostalgia se hizo notar, encontré una versión del Logo writer. Aquí hay una pequeña tontería que hice mientras me acordaba de la sintaxis y algunos comandos básicos:

logo_hex

Y aquí el código para esto:

cg pu setpos [-200 -95] pd setc 8
repeat 125 [repeat 6 [left 120 repeat 7 [fd 20 right 60]] \
pu fd 60 left 60 fd 40 right 120 fd 20 left 60 pd] pu home setc 1 pd

Nota extra: ¡el espacio de esta tortuga es topológicamente equivalente a un donut!

Madurando y programación más seria

Al inicio de mi educación secundaria, tenía la sensación que tenía muchísimo tiempo libre, así que aprendí a programar en Pascal y Basic (que eran lo que tenía disponible), algunos años después descubrí Visual Basic y aprendí a apreciarlo, odiarlo y después a olvidarlo; pensaba, erróneamente, que no lo necesitaría de nuevo.

Después, fui a la universidad (no esta vez, la primera vez) y aprendí, entre otras cosas, sobre Linux, filosofía de Software Libre, bash, Python y otras cosas que les siguieron. Casi de inmediato me enamoré del sistema operativo, particularmente uno de los mejores profesores que he tenido me regaló unos DVDs con Debian. Casi que no he usado nada más desde entonces.

Cuando volví a estudiar en otra universidad, las nociones de programación científica eran parte del currículum de matemáticas, así que aprendí a programar en C.

Actualmente, estoy en otra universidad (semestre de intercambio) donde estoy aprendiendo a programar de forma reutilizable, genérica y eficiente cosas científicas en C++ y algo de Java, que ya había aprendido por cosas personales.

En el trabajo

No me gusta trabajar… En principio no suena muy bien, la cosa es que no me gusta trabajar porque sí y me molesta sobremanera hacer las cosas de forma ineficiente.

A mi forma de ver: como más rápido acabe las cosas que no me gustan especialmente, más rápido puedo hacer algo más interesante, o ¡incluso hacer nada!

Esto sería lo ideal in un entorno enfocado a objetivos, que no es mi caso actualmente, así que… soy más productivo.

Y, ¿cómo lo hago para ser más productivo? Doy por sentado que para cada tarea repetitiva que hay que hacer más que una vez manualmente, alguien se equivocará en algún momento y posiblemente se equivocarán más de una vez y de maneras diferentes.

Si el coste de automatizar la tarea (y acabarla de esta forma más automática) es aproximadamente igual al tiempo que le tomaría a alguien hacerla manualmente (incluyendo control de errores), simplemente intento automatizarla. No sólo me divierto más, sino que me aseguro que no haya errores o que sepa con qué tipo de errores me encontraré. Lo mejor: ¡podría ser útil en el futuro y arrorarnos algunas horas!

Al inicio, por supuesto, no tenía ni idea de cómo hacer estas cosas, ni sabía estimar el tiempo de una tarea de forma acertada, esta última habilidad vino con el tiempo y la experiencia, la primera fue producto de mi curiosidad insaciable, horas de investigación y muchas horas de práctica, muchas de estas en mi tiempo personal o en tiempos muertos en la empresa.

Concluyendo

Tuve el privilegio de estar en contacto con ordenadores desde una edad temprana y siempre tuve un interés por la programación, es algo que cuadra bastante bien con mi personalidad y forma de hacer cosas.

Mis estudios me trajeron más cerca al mundo de la programación y el azar hizo que mi trabajo me permita programar de una forma más o menos regular… ¿Porque a quién se le ocurriría hacer algo en un día en lugar de tres o cuatro horas?