[Las cosas que no interesan]
miércoles abr 26, 2006
Sun Certified Java Programmer
Hace unas semanas obtuve mi certificación como programador Java para la versión 1.4. Lo hice para la versión 1.4 por que fue un examen pagado por la empresa para la que trabajo y es en esta donde están la gran mayoría de nuestros desarrollos.
SUN recomienda tener al menos un año y medio de experiencia desarrollando aplicaciones en java antes de presentar el examen, y en muchos de los sitios que visité recomendaban entre tres y cuatro meses de preparación (estudio y exámenes simulados). En el momento de presentarlo tenía algo más de un año y medio de experiencia a tiempo completo con Java. Estuve trabajando con J2EE desde septiembre de 2003 hasta mayo de 2005 y desde entonces estoy programando en COBOL, aunque no dejo de hacer muchas cosas en Java, especialmente durante mi tiempo libre.
El examen lo presentamos dos compañeros de trabajo el mismo día; aunque estudiamos desde mediados de septiembre de hasta febrero, realmente hubo tres meses largos de estudio, pues diciembre estuvo en toda la mitad y no se si pasa en toda parte, pero acá en Colombia diciembre no es un mes en el que den ganas de trabajar o estudiar hasta tarde, además las primeras semanas fueron muy irregulares.
Bueno, esto no se trata de la historia del examen, sino de las impresiones que me quedan después de mucho estudio efectivo, mucho estudio en vano y la satisfacción de la meta alcanzada, aunque esto no resultara lo más importante. Lo anterior lo cuento solo para poner un contexto y un punto de partida que quizá puedan explicar el por que de mis conclusiones.
Al presentar este tipo de exámenes donde todo el tiempo te recuerdan que hay 61 preguntas y se deben responder mínimo 32 correctamente para pasarlo, los resultados numéricos se vuelven importantísimos, claro, el objetivo principal suele ser ganar y obtener algún papel que confirme dicha certificación, ya sea para mejorar los ingresos económicos, orgullo propio o cualquier otra cosa. Mis resultados numéricos fueron bien satisfactorios: 57 respuestas correctas de 61 posibles, tengo algo bueno que mostrar en mi hoja de vida y en ese sentido el esfuerzo se vio justificado.
Pero hubo algo más, algo que no esperaba obtener, surgieron preguntas que nunca me había planteado y obtuve muchas de las respuestas, las demás las sigo buscando.
La primera pregunta que me quería responder era si después de más de dos años programando en Java, ¿no estaba listo para presentar un examen de certificación?.
La respuesta fue clara: NO. No por que dos años fueran poco tiempo programando, sino por mi comodidad y pereza mental; no conocía muchas cosas, no fue que no las necesitara, no las usaba precisamente por eso: por que no las conocía. El problema con mi pereza mental era usar sólo la parte básica de las cosas, pero había todo un mundo nuevo en los tipos de datos, operadores, el manejo de las interfaces, las clases abstractas, etc. No había que conocer muchas APIs, la intención de este examen es verificar que se tenga claridad en los fundamentos del lenguaje, pero claridad no solo es decir que el dato más pequeño que devuelven las operaciones básicas entre variables numéricas es un int, claridad es conocer que pasará en situaciones extremas o poco comunes en programación. ¿Puedo forzar el resultado usando casting?, ¿Qué tal si no se hace con variables sino directamente con números?, ¿ Y si se hace usando +=, -=, *=, etc?.
En fin, al ver que se preguntaba sobre un montón de situaciones muy escasas en el código, me pregunté si valdría la pena hacer ese examen, ¿para qué demonios me va a servir saber si la máquina virtual va a tomar la cadena del pool de String o si va a crear una nueva? ¿ya no me enseñaron que se debe comparar usando el método equals()? ¿es necesario saber como se comportan un infierno recursivo de clases internas llamando a las más externas? ¿En verdad tengo que saber que goto y const son palabras reservadas? ¿Para eso no avisa el compilador?.
Creo que el objetivo de las preguntas hechas en el examen no es tanto conocer el caso específico sino de conocer como "piensa" el lenguaje, qué tenían en mente quienes lo diseñaron y construyeron. Por eso las respuestas no se logran al azar, todas son parecidas en todas las preguntas, se necesita un conocimiento profundo en cada tema, se tiene que haber ido más allá del código; hay que estar en la capacidad de predecir los resultados de cierta operación aún sin conocerla muy bien. Al principio se cometen muchos errores, pero en mi caso después de la mitad del segundo mes, mientras volvía a leer el libro guía (Sun Certified Programmer & Developer for Java 2 Study Guide, OSBORNE/McGraw-Hill) las cosas me parecían más claras, únicamente hubo que refinar todo lo aprendido haciendo muchas simulaciones y reuniones para debatir los puntos en los que se dudaba y para aclarar los conceptos que se obtenían después de cada sesión de estudio.
¿Qué me quedó al final? ¿Valió la pena presentar ese examen?. Si vale la pena o no presentar el examen creo que depende más del mercado laboral y la valoración que se le de a la certificación. En mi caso, era un regalo de mi empresa, entonces no había mucho que pensar.
Lo que en verdad vale la pena hacer, es estudiar los temas propuestos por el examen de certificación, practicar con el tipo de preguntas y hacer muchas simulaciones. ¿Por qué?, por que cuando trabajamos en un proyecto durante mucho tiempo nos acostumbramos a hacer las cosas del mismo modo y se llega a un punto donde se conoce casi todo lo necesario para resolver los problemas a los que nos enfrentamos, entonces se dejan de aprender cosas nuevas y el universo se nos reduce a un pequeño conjunto de clases y herramientas. A partir de aquí, solo de vez en cuando necesitamos alguna utilidad, hay que mejorar el rendimiento de algún módulo o tenemos un problema grave que nos obliga a leer un manual, esto si no se cuenta con un arquitecto o alguien que ya tiene la solución y para nuestra desgracia no nos dejará "revolcarnos en la miseria" hasta encontrar una solución.
Las aplicaciones empresariales hacen que uno se preocupe demasiado por el negocio que se está programando, esto es normal y es lo que se debe hacer, pero para muchos de los que somos programadores el lenguaje de programación en sí tiene un montón de diversión escondida y esta es la puerta que nos abren las preguntas planteadas en el examen; ahí lo importante es que pasa cuando se modifica un parámetro, como se comportará un ciclo cuando se desbordan los límites del contador, como funciona un hilo, cuantos hilos se pueden lanzar, que pasa con la sobreescritura, la sobrecarga, cuantas clases van en un archivo, etc, etc y muchos más divertidos etc.
De todo lo que me haya dejado este examen, lo que más valoro es haber aprendido a mirar un lenguaje de programación desde otro punto de vista, en este mundo apresurado del desarrollo de software empresarial apartar el lenguaje del tipo de problemas que puede resolver y ver los problemas que él mismo tiene es como un momento para reflexionar; fue un alto en el camino para redescubrir Java, no mirarlo más como el lenguaje de moda sino como un lenguaje de programación, simplemente eso.
Posted at 06:02PM abr 26, 2006 by Carlos Alexander Zuluaga in General | Comentarios[2]


Interesante reflexión sobre el hacer o no un examen de certificación.
Gracias por compartir tu experiencia.
Enviado por olope en abril 27, 2006 a las 06:58 AM COT #
Que interesantes tus reflexiones y felicidades por tan alta puntuación! yo espero este año por fin hacer el examen.. que mira q en las entrevistas de trabajo se ha vuelto importante
Enviado por Erick Camacho en abril 27, 2006 a las 06:14 PM COT #