El mundo de la programación es cada vez más grande, es una de las profesiones más rentables en la actualidad, una con la que podemos ir y ser freelancers, o incluso llegar a formar una compañía.
En esta oportunidad, hablamos con un programador que es muy dado en lo que hace. Kevin nos ha contado su experiencia en esta profesión, e incluso dio consejos para todos aquellos que deseen comenzar, o ya comenzaron, en este mundo.
Kevin Esaa
Con esta peculiar frase Kevin nos dice que, con los códigos, puede hacer prácticamente cualquier cosa que su mente imagine, y que pueda ser hecha con una máquina.
Bueno, me llamo Kevin Esaa, un venezolano de 27 años. Soy ingeniero de sistemas, egresado de la UNEFA - Maracay, tengo alrededor de unos cuatro años de experiencia profesional en lo que el área de desarrollo de software y la programación. Actualmente trabajo en una empresa que se llama WAMS Mobile, aquí en Maracay. Allí normalmente nos dedicamos al desarrollo de aplicaciones para teléfono, tanto para Android como para iOS, y de vez en cuando también hacemos videojuegos. En WAMS, mi rol principal es el de desarrollador Android, sin embargo, a veces me uno al equipo de desarrollo de videojuegos y los apoyo en la parte de programación, planificación y diseño de gameplay.
Yo decido estudiar Ingeniería de Sistemas principalmente porque quería aprender a programar, y lo que me motivaba a mí a esto era que yo quería hacer mis propios videojuegos. Desde muy pequeño he estado involucrado con videojuegos, mis primeros recuerdos son de mí jugando Mario Bros, con las imitaciones de los de Game Boy que en Venezuela le suelen decir Atari, jugando Tetris, etc. Decía en aquel entonces que quería estudiar Ingeniería en Sistemas, sabiendo que aquí en Venezuela es algo difícil, la industria de videojuegos en Latinoamérica es bastante pequeña.
Entonces, me decía que, si no podía trabajar en videojuegos, al menos iba a tener una base en la carrera para dedicarme a cualquier cosa relacionada con tecnología. Ya sea administrando redes, programando páginas web o alguna otra cosa por el estilo. Incluso llegué a pensar que la ingeniera en sistemas tocaba cosas de las computadoras a nivel electrónico, en más de una ocasión terminé dañando mis computadoras desarmándolas y volviéndolas a armar. Y, de cierta forma, me enteré que para hacer videojuegos necesitas aprender a programar, debido a que en el liceo veía informática, y uno de los profesores nos enseñó una tecnología, llamada Flash. Una de las cosas que nos mostró fue su tesis, un juego hecho con Flash.
Creo que todo empezó con esa materia del liceo, y además de eso, mi amigo del liceo es muy fanático de la tecnología. No recuerdo como, creo que, a partir de la misma materia, él y yo terminamos estudiando número binarios. Y así buscando más información, cuando tuve internet por primera vez, creo que en el año 2008. Me puse a investigar sobre desarrollo de videojuegos en Venezuela, y terminé en el blog de El Chigüire Literario, escrito por Ciro Durán.
Ciro Durán ha sido una persona muy importante en lo que el tema de videojuegos en Venezuela se refiere, se ha encargado de reunir varios desarrolladores; Tanto así que en el 2008-2009, él celebró un evento llamado El Caracas Game Jam (un Game Jam es un evento donde se reúnen desarrolladores de juegos ya sean digitales, electrónicos o de mesa, para crear un juego desde cero en un tiempo muy corto), que forma parte del Global Game Jam (una celebración que se hace el último fin de semana de Enero a nivel mundial con todas las personas que organicen y registren en la página del Global Game Jam una sede en su ciudad, para hacer juegos en 48 horas).
Leyendo el blog de Ciro, me doy cuenta de que mis conocimientos en programación son pobres, nulos. Yo no entendía prácticamente nada de la parte de programación que leía en ese blog. Entonces, ahí me dio más motivación para estudiar Ingeniería de Sistemas para aprender a programar y hacer mis propios juegos. Además de eso, para mí siempre se me ha dado mejor las actividades lógicas, como la matemática y la física, que las actividades artísticas, como el dibujo o la música.
Y, de cierta forma, sucedió como había pre-visualizado en un principio: Si no trabajaba de programador me dedicaría a otra parte de la industria, y así fue. Mi primer trabajo en el área fue como pasante programando sistemas administrativos. Y respecto al Game Jam, no fue hasta el 2017 que pude asistir a este evento por primera vez en mi vida. Y desde allí es que he podido centrarme más en lo que es el desarrollo de videojuegos.
Como programador es difícil decir que figura me inspira, porque el oficio de programar hasta cierta forma nosotros mismos decimos que es como la carpintería. Es como para nosotros hacer una ecuación matemática, eso de ver como otra persona resuelve un problema a nivel de programación y que eso inspire, por lo menos a mí, no me sucede al nivel de lo que es el código.
Sin embargo, más allá de lo que es la programación como tal, sino la persona y en las cosas que ha logrado, pondría como ejemplo al señor Bill Gates, con todo lo que ha logrado desde muy pequeño, comercializar sus programas, y que hoy día sea un filántropo muy importante a nivel mundial.
Aunque con la pregunta anterior ha quedado claro que para mí Ciro Durán ha sido una gran motivación para hacer juegos. Digamos que fue un punto de partida para continuar en este mundo. Él también se ha convertido en un filántropo, he podido ver cómo ha organizado varios eventos para recaudar fondos para varias obras benéficas en Venezuela. Recuerdo también uno de sus proyectos de computación electrónica y realmente fue un trabajo muy impresionante. Son ese el tipo de cosas que me motivan en lo que hago todos los días.
No fue hasta que estuve en la universidad que yo empecé a hacer código como tal, recuerdo que mi primer programa sumaba dos números. Lo cual puede parecer una tontería, pero lograr que una máquina haga lo que tú le pides, es una satisfacción muy grande para mí.
Les puedo decir que eso fue en mi tercer semestre, fue mi primera de varias materias de programación y la cursé tranquilamente. Al siguiente semestre empecé muy motivado para continuar lo que había aprendido, y me encuentro con la pared de que gran parte del conocimiento que adquirí en el semestre anterior me lo había dado un profesor “pirata”, lo cual fue duro. Fue como si me dijeran: “Mira, todo lo que aprendiste allá, ese profesor te engaño, eso no es así.” Y fue tanto así que abandoné esa materia, ya que no estaba seguro de lo que estaba haciendo allí. En mi casa yo empiezo a investigar sobre el tema, y resulta que todo el tiempo solo estuvo equivocado ese profesor pirata; para poner un ejemplo, ese profesor llegó a decirme que los arreglos en lenguaje C comienzan en el índice uno, y no en cero.
Aquí fue cuando comencé a reaprender todo nuevamente. Hice un curso aparte de programación, y adicional comencé a leer el libro de programación que me dio todas las bases que necesitaba. El libro se llama: Como aprender a programar en C, C++ por el Deitel & Deitel, con el cual empecé a programar por mi propia cuenta. Y así fueron mis verdaderos inicios en la programación. Se puede entender porque no asistí a un Game Jam hasta el 2017, simplemente no me sentía seguro con mis conocimientos como para asistir a un evento de ese tipo, aparte de que era en Caracas y se me complicaba trasladarme, entre otras cosas.
Seguí leyendo el libro y, uno de los últimos proyectos de programación que hice para la universidad, fue un juego, que el profesor nos mandó con intención de que aprendiéramos usar librerías para hacer interfaces gráficas. Y gracias a ese juego conseguí mi primer trabajo como programador. La persona que me entrevistó me decía que logré llamar su atención porque si era capaz de hacer un videojuego, seguramente era competente para trabajar con ellos, ya que es muchísimo más complicado de hacer que los programas que ellos hacían allí. Ingresé, pasé mi parte de entrenamiento y todo lo demás. Desde ese momento, no me parado con el mundo de la programación, sigo leyendo, adquiriendo conocimiento, viendo tutoriales y muchas otras cosas.
Si lo llevas a lo más básico necesitan una computadora, y adicional a eso es más fácil si tienes internet, con este puedes hacer la documentación y buscar las herramientas que son netamente para esta parte.
Ahorita, para lo que es Android como tal, las herramientas que yo uso son: Android Studio y todo lo que gira a su alrededor, con esto me refiero al JDK (librerías de JAVA), SDK (librerías de Android), y en algunos casos el NDK (librerías de bajo nivel para la comunicación con los teléfonos).
Adicional a eso, uso Git, para el tema del control de versiones entre un código y otro, ya que puede suceder que los clientes pidan cambios de una aplicación, y estos pueden afectar todo el trabajo que llevas hasta el momento. Este programa nos permite crear una copia, en caso de que los nuevos cambios en el código hagan que la app por algún motivo dejé de funcionar, puedes regresar a la copia que estaba en buen estado y ver y comparar porque ocurrió la falla.
Eso es por la parte de Android. En la parte de videojuegos, ahorita he estado trabajado con Unity, un motor de videojuegos que se encarga de enlazar varios aspectos que forman el producto final. Engranan el código, arte visual (sea 2D o 3D) y música. Esto a nivel “físico”. A parte de eso, Unity trabaja con un lenguaje de programación llamado C# (se lee así: “Sharp”). Para programar es este lenguaje, uso como editor de código Visual Studio. También empleó Git Ifs, que es un complemento de Git para el control de versiones de archivos binarios.
Otras herramientas que suelo usar son Trello, Telegram, Bitbucket, Slack, Postman y Zeplin, que las uso en conjunto con el diseñador gráfico.
Sí, fíjense que sí. En algún momento he querido dejar de programar. Y no ha sido cosa de una sola vez, me ha pasado varias veces. Me suele suceder cuando me estanco en algún problema que no logró solucionar, ni le consigo solución para resolverlo como debería.
Pero, siempre he tenido dos motivaciones para continuar. La primera, es que hay que entregar un producto final. Hay que entregar algo, si el programa está fallando hay que solucionarlo y darle respuestas al cliente. La segunda: ¡Eso es una máquina! Y no va a hacer lo que le apetezca, quien la controla soy yo. Y como mencioné antes, hay mucha satisfacción en hacer que una máquina haga lo que tú quieres que haga, exactamente como tú quieres, es... ¡Uff! Hablo de una sensación que no puedo expresar en palabras, se siente muy bien cuando logro hacer eso.
Estas son las principales motivaciones que tengo cuando me quedo estancado en algún problema.
Trabajo en una oficina, todos los días me traslado hacia allá. Mi día suele empezar leyendo el código del día anterior. En función de eso, darle continuidad a una actividad que ya tengo, o empezar una nueva. Una actividad que suelo hacer mucho es comunicar la aplicación móvil con un servidor, esto se hace vía internet. Por ejemplo, tengo una aplicación, en la que una persona ingrese sus datos, y estos enviárselos a un servidor correspondiente y qué en función de la respuesta de este, el usuario pueda acceder a la aplicación o no.
Al finalizar cada una de las actividades, yo suelo hacer una copia nueva con las herramientas de Git. Y esa la envió al servidor de respaldo. Adicional a eso, suele suceder que discutimos en la oficina como sería la mejor manera de hacer actividades de código, o cual sería la mejor forma de hacer real la aplicación que quiere el cliente. También solemos analizar si eso que desea el cliente es posible de hacer con las tecnologías que tenemos. Por ejemplo, el cliente quiere que su teléfono se conecte con un dispositivo Bluetooth LE, pues una restricción para esa funcionalidad es que, para el tipo de aplicación que se pide el teléfono debe tener Android con un API 22 (Android 5.1) o más.
También suelo discutir con la gerencia y con la Project Managers cuales son las actividades que estoy haciendo y cuales pienso hacer para el día a día, o simplemente discutir las actividades necesarias para cumplir con una meta de la aplicación. Un ejemplo de este tipo de meta es la maquetación y la navegación, donde nada más se muestra como sería la interfaz gráfica o a que pantallas te llevará a cada funcionalidad. Una meta más que suele hacerse después es, qué si esa aplicación tiene comunicación con un servidor, esa sería la siguiente fase para culminar la aplicación.
Ya por la parte del desarrollo de juegos, todo comienza con una lluvia de ideas. En esa lluvia están involucradas todas las personas del equipo, incluso aquellas que no son desarrolladoras de juegos. Nosotros decimos en esta fase inicial que todas las ideas son buenas, no importa que tan loca o tonta parezca, en esta fase decimos que todo lo que se diga es posible de hacer. Luego de eso, filtramos todas las ideas para ir concretando.
En esta parte en particular me gusta buscar referencias, ya sean de otros juegos o en el cine, la animación, música, comics, libros, hasta en una ocasión busqué referencias de juegos de mesa. Y por lo menos para mí es importante ver juegos que son considerados malos, porque así yo puedo estudiar porque fallaron y como podría darle la vuelta para ajustarlo a los juegos que se están desarrollando.
Pasado esa fase, se hacen los posibles diseños, el arte conceptual del juego, ir imaginando los mundos. Luego de esta fase, que es la más creativa y tormentosa, ya que seguimos en modo lluvia de ideas, hacemos lo que es el Game Design Document, que es donde se termina de concretar todo lo que va a ser el juego. En este documento se establecen las reglas, los personajes, la ambientación, la música, las referencias, entre otros puntos. A partir de este documento se va a partir para terminar de sacar el resto de las actividades para el juego, estos son de animación, ilustración, arte visual, de música, o en mi caso, de programación. Todo esto se lleva a un tablero de Trello para llevar el control de todo lo que se tiene hecho.
También se establecen metas, y esto no aplica solo a los juegos, sino también a las aplicaciones. Respecto a, como comenté antes, la maquetación, comunicación con el servidor, movimientos de personajes, animaciones, emplear la música correspondiente.
Y ya esto es más o menos el proceso de creación de un juego, al menos desde mi experiencia.
Una de las ventajas de trabajar con esta área es que estamos trabajando con tecnología, lo que significa trabajar con el futuro, de cierta forma lo construimos. Digamos que eso lo podemos ver reflejado en el cambio que ha habido en la tecnología en los últimos años. Hemos visto teléfonos celulares pesados, con una antena y computadores totalmente cuadradas con pantallas pixeladas, a cosas como los lentes de Google, pasando por la Realidad Aumentada, la Realidad Virtual y un montón de cosas que son impresionantes en el área de la tecnología. Y todo esto solo irá mejorando con los años.
Otra ventaja es la alta demanda de programadores que se requieren. Es muy difícil que haya un programador sin trabajo. La demanda es tan alta que no se da abasto para la cantidad de programadores en el mundo. Y con el mundo me refiero, a qué con esta profesión, es que, con internet, puedes trabajar con cualquier persona en cualquier parte del mundo. Hay mucha facilidad para expandirse.
Sí. Tengo planes. Todavía están en fase de planificación, pero puedo irles adelantando algunas cosas.
Tengo planeado dar charlas de Introducciones a la Programación con Unity, ya he dado una en la Academia Americana de Maracay en Aragua, Venezuela, en ella me acompañó Daniel Galea, con ilustraciones para videojuegos. También estoy ayudando en la organización de un taller de ilustración que va a dar Daniel, en el Museo de Insectos de la UCV-Maracay (MIZA). Esto lo estamos haciendo con la ayuda de la comunidad de H&F Maracay.
Adicional a esto, estamos en fase de planificación para ver si celebramos el primer Maracay Game Jam y que sea parte de la Global Game Jam. Esto tiene fecha para inicios del próximo año, todavía lo estamos planificando, pero esas son las fechas del Global Game Jam y esperamos que Maracay sea parte de ello.
También estoy haciendo ajustes para ver si celebro un Scratch Day, estoy preparando unas cosas. Scrach es un lenguaje de programación que fue diseñado para enseñar a programar a niños. Pero, me parece que es un buen punto de entrada para adultos que quieran empezar en el mundo de la programación y no sepan cómo hacerlo.
Y por últimos, nos encontramos en fase de planificación para un juego que vamos a hacer para el Museo de Insectos de la UCV - Maracay, el MIZA.
Para iniciarse en la programación yo siempre digo que me hubiese gustado empezar con un curso que encontré, hace no mucho, que está en la página Coursera, se llama: “A Programar”. Es un curso que inicialmente está diseñado para niños, con el lenguaje Scratch. Pero el curso está tan bien hecho, que sirve para cualquier persona que quiera comenzar en este mundo, para entender y poder comunicarse con otros programadores. A parte de eso, les diría a las personas que hay que leer el código de otras personas, la mayor parte del tiempo un programador está leyendo código, no haciéndolo. Es importante poder leer el código de alguien más, así puedes ampliar tu lógica, como ven el mismo problema otras personas y como puedes llegar a soluciones desde otros puntos de vista.
A parte de leer código, es también leer acerca de código. Una de las razones de porque programar es, de cierta forma, difícil, es porque es un mundo bastante cambiante. Realmente puede algo que te funcione, pero de un momento a otro queda obsoleto. Y hay que buscar alguna forma de hacer eso mismo que estabas haciendo con una tecnología nueva.
Otra cosa que recomendaría, es salir y hablar con otros programadores. Es más fácil aprender en grupo que solo. Compartes conocimiento, ves otras formas de atacar ciertos problemas, hay mucho feedback. Puedes tener una conversación para saber cómo resolver mejor tus problemas, o ayudar a otros programadores a solventar sus problemas, es mucho más fácil así. También recomiendo hablar con personas que no sean programadores, muchas veces la solución no está en la lógica del programador. Muchas veces me he encontrado hablando con personas de administración, para saber cómo funciona ese sistema en sí, las reglas del negocio, leyes, impuestos, terminología, entre otros, para que dé los resultados que se esperan.
Y, volviendo a eso de invitar a otros programadores, para hablar y compartir conocimientos, suelo asistir mucho a las reuniones que organizan las personas de H&F Maracay.
También es muy importante participar en eventos de programación. Son eventos que nosotros conocemos como el “Hackatón”. El cual es un evento en el cual existe una problemática y se reúnen muchos programadores para intentar buscar una solución al problema, que es real para una empresa, en un lapso de tiempo muy corto, de unas 5 a 10 horas.
Otros eventos que tienes son los Game Jam, que para estos se crea un juego, como ya mencioné anteriormente, en un período muy corto de tiempo. Y, si quieres unirte con personas que no están del todo metidas en el mundo de la programación.
También puedes meterte en los Startup Weekend, donde lo que se busca es generar ideas de negocios con un modelo sustentable, en un tiempo de 54 horas. Ahí los programadores pueden hacer la parte tecnología, tratando de implementar sus conocimientos lo mejor posible desde su punto de vista, las reglas de ese negocio o idea que tuvo esa persona que no necesariamente es programador. Pudo ser un diseñador, una persona de marketing, de administración. Es así, se reúnen comparten ideas y pueden buscar una solución. Todo esto lo hace una experiencia bastante agradable que te permite ver las cosas desde distintas perspectivas, cosa que es esencial para la programación de cualquier tipo.
En función a eso, de hacer comunidad con otras personas, ya sea que programen o no, en Telegram hay una gran cantidad de comunidades en diferentes áreas.
...Y esa es la historia de Kevin, esperamos que haya sido de gran utilidad para muchos programadores, o aspirantes a la profesión. Recordemos que hay que aprovechar los recursos a nuestra disposición, y el conocimiento por medio de la experiencia de otras personas, que han recorrido el mismo camino que hemos elegido, es uno de los mejores recursos que hay.
Créditos de Imágenes
Nicolás Requena
Escritor en formación, amante de la lectura, la tecnología y el emprendimiento. Cofundador de Mente Diamante. Adicto al aprendizaje. Un entusiasta de los viajes que ansía conocer mucho.
Este artículo puede contener enlaces de afiliados. El autor podrá ganar un porcentaje de comisión por cada venta realizada. Lea aquí para más información.
This article may contain affiliate links. The author may earn a percentage of commission for each sale made. Read this for more information.
¿Sabías que ya puedes vender en Amazon desde Latinoamérica? Aquí encontrarás una guía, paso a paso sobre cómo vender en Amazon.
Conoce los mejores Coworking ecológicos actualmente, una tendencia que cada vez toma más popularidad entre los trabajadores remotos y freelancers.
Los NFT, han dado mucho de qué hablar, por eso muchos se preguntan ¿cómo hacer un NFT? ¿Se puede? Mente Diamante tiene la respuesta
Conseguir financiamiento siendo un emprendedor empresario es una tarea ardua. Hay que conocer sobre decisiones de financiamiento y cómo atraer inversionistas. Aquí les damos algunos tips.