developerWorks: Fue en la cuna de la humanidad cuando nacieron las competencias entre personas y, aunque los enfrentamientos se hacían en disciplinas físicas, la rivalidad también fue llevada al ámbito intelectual, de tal suerte que hoy existen concursos de desarrollo. Soy Jorge A. Salgado, editor en jefe de developerWorks en español y anfitrión del developercast. En este capítulo tuve oportunidad de platicar con Alberto Lamadrid, director regional del concurso de programación internacional ACM, quien me explicó los pormenores del certamen patrocinado por IBM en el que se ponen a prueba las habilidades técnicas de los estudiantes de tecnologías de la información. developerWorks: ¿Qué es el concurso ACM? Alberto Lamadrid: Es una oportunidad para enfocar la atención a los alumnos y que puedan demostrar sus habilidades de resolucíon de problemas, de trabajo en equipo, de trabajo en situaciones bajo presión y también ser efectivos en la solución de sus problemas. developerWorks: ¿Cuándo y dónde surgió este concurso? Alberto Lamadrid: Este año va a ser la edición 36 a nivel mundial y nace en Texas, en Estados Unidos. Empezó primero como un concurso local en una universidad luego creció a Estados Unidos. Un par de años después una universidad australiana se enteró del concurso y dijo que quería competir, entonces el concurso se volvió internacional. Hace 16 años, a través de la inquietud de uno de mis alumnos en el Tec de Monterrey campus Querétaro, él y un servidor aplicamos para crear la región de Centroamérica, la cual tiene 16 años y la he estado dirigiendo desde entonces. developerWorks: ¿En qué consiste este concurso? Alberto Lamadrid: El concurso tiene los siguientes elementos: se requiere de un equipo de tres alumnos universitarios, de una computadora, de un ambiente de desarrollo donde normalmente manejamos C, C++, Java y a los alumnos se les da en un ambiente de competencia y un ambiente aislado donde cada equipo trabaja de forma independiente, indivisual, sin ayuda externa durante cinco horas. Se les da un conjunto de problemas, la descripción de un problema, un conjunto de entrada y sus correspondientes salidas y se arranca el concurso que dura cinco horas. Durante estas cinco horas los muchachos deben tratar de resolver la mayor cantidad de problemas en el menor cantidad de intentos y el ganador es el que resuelve la mayor cantidad de problemas en esas cinco horas con menos penalizaciones. Una penalización es cuando se ofrece un intento de solución que resulta fallido y entonces se le penaliza con 20 puntos o el quivalente a 20 minutos. developerWorks: ¿Los alumnos tienen que pertenecer a cierto semestre o puede ser una mezcla? Alberto Lamadrid: Idealmente deberíamos tener alumnos de todos los semestres; sin embargo, lo que tradicionalmente ha estado pasado es que los alumnos de los últimos semestres son los que participan y son los que tienen también mejor desempeño, pero este no es necesariamente el caso; cuando empezamos en el tec de Monterrey campus Querétaro hace como 20 años haciendo estos concursos primero de forma interna o local, hubo un semestre en el que los alumnos de Java de primer semestre barrieron con todos los alumnos de todos los semestres. developerWorks: Me comentabas que programan en C, C++ y Java, pero ¿es una mezcla de los tres o se divide por categorías? Alberto Lamadrid: No, en realidad es un solo evento: todos compiten contra todos utilizando la herramienta que mejor les convenga. Todos tienen disponible las tres herramientas y puede ser que algún equipo escoja programar nada más en Java o escoja programar nada más en C++ o puede hacer una mezcla y decir este problema las librerías que tiene Java me ayudan y resolverlo en Java y después resolver uno en C y resolver los otros tres en C++. developerWorks: ¿Por qué se eligieron C, C++ y Java? Alberto Lamadrid: Bueno, esto ha ido evolucionando cuando el concurso empezó hace 36 años empezaron programando en ensamblador luego se usó forecamp, luego se usó C y Pascal. Hace como seis años se retiró Pascal y los lenguajes de mayor uso mundial son los que estamos usando, que son C, C++ y Java. developerWorks: ¿Y tendrías un ejemplo del tipo de problemas que les ponen? Alberto Lamadrid: Bueno, de hecho hay actualmente en el mundo varios lugares donde se pueden encontrar no uno sino una gran cantidad de ejemplos. El primer lugar que se usó para esto es un sitio en España en la universidad de Valladolid. La dirección URL es acm.uva.es Ahí uno se puede registrar y tiene acceso a más de o alrededor 3,000 problemas tipo, de hecho no son problemas tipo, son problemas que se han usado en el pasado en regionales como la de México o en las finales mundiales del concurso. developerWorks: ¿Cuáles son las etapas del concurso? Alberto Lamadrid: Normalmente se manejan tres etapas que es concurso locales, o a nivel ciudad, luego concurso regional, que en este caso sería la región de México y Centroamérica. El mundo según el concurso de ACM está dividido como en 36 regiones, en América Latina, por ejemplo hay tres regiones y México y Centroamérica es una sola región. Este año se acaba de crear la región del Caribe donde van a estar participando muchas de las islas del Caribe y la sede de esa región está en La Habana, Cuba. Los que avanzan de estas 36 regiones al rededor del mundo avanzan a la final mundial. En los últimos años la final mundial ha reunido a 100 ó 205 equipos que compitieron en los concursos regionales y son equipos que vienen de más de 80 países de los 6 continentes y normalmente más de 2,000 equipos participan. developerWorks: ¿La dinámica es similar tanto en la etapa local como en la regional y en la mundial? Sí, se busca el entorno de la competencia que en todos los casos sea lo más parecido posible a la final mundial con el objetivo de los que van participando les sirva de entrenamiento la experiencia de haber participado en un local o un regional para una vez que lleguen a la final mundial puedan desarrollarse sin complicaciones por el ambiente. developerWorks: ¿Recuerdas que haya habido algún ganador de América Latina? Alberto Lamadrid: En los últimos, Brasil empezó o la región del sur con sede en Brasil, inició un año después que lo que iniciamos México, entonces nosotros estaríamos diciendo, éste va a ser nuestro dieciseisavo año, en Brasil, en América del Sur es el quinceavo. El mejor lugar que ha tenido América Latina es de un equipo argentino, si no estoy equivocado hace como unos seis o cinco años y quedó en doceavo lugar a nivel mundial. developerWorks: Imagino que muchos de los chavos participan por los premios ¿cuáles son estos? Alberto Lamadrid: Los mejores premios están en la final mundial. El premio de la regional, el principal pase de la regional es el pase a la final mundial que dependiendo del número de escuelas, de universidades y el número de equipos que concursan en cada región, cada región avanza de forma garantizada un lugar, pero dependiendo del número de universidades y quipos pueden ser dos o tres lugares con los que pueda avanzar a la final mundial y el premio no es nada más el pase, sino que el patrocinador mundial es IBM desde hace 10 ó 12 años y se pulen, son muy buenos como anfitriones. Cada equipo que gana tiene su pase a la final mundial es atendido excelentemente en el lugar de la sede y esto quiere decir que todo su alojamiento, que todos sus alimentos, todas las actividades recreativas, el mismo concurso, todo es cubierto por IBM. Lo único que el equipo tiene que hacer es llegar al lugar. developerWorks: ¿Cuál es el objetivo principal de realizar este tipo de eventos? Alberto Lamadrid: A nivel de México la idea es incrementar el número de personas involucradas en el desarrollo de software y mejorar la calidad de desarrollo de software de estas personas. La competencia es un elemento primordial para motivar a los alumnos para irse mejorando y superándose. Entonces, la idea es que cada vez los ingenieros de software o la gente de las carreras relacionadas con Tecnologías de la Información o con programación tengan un mejor nivel de habilidades de desarrollo de software y con esto puedan que hacer que México y, bueno, primero ellos, luego su entorno y luego México podamos mejorar. developerWorks: ¿En qué fechas se van a realizar? De hecho, estamos, este año para propiciar mayor participación de alumnos, se hizo de forma coordinada un esfuerzo de concursos de preparación, este es el primer año que se hace esta etapa y este tipo de esfuerzo, de la cual es el evento que se realizará el 15 de octubre en el ITAM; sin embargo, ya este sábado pasado, el sábado 8 de octubre hubo 16 universidades en 14 ciudades en 6 estados donde ya participaron 170 equipos como una fase de entrenamiento y el día 13 va a haber uno en Campeche y de forma simultánea en Zamora y tenemos el del día 15 en la ciudad de México en el ITAM. De todos estos que participaron en los concursos de preparación, los que hayan tenido mejor desempeño van a avanzar al regional, el regional es el 4 y 5 de noviembre. Para este regional hay cuatro sedes establecidas este año: una en el Tec de Monterrey, Campus Monterrey; una en Guadalajara, en el ITESO; una en Querétaro en el Tec de Monterrey, Campus Querétaro y la última en el Instituto Tecnológico Superior de Zamora en el área de Michoacán. developerWorks: Mencionabas que Argentina es uno de los países que mejor han quedado, llegando al décimo segundo puesto. Como académico ¿a qué crees que se atribuya esto? Alberto Lamadrid: Aquí yo creo que tiene que ver un poco con la cultura de México. A lo mejor la pregunta es ¿por qué México todavía no llega a esos lugares? Y yo creo que tiene que ver con la cultura. Yo creo que tenemos un país maravilloso con muchas opciones y muchas actividades disponibles y la cultura del mexicano también es mucho de diversión y de dejar las cosas hasta el final. Los equipos que han ganado las regionales en México han resuelto seis o siete problemas; sin embargo, cuando llegan a la final mundial pues tenemos un nivel de competencia diferente, es más difícil y también hay un elemento que yo considero que es muy importante que es la presión. Yo creo que los muchachos que llegan a la final mundial, los muchachos mexicanos que llegan a la final mundial no están preparados para el evento. No están preparados para el evento emocionalmente, la presión, yo creo que es mucha. Si me permites hacer un simil el concurso de ACM, el concurso internacional, es equivalente a las Olimpiadas. Es de ese nivel y los muchachos que ganan la final mundial ya sean rusos, o chinos, o canadienses, son muchachos que dedican mucho tiempo a prepararse para el evento: es como si fueran las Olimpiadas y los muchachos mexicanos que ganan, son muy buenos, son muy brillantes y son alumnos, también normalmente de últimos semestres y a la hora que llegan allá todos emocionados, la presión a la que se enfrentan por no haber tenido a lo mejor una preparación en cuanto al impacto que tiene esto, los abruma y no los permite desarrollarse como debiera. Desde hace tres años tengo yo una hipótesis y estoy trabajando en eso, necesitamos que los alumnos -hace rato me preguntabas cuáles alumnos o que semestres pueden participarnecesitamos que los alumnos empiecen a participar desde el primer semestre para que cuando lleguen a cuarto o quinto semestre ya sean lo suficientemente maduros y tenga las suficientes habilidades para convertirse en campeones regionales y que vayan a la final mundial y que se enfrenten con el shock de la final mundial y que regresen y que tengan la oportunidad de volver a ir por una segunda ocasión a la final mundial cuando estén en octavo o noveno semestre. Entonces cuando logremos que en México llevemos dos o tres o cuatro equipos y que la mitad de esos equipos sean alumnos de cuarto o quinto que van por primera vez y los otros equipos sean de octavo y noveno que van por segunda vez, entonces creo que vamos a empezar a ver resultados en México developerWorks: Partiendo de este punto y siguiendo con tu símil de que este concurso es como las olimpiadas, hemos visto como todos los atletas se preparan por años ¿tú has visto en alguna universidad que haya un grupo de preparación específico para este certamen? Alberto Lamadrid: Sí, los ha habido a lo largo de los años; sin embargo, han sido esfuerzos aislados y también, como decía mi jefe aquí en la Facultad de Informática, de cierta forma elitista y yo creo que lo que tenemos que hacer es buscar que aunque las Olimpiadas sí es también elitista porque son gente que básicamente vive para eso, lo que tenemos que buscar o uno de los objetivos que yo tengo es que lleguemos a mucha más base de alumnos para que de una mayor base de alumnos, todos suban su nivel y entonces tengamos a los más buenos en un nivel superior. Por ejemplo, hubo un par de años que la universidad mixteca se puso las pilas y en esos tres años ganaron las regionales y fueron a la final mundial. Hubo un par de años que el Tec de Monterrey campus Monterrey se puso las pilas y también llegó, no sé por qué fueron nada más por periodos de cuatro tres, cuatro años y después baja. Yo creo que debemos tener un o buscar tener un programa que sea más bien tratar de llegar a todos los alumnos y digamos que haya mayores candidatos y que todos suban de nivel, pero los mejores van a estar más arriba. developerWorks: ¿Crees que haya un favorito para este año? Alberto Lamadrid: En los últimos años ha estado alternando, por ejemplo: el Cimat ha sido un candidato fuerte, la Universidad de Guanajuto, Cimat. Los dos años pasados, Cuba fue parte de mi región, este año es ya es una región por sí sola, pero estuvo dos años participando Cuba con nosotros. Hace dos años uno de los tres lugares de la final mundial fue un equipo cubano y el año pasado fueron dos equipos cubanos los fueron de nuestra región entonces el año pasado nada más fue un equipo mexicano porque estabamos participando con los cubanos. developerWorks: Por último ¿qué mensaje tendrías para los desarrolladores que escuchan nuestro podcast? Alberto Lamadrid: Hubo una iniciativa a nivel federal junto con la universidad Carnegie Mellon y el Software Institute de hacer certificaciones en PCT y TCP, yo creo que una de las cosas para mejorar en la calidad es medir lo que hacemos y tanto el PCT como el TCP son herramientas que nos ayudan hacer esto. La otra es que necesitamos ponernos a hacer las cosas, hacerlas bien y ser consistentes. developerWorks: Muchas gracias por tu tiempo Alberto. Muchas gracias, hasta luego. developerWorks: El talento y la enseñanza de calidad están presentes, sólo es necesario ser dedicado. Así sea para un concurso o para un trabajo profesional, developerWorks tiene a tu disposición artículos, tutoriales, ejercicios y cursos de autoestudio que te ayudarán a incrementar tus habilidades técnicas. Para escuchar éste y otros podcasts o para leer artículos y tutoriales de tecnologías de IBM o abiertas, visita www.ibm.com/developerworks/ssa. Si tienes algún comentario o te gustaría saber más al respecto, contáctanos en nuestra cuenta de Twitter dwespanol o envía un correo electrónico.