Herramientas que estoy usando para conseguir el SCJP

Se podría pensar que para superar el SCJP, que a fin de cuentas no es más que un examen, bastaría con disponer de papel, lápiz, neuronas y cafeína en abundancia. Sin más misterios, lo más importante es estudiar, con todo lo que conlleva: entender, comprender, aprehender, memorizar, practicar…
Pero lo cierto es que estoy usando algunas otras herramientas, bien en la forma de libros, o de programas, que me están ayudando a conseguir alguno de los anteriores objetivos.

Libros

– en primer lugar me estoy leyendo los libros oficiales de Sun, correspondientes a los cursos SL-110: Fundamentals of the Java Programming Language, y SL-275 El lenguaje de programación Java. Estos libros, que en apariencia son muy sencillos y hasta inocentes, hacen hincapié en temas muy sensibles para la certificación. Por ejemplo, se deja caer que los Strings en Java son inmutables. Esta afirmación encierra mucho dolor si no se entiende, ya que el funcionamiento de los literales String y de la clase String es fundamental, tanto para programar con Java como para superar el SCJP.
– tras estos libros voy a pasar a leerme el libro de Kathy Sierra y Bert Bates, SCJP Sun Certified Programmer for Java 5 Study Guide. De momento lo he hojeado y tiene muy buena pinta, pero nada más.

– hoy he realizado la reserva de SCJP Sun Certified Programmer for Java 5 Practice Exams, para hacer exámenes por un tubo una vez acabemos con la teoría.

Un grupo de estudio

En Isotrol hay actualmente varias personas preparándose para obtener el SCJP. Pocas cosas motivan más a la hora de estudiar que hacerlo en grupo. Al compartir experiencias, uno pone el foco en algo que a los demás les ha pasado desapercibido, otro ha descubierto una web que merece la pena, un tercero dispone de unos apuntes o ejemplos geniales… La idea es disponer de una lista de correo, una página en la Wiki de Isotrol y tener reuniones periódicas para hablar de Java.

Programas

Por supuesto. Además del JDK y el vi, algo más vendría bién.

En primer lugar, para tomar apuntes, FreeMind es ideal. Una vez se acostumbra uno de nuevo a hacer esquemas, no puedes pasar sin él. Algunos ejemplos de los mapas, exportados a swf están en: apuntes SCJP
Por otro lado, el entorno Eclipse, para mi el único entorno para programar en Java (aunque NetBeans tampoco está mal)

Aunque no exactamente un programa (a fin de cuentas es un servicio), los Blocks de Notas de Google me ayudan a no olvidar enlaces interesantes para posterior lectura. Aquí tienes un enlace a mi block de notas de SCJP, oficialmente declarado zona de desastre.

Moodle. Además de ser una plataforma de e-learning, Moodle permite generar exámenes con preguntas aleatorias. Perfecto para ir apuntando cosas y luego repasarlas de forma divertida. Pronto dispondré de un Moodle operativo en freniche.com, con preguntas del SCJP. Por supuesto, será libre de usar, como el resto de la web.

Mi iPaq HW6915

Esta es mi gran baza para aprovechar el tiempo en el tren, en la espera de los desayunos, en cualquier sitio. Su capacidad de leer el correo, documentos en formato HTML / PDF / DOC y poder navegar por Internet le hacen el compañero ideal para estudiar arañando minutos al día.

j j j

Preparando el SCJP

Pues eso, que anuncio oficialmente 🙂 que estoy metido de lleno para prepararme el examen de Sun Certified Java Programmer, v5.0.

Después de varios años manejando Java y de un montón de cursos impartidos, tanto del Lenguaje Java como de J2EE (Servlets, JSP) y productos como Struts o Hibernate, creo que es hora de sentarme a estudiar de nuevo, consolidar los conocimientos, hacerme con un par de certificados y avanzar hacia nuevas tierras, probablemente Spring.

Realmente tengo la obligación de hacerme con el SCJP y con el SCBCD. Me explico. Desde Septiembre del año pasado (2007) estuve haciendo un curso a distancia (que acabó el pasado 14 de Diciembre) y que, si lo aprobaba, me permitia disponer de los vouchers para hacer ambos exámenes. Y ahora que tengo "pagados" los exámenes, esto hay que aprovecharlo.

