Certificarse en Java SE 8

OCP-JavaSE8-Programmer-clr

El pasado 1 de abril me certifiqué en Java SE 8. Desde entonces, han sido varias las personas que me han preguntado como preparé el examen. Hoy escribo esta entrada con la idea de compartir mi experiencia e intentar dar respuesta a esa pregunta.

No es la primera vez que me preparo para una de estas certificaciones, concretamente, es la cuarta vez. Por tanto, he pasado varias veces por el proceso y puedo afirmar, sin lugar a dudas, que esta última ha sido la más dura y a la vez la más enriquecedora de todas a las que me he presentado.

La motivación: ¿Vale la pena certificarse?

Yo creo que sí. No obstante, hay que ser realista y asumir que no es garantía de nada. Al final, lo más importante es la práctica y la propia experiencia. Esto ayuda pero dudo mucho que sea determinante. En mi caso, utilizo estos exámenes para aprender en profundidad las nuevas características que aparecen en las distintas versiones de Java. Es la excusa perfecta para poder ver todas las novedades y mantenerme al día. Por un lado aprendes y por el otro consigues un cierto «reconocimiento» que siempre ayuda en el mundo laboral.

Java SE 8 ha supuesto un avance importante en el lenguaje. La introducción de Lambdas y Streams  supone un antes y un después; la programación funcional es ahora parte de Java. Todas estas novedades se traducen en una nueva sintaxis a la que hay que ir acostumbrando la vista: estos cambios han venido para quedarse. La única forma de ir cogiendo soltura es empezar a ver ejemplos e intentar aplicarlos durante el día a día. Si bien hay novedades que debemos conocer pero que difícilmente aplicaremos, véase los métodos ‘default’, hay otras, como el uso de los Streams, que harán que ya no filtremos nunca más una colección de la misma forma.

El contexto

Como esto de las certificaciones es algo que lleva vivo bastantes años, en función de tu situación actual existen varios caminos a los que puedes optar :

  • Si empiezas desde cero, ergo no tienes ninguna certificación previa, deberás superar dos exámenes distintos para obtenerla. El primero es el 1Z0-808 (Java SE 8 Programmer I) y el segundo es el 1Z0-809 (Java SE 8 Programmer II).
  • Si ya tenías una certificación de la versión Java SE 7, tu objetivo es el 1Z0-810 (Upgrade Java SE 7 to Java SE 8 OCP Programmer)
  • Finalmente, si posees una certificación de la versión Java SE 6 o anterior, tu nuevo amigo es el 1Z0-813 (Upgrade to Java SE 8 OCP from Java SE 6 and all prior versions)

De las tres opciones, yo he ido por el tercer camino puesto que hace unos años obtuve mi primera certificación mediante la versión Java SE 6. La cantidad de temario es la principal diferencia entre las tres opciones.

Si empiezas de cero, estás obligado a pasar dos exámenes. En cierta manera es normal, después de 8 versiones, el lenguaje ha crecido muchísimo y el temario es muy extenso. El primer examen es una toma de contacto con los conceptos básicos del lenguaje y el segundo entra mucho más en detalle.

En los otros dos caminos sólo te examinas de las novedades respecto a la versión que posees. En su momento decidí no presentarme al examen para Java SE 7 puesto que las novedades del mismo no eran tan abundantes ni transcendentales y la siguiente versión no tardaría mucho en aparecer. A veces hay que plantearse también la proximidad de la siguiente actualización. Ahora mismo, Java SE 9 no tiene previsto su lanzamiento hasta el 23 de Marzo de 2017, por lo que hay margen para estar al día. También hay que pensar que muy posiblemente no aparezca un examen de java SE 9 hasta bien bien 2018.

La preparación

Hay una serie de elementos clave que me han permitido superar este desafío de forma satisfactoria:

  1. La guía de estudio.
  2. La práctica mediante los bancos de pruebas.
  3. La documentación oficial.
  4. La comunidad.

A continuación vamos a ir desgranando cada uno de estos elementos.

La guía de estudio

Sin duda el elemento más importante, piedra angular de todo el proceso. Para la preparación de estos exámenes siempre suele haber uno o dos libros de referencia. Si no lo hay significa que estas preparando algo muy nuevo o muy poco conocido. Piensa además que la elaboración de estos libros es una tarea titánica y requiere bastante tiempo, los autores comienzan estos proyectos en cuanto el examen entra en fase beta para intentar tenerlo listo cuanto antes y con la mejor calidad posible.

¿Qué libro he utilizado? Pues el OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809 de Jeanne Boyarsky Scott Selikoff. Este libro cubre todos los objetivos necesarios para 1Z0-809,  1Z0-810 y 1Z0-813. ¿Qué ocurre si tienes que examinarte del 1Z0-808? Pues que tendrás que leerte también la primera parte de los mismos autores, el OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808.

