domingo, abril 17, 2011

Para los que aspiran a ser programadores

Sexta entrada del blog de P* traducida al castellano:

Hola, tengo mucho tiempo sin escribir. Es Simón, uno de los nuevos programadores.

Ahorita, febrero, es el mes en que están en plena búsqueda de trabajo, ¿verdad? Uds. que están buscando trabajo, ¡ánimo!

Cuando a mí me tocó hacer búsqueda de trabajo pasé por muchas dificultades. Especialmente, se me hizo muy difícil el idioma japonés y los modales. Si no leía el japonés lo suficientemente rápido, no podía terminar los exámenes a tiempo. Además, como no conocía los modales, en las primeras entrevistas cometí muchos errores.

Sin embargo, a través de ensayo y error aprendí qué se debe hacer en la búsqueda de trabajo. Quisiera compartir una de las cosas que aprendí con aquellos que aspiran a ser programadores de juegos. Me alegraría mucho que les fuera de utilidad en su búsqueda de trabajo.

Los aspirantes a una compañía deben enviar varios documentos. Dependiendo de la compañía, a los aspirantes a programador se les pide que envíen un proyecto. Las personas que estudiaron en escuelas técnicas de video juegos pueden enviar juegos que hayan desarrollado, pero no todos los aspirantes a programador asisten a escuelas de juegos.

Yo era uno de esos aspirantes a programador que no había ido a una escuela de juegos. No sabía qué debía enviar. Como estaba en competencia con los estudiantes que fueron a escuelas de juegos, pensé que yo también tenía que enviar un juego, y que mientras más grande fuera el juego, mejor.

Yo había programado un juego de peleas en 3D, por una razón que no tenía nada que ver con la búsqueda de trabajo. Con esfuerzo, yo mismo hice los modelos, las animaciones y el escenario. El juego en sí no era muy divertido. Además, como el juego era enorme, todavía estaba incompleto. Sin embargo, tenía la esperanza de que las personas que revisaban los proyectos pensaran que una persona que se proponga el reto de construir un juego así de grande debía ser un programador que trabajara con empeño.

No obtuve buenos resultados de parte de las compañías a las que envié el juego de peleas. Concluí que no importaba qué tan grande fuera el juego, ni qué tan ambicioso fuera el proyecto; un juego incompleto no era la mejor estrategia.

Decidí preparar otro proyecto. Esta vez sería un programa pequeño, completo y simple. Como aspiraba a compañías de juegos decidí que tenía que ser un programa que tuviera que ver con computación gráfica. Me decidí por dos programas. El primer programa muestra una aproximación de una esfera. Se podía cambiar interactivamente el número de subdivisiones de los polígonos. El segundo programa mostraba en 3D un mapa de alturas. Para ambos programas usé OpenGL y los escribí en el lenguaje C.



Con los programas cortos recibí mejores resultados de las compañías.

Pienso que, dado que el programa es corto, las personas que evalúan los proyectos pueden concentrarse más en entender la estructura del programa, en ver las habilidades del programador, en ver su capacidad de resolver problemas y su forma de pensar.

Pienso que uno puede mostrar mejor sus habilidades de programador a través de un programa corto. Uno puede hacer que resalten aquellas cosas que uno quiere mostrar. Es fácil comunicar un "miren, ¡soy capaz de programar estas funcionalidades!".

Lo que quiero compartir con los aspirantes a programador es: lo importante no es el tamaño del programa, sino que sea un programa completo y fácil de entender. Me alegraría que este tip les sea de utilidad.

domingo, abril 10, 2011

Las obsesiones de un programador

Tengo mucho tiempo sin escribir, vamos a ver si este mes me pongo las pilas y compenso con más entradas. Aquí va la quinta entrada en el blog de P*, traducida al castellano:

Hola, es Simón, uno de los nuevos programadores.

Creo que es algo obvio, pero el trabajo de un programador implica usar mucho el teclado. Sin importar qué herramienta, sistema o juego uno desarrolle, uno escribe el programa a través de un teclado. Yo utilizo el teclado más que el control de juegos, más que el mouse, más que los lápices, más que cualquier otra cosa. De hecho, creo que el objeto con el que más tengo contacto durante el día es el teclado.

Antes de empezar a trabajar en P* yo ya tenía experiencia en programación. Sin embargo, comparativamente, en el colegio no usaba tanto el teclado como lo uso en P*. Como en P* me la paso programando todo el día, empecé a desarrollar ciertas obsesiones.

Mi primera obsesión son los shortcut keys. Como cambiar las manos del teclado al mouse, y del mouse al teclado es algo fastidioso y quita tiempo, quería hacer mi trabajo utilizando sólamente el teclado. Para lograr mi deseo la única manera era utilizando shortcut keys.