Como tengo que estudiar voy a aprovechar para ir recopilando lo que encuentre y me parezca interesante para certificarse. Una cosa más que empiezo y probablemente no termine, pero igual a alguien le sirve. Todo irá tomando forma en la sección de Java de la web, concretamente en el apartado SCJP.

Espero aprobar. En este examen me juego mi reputación 🙂

j j j

Una de patrones de diseño

Me ha pasado AJSA de Isotrol un par de enlaces muy interesantes sobre Patrones de Diseño a los que he añadido otro par sacados de la lista I+D. Para los que no sepan de qué va esto, un Patrón de Diseño te muestra cómo diseñar (valga la repugnancia) el código de tu programa para hacer frente a un problema al que otras personas más sabias ya se han enfrentado. Es la reutilización pura y dura de las ideas, y no del código.

Bueno, no me enrollo más, mejor vete a leer los enlaces:

j j j

¿Volvemos a programar con TurboPascal / TurboC?

Ah, Aquellos tiempos… Como buen retroaficionado a los ordenadores antiguos y tecnologías nicho siempre me alegra encontrarme en la red con algo de mis comienzos. He visto cómo con el tiempo se han liberado casi todos los juegos de mi AMSTRAD CPC, dispongo ahora de programas con los que soñaba en mi juventud, amén de más máquinas de las que puedo manejar (dedicando a cada una un pie o una mano).

Hoy me he topado con una web donde Borland tiene un museo de sus programas colgado en http://dn.codegear.com/museum/antiquesoftware. ¡Se puede uno bajar el TP 5.5 y empezar a recompilar aquellas TPUs del pasado, celosamente guardadaas en discos de 3″y1/2 que almacenan una fina capa de polvo!.

En los primeros años de los 90 programé mucho, pero que mucho, especialmente en C usando el TC 2.0. Aprendí Pascal en la carrera pero lo disfruté a causa de A.L.Delgado, que fue el que me enseñó los placeres del lenguaje estructurado, qué era la POO, porqué hay que programar de forma elegante y otros miles de cosas más.

Hoy día, la manera más sencilla de volver a desempolvar aquellos programas es mediante una máquina virtual con FreeDOS instalado. A ver si encuentro el tiempo y empiezo a colgar uno por uno mis programitas de aquella época.

j j j

Los cuatro aspectos de la gestión de proyectos, vistos gráficamente

Cuando se habla de gestionar un proyecto se tratan habitualmente tres dimensiones: el tiempo disponible para realizarlo, los recursos (materiales y humanos) con los que contamos, y los requisitos o alcance que tiene el proyecto: qué tiene que hacer. Siempre que hablo de un proyecto pienso automáticamente en uno informático, es decir, cuyo resultado será un portal web, o un programa, o un plan de formación técnico o algo así, aunque también vale pensar en la organización de una boda o de un viaje, como ahora veremos.

Para ilustrar estos tres aspectos y su relación se pinta casi inevitablemente un triángulo en la pizarra. La situación ideal es que el triángulo sea equilátero, que todos los lados estén equilibrados (nota a los malos traductores: balanced no se traduce por balanceado, sino por equilibrado). Si alguno de los tres lados crece, los otros se ajustan para mantener el tri?ngulo.

Ejemplo 1: Desarrollo de un portal web.

Si nos fijan una fecha de entrega, y los requisitos no están claros (lo que, por la primera ley Freniche del Software hace que no paren de crecer) tenemos dos posibilidades. La primera, huir del proyecto rápido, rápido y sin mirar atrás. La segunda, la más habitual (bueno, ahora que lo pienso…) es aumentar los recursos: contratar a más gente.

Ejemplo 2: La boda

Si los requisitos cambian, por ejemplo, porque no coincidan las fechas en que está disponible el cura y el lugar donde vamos a celebrar el enlace, ya que los recursos son limitados (la organización de una boda siempre recae en la novia que acaba al borde del histerismo) el plazo de entrega debe variar: se mueve la ceremonia a mejores fechas.