¿Son estos libros perfectos? Ya te avanzo que no. La realidad es que contienen muchas erratas por lo que antes de empezar a leer cada uno de sus capítulos te vas a tener que pasar por la web del autor para revisar la tabla de erratas de cada libro. Obviando este pequeño detalle, los libros son muy útiles. Te indicarán qué debes estudiar, tratarán de explicártelo de forma sencilla y te proporcionarán material en forma de preguntas para ir cogiendo práctica.

La práctica mediante los bancos de pruebas.

Otro punto clave. Puedes leer infinidad de recursos distintos pero sólo mediante la práctica conseguirás interiorizar los conceptos. Estos exámenes están hechos a mala leche. La realidad es que debes entrenar tu habilidad como compilador. Debes ser capaz de ver un trozo de código e identificar rápidamente si compilará o no. Para esto solo hay una forma de prepararse y es mediante preguntas similares.

El mejor material que he encontrado para este fin es el que ofrece la web de Enthuware, sí, verás que es de pago pero merece la pena hasta el último céntimo invertido. No solo ofrece material en forma de preguntas sino que han desarrollado todo un conjunto de software para poder utilizarlo desde prácticamente cualquier sitio (Offline desde escritorio y Online desde web, móvil incluido). Cada pregunta viene acompañada de su explicación, es el perfecto complemento al libro. Te puedes examinar por objetivos, simulando el examen real, etc. Ofrece multitud de posibilidades que vienen de fábula para la preparación.

La documentación oficial.

La visita obligada en este viaje. Ante cualquier duda acabarás acudiendo a la fuente original, el Javadoc del JDK8. Mi recomendación es que la vayas añadiendo ya a tu barra de marcadores o favoritos y te prepares a leer multitud de veces la sección de los Streams, Collectors o Files, entre otros. No nos engañemos, debes conocerte bastante bien las secciones relacionadas con los objetivos del examen. Por lo menos que te suenen un poco la mayoría de métodos. Es imposible tener material para todos los métodos que existen, deberás explorar las distintas posibilidades por tu cuenta.

La comunidad.

Este proceso se lleva mejor en grupo que solo, si de alguna forma puedes formar algún grupo de estudio, aunque sea únicamente con otra persona, la preparación será MUCHO más llevadera. En el peor de los casos siempre puedes acudir a las comunidades online. Para este cometido existe una que es la mejor referencia en este mundillo, CodeRanch.

En CodeRanch encontrarás a gente de todo el mundo compartiendo recursos y dudas sobre la mayoría de certificaciones sobre Java,. Tiene subforos específicos para cada certificación y los mismos autores de los libros participan de forma activa resolviendo dudas y recibiendo feedback. Si tienes una duda, lánzala allí sin miedo, alguien acudirá al rescate. Yo mismo compartí mi experiencia en el subforo de resultados y he añadido mi nombre al OCJP Wall Of Fame.

Mi propia experiencia

En lo que respecta a mí, compré el libro a mediados de febrero y empecé a leerlo durante los viajes de tren que suelo hacer entre semana, aproximadamente una hora y media diaria. Me lo tomé con calma y me saltaba aquello que más o menos ya conocía, no me hacía falta revisar el libro entero pero aun así lo hice, nunca viene mal refrescar conceptos.

Una vez leído el libro empecé con el siguiente método:

  1. Hacer entre 10 y 20 preguntas de un objetivo concreto.
  2. Entender las explicaciones de cada una de las respuestas, las hubiera acertado o no. Si hacía falta volvía a revisar el libro o acudía al javadoc del JDK8.
  3. Practicar un poco con el IDE para interiorizar conceptos y ver otras posibilidades.
  4. Seleccionar otro objetivo y empezar de nuevo el ciclo.

De esta manera pasé un par de veces por las más de 300 preguntas que había en el material de Enthuware, a parte de las propias del libro. Os podéis imaginar que le dediqué unas cuantas horas.

Con todo lo dicho, me gustaría remarcar un detalle, estudiar a ratos está bien pero llega un momento que debes marcarte una fecha objetivo para generar también un poco de auto presión. Así lo hice, a principios de marzo compré el examen y ya marqué la fecha límite, el 1 de abril. En el momento que tienes fecha, la cosa cambia, hay que tomárselo en serio.

Finalmente llegó el día, acudí al centro y gasté hasta el último minuto de las dos horas y diez minutos que tienes disponibles para terminar las 60 preguntas. No fue fácil la verdad, pero cuando vi el resultado me supo a gloria, un 91%. ¡Objetivo superado!

Poco más que añadir, si os decidís a pasar por el proceso, ánimos y mucha suerte. Podéis dejar un comentario y preguntar cualquier cosa, intentaré ayudaros en la medida que me sea posible.