Me llamo Guybrush Threepwood y quiero ser programador

En este casi año que llevo trabajando en desarrollo de software he aprendido mucho. Sé que ha sonado como la típica frase de inicio de redacción escolar, pero coño, estoy desentrenado, ¿vale? Tengan paciencia que voy puestísimo de cortisona. Otra vez.

He aprendido mucho sobre mi especialidad profesional. Poco, relativamente hablando, porque no llevo ni un año, pero he tenido la suerte de caer en un proyecto donde he aprendido muchísimo y, sobre todo, lo mejor que he aprendido es que un montón de cosas que creía que me serían necesarias antes de empezar a trabajar no son más que un montón de tonterías que al final no te sirven para nada. Así, fieles a nuestra vocación de instruir deleitando, en We Endanger Species hemos tomado la decisión (es decir, la hemos tomado Pierre, mi gemelo maligno con bigotito de villano de vodevil, y yo) de escribir un artículo que tal vez pueda servir de ayuda a alguien que intente abrirse paso en el proceloso océano del encontrar curro de programador.

No garantizo nada. Pero pueden intentarlo, claro.

Empecemos por la pregunta, la primera que hace todo el mundo: ¿qué lenguaje es el más buscado?

Mal. Empezamos planteando mal la pregunta. Tú no aprendes a usar un lenguaje, tú aprendes a programar usando un lenguaje para desarrollar dicho aprendizaje. Sea Java, C/C++/C#, Python, Perl o el que sea, como si es lolcode. Lo lógico sería pensar que el lenguaje con el que has aprendido es el que mejor dominas, claro; a partir de ahí, el camino está más o menos claro. Sobre todo porque, una vez aprendes un lenguaje, aprender otro es muy sencillo. Todos son faves contades, que decimos en mi tierra. Lo ideal es que tu primer lenguaje sea lo más completo posible para que después no tengas que aprender características que existen en otros y en ese no, sino que tengas que desaprender lo que ya sabes porque en otro no se usa. Es más fácil pasar de un lenguaje con tipado fuerte a uno con tipado débil que al revés. Y ya sé que no has entendido esto, pero hazme caso: no aprendas con Python. Me lo agradecerás.

La pregunta, si quieres empezar por tu cuenta y ser autodidacta, es: ¿por qué te haces esto? ¿Tienes prisa? Mal. En seis meses es imposible aprender a programar salvo si eres John Carmack y ambos sabemos que no eres John Carmack, porque si lo fueras estarías mejorando el idTech4 por tu cuenta en lugar de estar leyendo esto. Si quieres trabajar de esto porque has escuchado que no hay paro has escuchado mal: lo hay. Mucho. Sobre todo, paro en zonas económicamente deprimidas. Si no estás dispuesto a hacer las maletas espero que en tu región exista una industria potente y diversificada de desarrollo de software o te va a tocar hacer lo mismo que yo y largarte lejos. Y si en tu zona no hay paro, enhorabuena, seguro que lo que sí hay es precariedad, cárnicas y contratos con sueldos miserables. ¿Que es mejor que el paro? No sé, ¿comer carne que no ha pasado controles de Sanidad es mejor que no comer? Supongo que a corto plazo sí, pero a largo plazo igual no.

Si quieres trabajar de esto el mejor consejo que te puedo dar es que te preguntes una cosa: ¿de verdad te gusta? No me refiero a si te gustan los ordenadores, me refiero a si te gusta programar. Si te gusta tomar un problema, descomponerlo en problemas más pequeños y atómicos, disponerlos en orden de importancia e ir uno por uno, conformando una solución que funciona y es modulable. ¿Te gusta hacer eso, o tú lo que quieres es fliparte overclockeando la CPU de tu PC de mil pavos? ¿Quieres dedicarte a esto, o sólo es una manera de trastear con un PC sin que nadie te diga nada? Piénsalo dos veces. Evítanos a los demás trabajar con alguien que se ha equivocado de profesión, por lo que más quieras; tuve un profesor que después de una carrera y diez años de trabajo en Indra descubrió que odiaba los ordenadores. No seas como él.

Si no estás seguro, y a estas alturas seguramente no lo estés, mi recomendación es que te apuntes a un ciclo formativo. Es educación pública (con lo que pagas las tasas y hasta puedes pedir beca), son dos añitos, se lo sacan hasta los bonobos con conmoción cerebral y sales de allí sabiendo, al menos, arrancar un IDE y picar un poco del lenguaje con el que hayas aprendido. A efectos de este artículo asumiremos que sabes algo de Java, que es el lenguaje que aprendí yo y con el que me gano la vida. No será el único que conozcas, claro, porque también habrás aprendido MySQL al aprender bases de datos y algo de PHP y HTML. Si en primero no descubres que te gusta y es más una carga que una satisfacción, déjalo. Sólo habrás perdido un año y podrás buscarte otra cosa, pero si llegan las notas en junio y descubres que esto no es lo tuyo será mejor que te bajes del barco y nos ahorres a todos, a ti el primero, un montón de miseria.