En todas estas situaciones se supone que no hay problemas, ni errores. Al planificar, todo va a ir bien. Pero en los proyectos informáticos (como en todos los demás, por cierto) hay que contar con el nivel de calidad que debemos entregar. Podemos pensar en que nuestro sistema no tendrá ni un solo error, lo que es en sí mismo un error. No tiene sentido resolver un problema cuyo coste supera al beneficio que aporta.

Luego hay que tener siempre presente la tasa de errores con la que queremos vivir. Si nuestro programa debe ser perfecto, los recursos para control de calidad, test y comprobaciones aumentarán. Necesitaremos más tiempo para hacerlo todo con calma. Y el alcance no puede crecer y crecer, ya que con cada requisito nuevo la probabilidad de introducir un error nuevo, o de que el sistema no funcione bien debido a las interacciones entre componentes aumenta.

¿Aburrido?

La verdad es que hablar de gestión de proyectos le resulta un ladrillo a mucha gente. Y encima es algo que no puedes ver. Bueno, no exactamente. Hoy me he topado con un pequeño applet que ilustra perfectamente (y, en parte, ha inspirado) este post. Está en www.basilv.com/psd/software-files/launchManagementDiamond.html.

Juega con él fijando el tiempo, aumentando el ámbito y tratando de disminuir los recursos: verás que no es posible. Como en la vida real. Sólo en las mentes de algunos gestores cabe tener listo «para ayer» ese portal que integra LDAP, SingleSingOn, un CMS, WorkFlow y dos huevos duros contando con un equipo formado por dos becarios y el chaval de prácticas en empresas.

j j j

¿Quién escribe estas ofertas de trabajo?

Una de mis aficiones, cuando estoy supuestamente trabajando, es entrar cada cierto tiempo en los portales de empleo y ver qué se cuece en el mercado informático. En parte, es morbo por ver la cara tan dura que tienen algunos empleadores ofreciendo 12.000 Eur./año por un puesto con 5 años de experiencia. ¡Pero encima hay quien envía su C.V.! En parte, es nostalgia de aquellos tiempos en los que tenía jefe y de lo único que me ten?a que preocupar era de hacer mi trabajo y cobrar a fin de mes. Ser tu propio jefe suena muy bonito, pero cuando algo sale mal no puedes echarle las culpas a nadie (bueno, sí, a tí mismo).

Hoy estaba mirando ofertas en Tecnoempleo y me he encontrado con dos «perlas». Vamos a por la primera:

PROGRAMADORES Y ANALISTAS JAVA/J2EE

Preferiblemente Ingeniero Tecnico o Superior en informatica de gestión o sistemas con al menos 1 años de experiencia en el desarrollo de proyectos con tecnologia JAVA

REQUISITOS MÍNIMOS:

– JAVA/J2EE (JSP, Servlets,etc)

– Patrón de diseño MVC – Struts

– JDBC

– Apache Tomcat

– Linux nivel Usuario

– UML

– HTML, Javascript

– XML

– SQL-PostgreSQL

– IDE’s Eclipse/Netbeans

Experiencia en alguno/s de los siguientes REQUISITOS DESEADOS:

Frameworks Jakarta:

– JSF

– Cocoon

– Spring

Bases de Datos:

– Oracle

– DB2

Entornos Desarrollo:

– JDeveloper

– WebSphere Studio

Herramientas OpenSource:

– Persistencia Objetos Java : Hibernate, JDO, iBAtis, etc.

– OPENCMS, ZOPE, Alfresco u otros gestores de contenidos

– Motores de Workflow (como Bonita,etc.)

Experiencia con alguno de los siguientes servidores de aplicaciones :

– JBoss

– SunOne Application Server

– IBM Websphere

– BEA Weblogic

– Oracle IAS

Herramientas CASE, análisis y diseño software:

– PowerDesigner(SyBase)

– Rational Rose

Otros:

– Administración electrónica, y/o Plataformas de la Junta de Andalucia (como @Firma, Trew @, Wand @, etc.)

– PHP

– Flex

– Ajax