Toda la vida he utilizado los shortcuts básicos como Ctrl-c, Ctrl-v (copiar y pegar) y Alt-Tab (cambiar de ventana); pero, recientemente no utilizó click-derecho para abrir el menú contextual sino Shift-F10, navego por la estructura de directorios con las flechas del teclado, incluso inicio los programas a través del teclado.

Para abrir un programa desde el teclado utilizó un programa llamado Launchy, que me lo presentó Ochiai, un programador que entró a la vez que yo. Si uno presiona Alt-Space, Launchy abre una pequeña ventanita. En esa ventanita uno puedo escribir el nombre del programa o del directorio y ejecutarlo. Si les interesa pueden visitar launchy.net.

Sin embargo, no me limité a los shortcuts del escritorio, ahora también uso bastante los shortcuts del editor de texto. Por ejemplo, para mover el cursor hacia la línea de abajo no utilizo ↓ (abajo) de las flechas del teclado sino Ctrl-n, para bajar una página utilizo Ctrl-v, para comentar una función utilizó Ctrl-c Ctrl-c, etc. El utilizar estos shortcuts me permite no alejar las manos de las teclas principales del teclado y teclear más rápido. (Por cierto, estos shortcuts sólo funcionan en el editor de texto Emacs)

Mi siguiente obsesión es la distribución de teclas del teclado. Aunque los shortcuts son muy útiles, si uno los utiliza mucho uno se dará cuenta de que la posición de ciertas teclas es inconveniente. En especial la tecla Ctrl (control) de la izquierda.

Muchos de los shortcuts utilizan Ctrl, ¿verdad?. Me intrigó por qué razón la persona que diseño los shortcuts decidió utilizar una tecla en una posición tan lejana e incómoda. Decidí investigar y terminé leyendo sobre la historia de los teclados. Resulta ser que la posición original de la tecla Ctrl es la posición actual de la tecla CapsLock (BloqMayús).



¡Por supuesto! Con la posición original, los shortcuts son fáciles de teclear. El problema es que cambió la posición de las teclas. Decidí probar cambiar la posición de las teclas, resultó ser súper fácil escribir los shortcuts. ¡Ya no se me cansa más la mano izquierda! Las personas que utilizan mucho los shortcuts deberían probar la posición original.

Para poder cambiar la posición de las teclas hay que editar el registro de Windows. Como eso es un fastidio, estoy usando un programa llamado SharpKeys. Como es muy fácil de usar, aquí se los presento: sharpkeys.codeplex.com

Mi última obsesión es el teclado en sí mismo. Es la última frontera de la obsesión con teclear. Si uno llega hasta este punto es que uno se ha convertido completamente en un fanático de los teclados.

Según los más fervientes entusiastas de los teclados, los teclados comunes no son suficiente para una persona que teclee mucho. Esto se debe a que, en un teclado común, aunque uno presione una tecla uno no sabe con certeza en qué momento se activa su circuito. La única retroalimentación que uno tiene es el ver que el caracter ha aparecido en la pantalla. Sin embargo, las teclas de los teclados mecánicos tienen cierta resistencia. Cuando el circuito de la tecla se activa, la resistencia de la tecla cambia inmediatamente. Por lo tanto, la retroalimentación no se limita al caracter en pantalla, uno también cuenta con el sentido del tacto. Dependiendo del diseño, también se puede escuchar un "click" cuando se activa el circuito. Según los amantes de los teclados, si uno cuenta con el feedback táctil y auditivo uno puede teclear más rápido y minimizar los errores. Aparentemente, también se siente muy bien.

Quisiera comprar un tecládo mecánico para probar. En estos momentos esto investigando diferentes marcas y modelos. Por lo que he investigado, la calidad de los teclados mecánicos hechos en Japón es muy buena. Posiblemente escoja uno japonés. Sin embargo, si tuviera infinito dinero, me compraría un teclado mecánico modificado al estilo steampunk por datamancer.



Sin embargo, como cuestan alrededor de (USD) $1500, creo me mejor me compraré un teclado mecánico normalito.

--

Hasta ahí el post original. Si tienen curiosidad, terminé comprándome un Filco Majestouch Tenkeyless, con switches Cherry MX azules. En castellano: un teclado mecánico de la marca Filco, que no tiene la sección de números de la derecha, y que utiliza los switches que fabrica la compañía Cherry; los switches azules proveen feedback tácil y auditivo.

Y aquí las fotos de mi bebé:





Como pueden ver, lo modifiqué con unas teclas de colores diferentes. Esc ahora está en rojo, y en una posición más cómoda si uno se la pasa cancelando programas, y las teclas WASD (que se usan mucho en juegos de computadora) están en morado.

:D