Bien, supongamos que has acabado el ciclo, que te mola programar, que es lo tuyo y además aprendes en tus ratos libres por puro hobby, como un servidor. Me alegro. Enhorabuena, has encontrado tu nueva vocación, ya eres desarrollador de software. Toma, un pin de la Free Software Foundation. Ahora olvídate de hacer cursos de Coursera, de mirar tutoriales en Youtube y de llenar los marcadores de sitios con recursos que al final nunca acabas leyendo. Internet está lleno de material, pero no te va a servir de nada acumular en plan hoarder. Es más, es contraproducente.

¿Crees que ya tienes lo que hay que tener para salir al mundo real y que te lluevan los contratos? Pues lamento ser el portador de malas noticias, pero va a ser que no. Con lo que lleves aprendido al salir del ciclo podrás, como mucho, aspirar a que algunos recruiters de algunas ETT se dignen mirar tu curriculum. Por supuesto así no vamos a ninguna parte, por lo que tu siguiente paso va a ser estudiarte, y me refiero a integrarlo en el IDE que uses y experimentar, una cosa llamada integración contínua. Usa Git, que es mucho mejor que Subversion, y aprende a hacer commit, merge, rebase, branch y todas esas cosas que impiden catástrofes en entornos de desarrollo de equipo. Ponte el plugin en Eclipse, Netbeans o el IDE que uses (servidor usa Eclipse porque estoy más acostumbrado, nada más) y empieza a trastear y a romper cosas. Mejor ahora que cuando te vayan los garbanzos en ello.

Lo siguiente que debes hacer es mirar ofertas de empleo. No enviar: mirar. Ni se te ocurra enviar ninguna todavía.

Observarás un patrón en esas ofertas. Todo el mundo busca las mismas cinco o seis tecnologías o frameworks de Java, de las cuales unas cuantas son fáciles de aprender en casa. Eso no significa que vayas a salir de casa hecho un experto en Hibernate, porque es imposible, pero al menos podrás empezar a defenderte. Generalmente, esas tecnologías serán la mencionada Hibernate, Spring, Maven, JUnit, J2EE y, de vez en cuando, Struts y alguna que otra más. Luego hay cosas mucho más específicas como Camel, RxJava y tal, pero no recomiendo meterse con eso porque es muy de nicho. Mi recomendación personal: siempre existe un libro de O’Reilly y/o Manning para cada framework y es todo lo que cualquiera necesita. Te los compras (si quieres, allá tú con tu ética; piensa que es una inversión porque te van a durar años y son una fuente inagotable de información), te bajas los códigos de ejemplo y te haces tu proyectito tranquilo y con calma. Sí, podrías tirar con la documentación de los proyectos (la de Maven está muy chula), pero te tropezarías con cosas como la documentación de Hibernate, que es más seco y más árido que comer arena en el desierto a mediodía, y te quitaría las ganas. Mejor empieza con un tutorial, con algo pensado para ser un texto introductorio.

Todo esto implica, como el avispado lector habrá podido comprobar, una inversión considerable de tiempo. Pues sí. Échale otro año después del ciclo para ponerte al día, con lo cual nos vamos a los tres años. Sólo ponerte al día, insisto, y que no te suenen a chino las tecnologías que te van a pedir en tu primer trabajo. Todo el mundo esperará que puedas hacer una branch del código, bajarla a tu local, importarla en el IDE, construir el proyecto con clean install y arreglar las incompatibilidades de la build, tanto si supone reconstruir el proyecto como si tienes que cambiar facets, versiones del JDK o lo que sea. O, al menos, estarán dispuestos a enseñarte a hacerlo una vez. Incluso puede que dos. A la tercera te mirarán raro. Igual no hay una cuarta. Así que mejor si vas sabiendo de qué va la vaina esta.

¿Asustado? Bien. Deberías estarlo. Eso te mantendrá alerta.