¿Ya? ¿Hemos terminado? ¡Buff, menos mal!. Sólo falta pedir experiencia programando el kernel de Linux y la obligación de realizar como prueba de ingreso en la empresa un compilador de COBOL escrito en Prolog.

Vamos por partes. La frase «al menos 1 años de experiencia» me sugiere que la persona de RR.HH. no quiere pagar la experiencia necesaria para ser experto en todo lo que piden, pero probablemente algún técnico comentó la barbaridad de pedir un «experto» en todo esto con sólo un año de experiencia. Por eso escribieron inicialmente «al menos 3 años de experiencia» pero al coger la calculadora RR.HH. (aka Tío Gilito) cambió el 3 por 1. Se le olvidó la concordancia en número de la frase, pero eso es un fallo menor.

Es posible que una persona con un año de experiencia conozca los requisitos mínimos, aunque sin demasiada profundidad. No comprendo la necesidad de dominar los dos IDEs (Eclipse y NetBeans). Con conocer uno de los dos, basta. Y en 1 año no aprendes en profundidad a manejar ambos, eso seguro. Al menos, si tienes que ver el resto de requisitos DESEADOS.

Porque es aquí donde comienza la paranoia. No bastaban dos IDEs, para pedir los otros dos dominantes en el mercado. Ya no quedan más IDEs Java por añadir a la oferta. Y encima, el WebSphere Studio es la versión comercial de Eclipse, que la propia IBM liberó como proyecto de Software Libre. El desconocimiento al poder.

La parte que empieza con los «Frameworks Jakarta» es espectacular: JSF NO es de Jakarta. Existe una implementación de JSF de Jakarta, llamada MyFaces, lo que es algo distinto. ¿Spring tiene algo que ver con Jakarta?. Aquí me he perdido. Tenía entendido que era un producto Open Source creado por Interface21, pero seguro que me he equivocado.

Cuando llegamos a la parte de Servidores de Aplicaciones, la persona que ha redactado esto continua con su carta a los Reyes Magos. Si la criatura no tuvo bastante con aprender Tomcat en 1 año, ¿por qué no pedir también un contenedor Java EE?. Total, pedir es gratis. Así que basta con saber uno de los listados, además de Tomcat.

Como ya estamos desbocados a estas alturas de la oferta, pidamos BDs. ¿Nos conformamos con MySQL para ir tirando? No, hombre, no, pidamos Oracle y DB2. Total, todo el mundo instala en su casa para trastear DB2 ¿no? Continuamos con los datos. No basta con saber JDBC, queridos. Aprended un framework que os alivie de hacer el mapeado Objeto-Relacional. Bueno, qué digo, ¿para qué uno, pudiendo pedirlos todos? Así que pedimos Hibernate, JDO e iBatis DAO. Sólo falta OJB, de Jakarta, aunque supongo que ese es el «etc.»

Y para qué seguir. Ajax, OpenCMS, Zope (aunque no entiendo qué demonios hace un gestor de contenidos escrito en Phyton en esta oferta), y la lista sigue y sigue…

¿Quién redacta estas listas de acrónimos? ¿Quién es tan osado de pedir tal lista de tecnologías con sólo 1 año de experiencia? Entiendo que los recién titulados se sientan mal, se sientan estresados, porque el nuestro es un mundo cambiante y cada vez más amplio. Pero genios reclutadores como los que escriben estas ofertas no ayudan. Una persona trabajadora, brillante, apasionada de la Informática y la Programación puede deprimirse leyendo lo que piden para un novato.

¿Y quién se apunta a estas ofertas? Sólo son leerla ya se vislumbra quién manda en la empresa demandante: gente que no tiene ni la más remota idea de la parte técnica del trabajo, que, por cierto, y a ver si nos enteramos aquí en España, es la más importante. Ya está bien de tanto comercial sin formación ni ganas de aprender, de tanto jefecillo intermedio con títulos que no caben en una cara de la tarjeta de visita, de gestores que intentan triunfar en el mundo de la consultoría sin conocer qué hacen los empleados que subcontratan frente al ordenador.

Todo informático que esté buscando un empleo debería leerse este artículo de Joel Spolsky. A ver si así espabilamos un poco a los que escriben estas idioteces con forma de listas de acrónimos.

j j j