La maldición de las herramientas

web services internet Es bastante habitual que la gente que empieza a aprender java (o cualquier otro lenguaje de programación) coja el IDE correspondiente (eclipse, netbeans o el que sea)  y se ponga a aprender. Esos novatos van programando y con el tiempo van cogiendo ciertos conocimientos y experiencia en java. Pero desgraciadamente, el IDE les hace no aprender ciertas cosas básicas. No es raro encontrarse gente que lleva programando algún tiempo pero que sería incapaz de compilar o ejecutar un programa java desde línea de comandos, usando los comandos java, el compilador javac, o generar su jar con el comando jar.

Y esto no solo pasa con las cosas básicas ni sólo con los novatos. Cuanto más complejo sea el tema y más nos resuelva un IDE o una herramienta/framework cualquiera, menos cosas aprendemos de ese tema y más dependemos del IDE/herramienta/framework. Cuento mi caso de hace un par de días.

Llevo ya unos días trabajando con Web Services con jax-ws. Cuando empecé con ello, no me leí la documentación completa (soy un impaciente) y en seguida me puse a buscar ejemplos de aquí y de allí para ir haciendo mi propio código. Leí en la documentación que para hacer un Web Services bastaba con ponerle unas anotaciones a la clase (@WebService, @WebMethod, etc), compilarla de forma normal, pasarle la herramienta wsgen que viene con jax-ws y listo. Pues bien, eso hice, montando todo desde el principio con maven y plugins de maven. Y desde luego, pasando ese wsgen automáticamente en la fase posterior al compilado.

Hace un par de días me decidí a hacer un tutorial sobre la aprendido y quise hacerlo más de forma manual, dependiendo lo menos posible de herramientas (eclipse, maven, etc). Así que me puse a ello … y empezaron las dudas y a ponerse de manifiesto las grandes lagunas en mi conocimiento.

El problema desencadenante de todo es que hice todos los pasos para el tutorial sin usar la herramienta wsgen y el web service me funciona. Una clase con las anotaciones correspondientes, un main() que arranca un EndPoint, no se pasa el wsgen y funciona, arrancado desde línea de comandos.

Bueno, según la documentación, después de pasar el wsgen se hace el war para desplegarlo en Tomcat o similar. Será entonces que si usas EndPoint no necesitas pasar wsgen, quizás EndPoint hace todo eso que hace wsgen de forma automática. Pero lo grave de todo es que sí, se supone que hay que pasar wsgen, pero realmente no sé qué hace wsgen (sí lo sé, genera unos fuentes java que no sé exactamente para qué sirven).

Así que nada, seguiré de forma manual, intentaré montar el "hola mundo" en un tomcat y veré si ahí es necesario o no el wsgen… Y luego a pelearse con la parte del cliente, que aunque también la se hacer con herramientas, tampoco entiendo el fondo de todo.

Esta entrada ha sido publicada en anécdotas y etiquetada como , , , , . Guarda el enlace permanente.

9 respuestas a La maldición de las herramientas

  1. blaxter dijo:

    En cualquier curso de aprendizaje, ya sea de programación general o de un lenguaje o tecnología en particular, nunca te hacen usar un ide, al menos si es un curso decente. Particularmnete prefiero aprender primero la teoría un poco de lo nuevo que voy a aprender o usar y a posteriori me meto al tema práctico. Más lento, sí. Ves despacio que tengo prisa.

  2. Angelverde dijo:

    Lei en un blog de un compañero que comienza con php y en uno de sus articulos recomienda usar un IDE para facilitar las cosas, dice que gedit, nano o similares tienen resaltado de sintaxis pero un IDE acelera el desarrollo. Algunos incluso recomiendan aprender php desde 0 con un Framework ¿Que sucede en estos casos? Las aseveraciones de estos colegas ¿son erroneas? o solo estan visualizando una parte del todo.

  3. Chuidiang dijo:

    bueno, son las dos caras de la misma moneda y no hay nada bueno o malo siempre.

    Un IDE ayuda a desarrollar más rápido y a empezar antes a hacer código, pero no aprendes cosas que el IDE te oculta.

    Sin IDE vas más lento y tienes que esforzarte más al principio, pero aprendes más, ya que tienes que hacerlo todo tú.

    Es mejor una u otra solución según lo que quieras. Si quieres aprender de verdad y no tienes prosa, comienza sin IDE. Si estás en un equipo de desarrollo y corre prisa el proyecto, adelante con el IDE aunque no sepas bien el lenguaje, basta con que alguno/s del equipo sepa resolver los posibles problemas que se presenten cuando se pretenda ejecutar el programa en el entorno real, sin IDE.

    Se bueno.

  4. Pingback: Tweets that mention Diario de Programación » Blog Archive » La maldición de las herramientas -- Topsy.com

  5. jneira dijo:

    Totalmente de acuerdo, aunque yo lo extenderia no solo a las ides sino a los «frameworks» y librerias varias que hacen todo lo posible por ocultar y hacer esoterica la implementacion de la funcionalidad soportada. No todas son asi y unas pocas consiguen a la vez simplificar un proceso sin hacer mas ignorante al que lo usa.
    A veces viene bien hacer un par de ruedas (o ver como se hacen en detalle) antes de ponerte a usar ruedas de otros, aunque sea para ver si realmente son tan redondas como parecen desde fuera.
    Lo de las anotaciones es uno de los ejemplos mas sangrantes de engatusar a los programadores con juegos de magia.
    Muchas de las facilidades de la ides estan dirigidas a poder hacer y medio mantener codigo infumable, copypastes y searchreplaces mejorados, codegenerations yfragmentos de codigo etc etc. Para que hacer codigo modular, componible y sencillo si puedo crear monstruos de 500 lineas con cuatro combinaciones de teclas.

  6. Andres dijo:

    Lo mismo podrían decir los programadores de lenguaje ensamblador o C con respecto a JAVA y sus librerias. ¿O no?

  7. jneira dijo:

    Sí, la cuestion es saber el precio que puedes llegar a pagar en un momento dado merece la pena segun el contexto. La ignorancia es un arma de doble filo. En este caso de querer enseñar a los demas algo con un minimo de fundamento no conocer las tripas de lo que quieres enseñar no parece muy recomendable. Ademas del contexto no todas las herramientas-lenguajes-librerias son iguales en el balance entre complejidad(innecesaria o no), su solidez y las mejoras que te ofrecen

  8. Norberto dijo:

    Y el tutorial? lo terminaste? hay link?

  9. david dijo:

    Frameworks, IDEs, librerías. Hablamos de reutilizar, de no volver a inventar la rueda, etc. Está bien entender un proceso al detalle, paso a paso. Eso te da una visión que luego, cuando salen errores esotéricos, sabes por donde puede estar el problema. Pero hemos de recordar que una de las virtudes del programador es la vaguera (laziness). Yo veo bien aprender (con hacerlo una vez basta) tirando de consola y editor de texto simple (un resaltado de sintaxis) pero después hay que ir hacia el producto final y ese camino debe ser no el más corto pero si el más cómodo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.