Aparte de los conocimientos técnicos, que son los menos críticos porque se supone que entras con un perfil de programador junior, y por tanto se te supone más verde que una naranja en verano, lo importante es la cultura de empresa. Y esto sí que se aprende por las malas. Ya no estás en el instituto, esto ya no son deberes que tienes que entregar o exámenes que tengas que aprobar. Aquí no te lo van a dar mascado. Esto es tu trabajo, chaval, y tienes que sacarlo adelante cada día. Claro que te van a prestar ayuda, pero nadie va a picar el código por ti. Tienes que buscarte las habichuelas por ti mismo. Y aquí entra el segundo gran complejo del novato: goolgear está bien. En serio, no pasa nada. Lo hacemos todos. Sea lo que sea. Coño, el otro día me tocó googlear como se le da valor a una variable long en Java porque hace años que no lo hago, así que imagina. StackOverflow se convertirá en tu mejor amigo. Aprenderás a leer trazas de error hasta distinguir el problema y poder googlearlo. Porque todos, todos, usamos Google.

No es objeto de este artículo enseñarte a trabajar. Si es tu primer trabajo, tu primer trabajo de verdad, tendrás que aprender por las malas cosas que todos hemos aprendido de la misma manera. Cuando pase lo sabrás, pero me refiero a cosas que tienen que ver con cómo te desenvuelves profesionalmente. Recuerda que ya no eres un estudiante, que eres un trabajador cualificado y que se espera de ti cierto grado de profesionalidad. Responsabilízate de tu tarea, termínala, pide ayuda cuando sea necesario pero, sobre todo, debes entender lo que te están pidiendo. No sirve de nada aceptar una tarea que no entiendes ni, el Emperador te confunda si lo haces, decir que entiendes algo si no lo entiendes. Ralentizas a los demás, retrasas el proyecto y son todo problemas. Di que sí sólo cuando signifique sí, di que no cuando signifique no. Nunca digas que algo está terminado si no lo está sólo porque crees que va a ser fácil, estima las tareas de manera realista (casi pesimista), levanta la mano cuando tengas un problema en lugar de encabezonarte y retrasarte y, sobre todo, aprende de tus errores. Todos cometemos mil errores al cabo del día, pero la idea es cometerlos una, como mucho dos veces, y que a la tercera o lo veas venir o sepas arreglarlo cuando ocurra.

Lo demás, que seguramente sea algo que has ido leyendo por ahí (esto es, empaparte del Clean Code, por ejemplo) son cosas que irán surgiendo sobre la marcha. Créeme, te aseguro que aprenderás a escribir código limpio y legible. A hostias, pero aprenderás.

Para acabar, un consejo personal: deja tu ego profesional en casa al salir por las mañanas. No lo necesitas. No eres mejor que nadie, nadie es peor que tú, sois todos iguales. La cagada de un compañero se reparte entre todos y la tuya igual. Nadie te va a echar la culpa de nada (aunque sí señalará dónde la has liado), nadie te va a atacar de manera personal y, por tanto, no debes tomarte nada de lo que te digan desde ese punto de vista. Vas a pasar más horas con tus compañeros de trabajo que con tu familia y tus amigos juntos, procura llevarte bien con ellos. Sí, siempre hay gilipollas, pero tendrás que aprender a manejarlos o, al menos, ignorarlos en la medida de lo posible.

¿Ves? Te dije que si este trabajo no era vocacional sería mejor buscarse otra cosa.

Anuncios

Un pensamiento en “Me llamo Guybrush Threepwood y quiero ser programador

  1. Ricardo dice:

    De la carrera únicamente conservo por cariño un resumen de la asignatura de base de datos. Me resultó las más útil de todas, con enorme diferencia. Las demás sientan las bases para enseñarte a que aprendas por tu cuenta y te desenvuelvas en el mundo real. Es imposible saber de todos los lenguajes, pero tener una buena base de programación lo facilita mucho Y como dices, si no te gusta programar, dedícate a otra cosa.

    Turbo Pascal fue el único lenguaje que era casi obligatorio porque varias asignaturas exigían prácticas en un lenguaje y éste era, a principio de los 90, uno de los más asequibles y más sencillos. Delphi era una especie de Turbo Pascal más chulo y orientado a ventanas, lo que por aquel entonces era una pasada. Recuerdo emocionarme cuando conseguí una ventana en C que funcionara y cuando salió Delphi las tenías como objetos que usabas casi sin preocuparte de nada. Visual Basic nunca me gustó aunque era muy fácil; VB6 era muy solicitado; me me sirvió para conseguir mi primer trabajo. C era más entretenido y complejo, pero sus punteros siempre se me atragantaron (con C# se acabaron mis problemas). Java fue un reto para entregar una práctica.

    Por motivos de trabajo aprendí .NET y aunque desde hace ocho años no lo necesito profesionalmente lo uso de vez en cuando por dos razones: Porque me gusta y porque me encanta.

    Me alegro de leerte, aunque sea de tanto en tanto. Como dicen: “Si lo bueno es breve es que faltan comentarios en el código y… ¿dónde carajo está la documentación?”.

    Saludos.
    Ricardo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: