Artículo de invitado por Jorge Castillo, desarrollador Android en Jobandtalent

Mi carrera profesional como Android Developer se extiende por unos cuatro años. Comencé con proyectos personales un añito antes, pero igualmente no es mucho tiempo. A pesar de ello, siento como si llevase media vida programando, y eso que en el fondo mi paso por el mundo del desarrollo no ha hecho más que comenzar. Desde entonces he aprendido muchas cosas, y es evidente que la mayoría de ellas me han llevado a ser el desarrollador que soy a día de hoy. He pasado por épocas mejores y peores, aunque generalmente buenas y sobre todo productivas.

Para los que no me conozcan, que serán la mayoría, me presentaré muy brevemente. Soy Jorge Castillo, y actualmente formo parte del equipo Android de Jobandtalent, empresa en la que tengo la oportunidad de seguir creciendo junto a grandes programadores día a día a un nivel muy competitivo. En este artículo expondré los puntos que considero más importantes y trataré de proporcionaros así un punto de vista personal sobre ciertos aspectos que probablemente os serán de utilidad.

Sacrificio, sobre todo y con más razón al inicio

Desde que somos pequeñitos en casa nos enseñan que toda recompensa requiere esfuerzo y dedicación. Evidentemente esto no es algo diferente en el desarrollo de aplicaciones. Generalmente además, el esfuerzo a realizar es aún mayor durante los primeros años de trabajo. Dar tus primeros coletazos tan fuerte como puedas te ayudará a alcanzar el objetivo.

primeros coletazos

En mi caso, comencé mi andadura profesional trabajando como becario para dos empresas diferentes, a la vez que estudiaba las últimas asignaturas de la carrera. Fue una época un tanto frenética para mí, y el ritmo era relativamente duro. En estas empresas cobraba muy poquito, o casi nada. No diré el nombre de las mismas por no entrar en polémicas innecesarias. Al fin y al cabo, hoy en día es complicado que una empresa deposite su confianza (a nivel económico) en ti, si no tienes cierta experiencia / currículum / proyectos que te acrediten. Esto se podría entender más o menos, achacarlo a la situación económica del país o a otras historias. Sea como fuere, cada uno es dueño de su vida y sabe qué objetivos perseguir, así como intenta dilucidar el mejor camino para obtenerlos. Lo peor que uno puede hacer es pararse a llorar a casua de factores externos.

Mi intuición me dijo que trabajar en empresas a cambio de experiencia y conocimiento era la única forma de meter la cabeza en el mundillo y aprender a defenderme en términos técnicos, así que tomé la decisión de sacrificarme por un tiempo. Por las mañanas trabajaba como desarrollador web, donde además del desarrollo me encargaba del matenimiento de una de las páginas oficiales de la Universidad de Murcia. No es que aprendiese mucho a nivel técnico allí, más allá de lo que ya había trasteado en mi casa con mis propios blogs, páginas sobre mis hobbies y poco más. Pero sí comencé a aprender algunas cosillas sobre jerarquía y relaciones de trabajo para con el jefe, y entre los compañeros. Aspectos nada ténicos, pero igualmente útiles.

Por las tardes trabajaba en una consultora en la que desarrollábamos aplicaciones para Android. En el momento que conocí la empresa me sentí muy atraido por el tipo de trabajo que realizaban, y me esforcé para conseguir que me diesen una oportunidad. Al final conseguí un humilde puesto de becario, y gracias al esfuerzo que puse en esta última (fue el trabajo que más me atraía), fuí renovado y adquirí un contrato de trabajo indefinido unos meses más tarde. Quizá no era la empresa que mejor pagase del mundo, la que tuviera la mejor gestión, mejores jefes, o mejor jerarquía. Pero a nivel técnico era el mejor sitio en el que podía estar, gracias al alto nivel de mis compañeros de trabajo, a los cuales les debo mucho.

Desde entonces he continuado esforzándome en cada uno de mis trabajos, y también en casa, puesto que nuestra profesión nos exige un aprendizaje constante. Hemos de comprender que en cuestiones de programación no hay límites al aprendizaje. Tenemos a mano internet, la mayor fuente de conocimiento de la historia, ya que las engloba a todas. No tenemos excusa, y a casua de esto el mercado evoluciona todos los días a un ritmo espantoso. Por tanto, debemos asumir que tendremos que estudiar, por siempre. Es por eso que lo ideal sería que pudiésemos convertirlo en nuestro hobby, ¿verdad?.

El desarrollo como hobby

El aprendizaje dentro del trabajo está bien, y es altamente necesario. Pero hay mucha gente trabajando y muchos de ellos con facilidad para aprender. Por tanto es necesario dar un plus. Si tu trabajo es también tu hobby, acabarás dedicándole numerosas horas por tu cuenta, y tu interés por los detalles se multiplicará. Desarrollar proyectos personales, publicar Open Source en una red social como GitHub, leer, estudiar, escribir en un blog, son cosas productivas en las que invertir tu tiempo libre.

Es evidente que el tiempo libre también está para descansar, y desde luego en mi opinión es tan valioso el buen descanso, los ratos dedicados a tu familia, amigos, y otros hobbies, como el tiempo que puedas dedicar a mejorar tus conocimientos como desarrollador. Lo más importante es ser capaz de optimizar el tiempo y poder dedicarlo a todas esas cosas, por difícil que parezca. El día tiene 24 horas. Idealmente podrías dormir 8 y tendrías otras 16 para compaginar tu trabajo con todos tus temas personales. Si trabajas 8-10 de ellas (incluyendo parones para almuerzos, comidas, etc), tienes al menos otras 6. Quítale otras 2 que podríamos achacar a problemas de transporte (en el peor de los casos). Tienes otras 4 para destinar a lo que quieras. Todos los días. Y en realidad con dedicar sólo 1 a temas de aprendizaje vas más que sobrado. Parece poquito, pero significa mucho. Hacer un poquito cada día, pero todos los días, es uno de los pocos secretos que puede haber para seguir prosperando. Leer un rato antes de acostarte, por ejemplo, es algo bastante viable para casi todo el mundo, y te ayuda a ampliar tus conocimientos y vocabulario.

En mi caso, he dedicado gran parte de mi tiempo libre a publicar proyectos Open Source y a proyectos personales. Tener proyectos personales, tus propias librerías, aplicaciones, etcétera, es realmente importante. No tan importante es que los termines. A pesar de que es bueno aprender a terminar lo que uno empieza, es mucho más productivo dedicarte a lo que te motiva realmente en cada momento. Yo he tenido proyectos en los que he trabajado semanas, e incluso meses, y al final no han visto la luz. Pero gracias a la motivación y al hecho de disfrutar conforme los desarrollaba, aprendí mucho con ellos. El hecho de terminarlos está bien, pero va más encaminado a un enfoque de compensación posterior al trabajo realizado (generalmente económica). En cambio, el bien que obtienes al dedicar cada momento de tu tiempo a lo que realmente te motiva, es mucho mayor a la larga, y considerablemente más importante en mi opinión. Eso es lo que realmente hará arraigar tus conocimientos. Ten en cuenta que el momento en que uno aprende más es cuando está disfrutando con lo que hace. Esto a día de hoy es casi una ciencia, y hay programas de educación para niños que se basan por completo en esa idea.

pinturas

Actualmente, una de las cosas que más hago es leer libros técnicos. Aprovecho el camino al trabajo cada día para leer en el metro. Leo en casa también, o cuando viajo entre Madrid y Murcia. Cualquier rato es bueno. Leo los grandes clásicos que todos conocen y son casi como biblias de la programación moderna, o libros importantes recomendados por gente con más experiencia que yo en la materia que me interese. Es muy importante saber pedir consejo a los que saben más que tú sobre algo, y estar al tanto de las personas más reconocidas en cada materia dentro de la comunidad. Por suerte tenemos una comunidad muy amable y rica en conocimiento. Yo diría que una de las más potentes del mundo a nivel de ingeniería y desarrollo. Es bueno que nos lo creamos y lo aprovechemos.

Pedir consejo está muy ligado al pragmatismo.

Pragmatismo, tan de moda en los últimos tiempos

Principalmente durante los primeros años, uno de los problemas más recurrentes en los programadores (y seguramente dentro de cualquiera de las ciencias complicadas que existen), es el orgullo. El desarrollo es complejo, y cuando dominas (o al menos crees que lo haces) partes diferentes del mismo, tiendes a volverte más rudo y orgulloso. Comienzas a creer demasiado en tus conocimientos y a valorar muy poco el de los demás. No existe un error mayor, y esto es algo que los programadores experimentados terminan por descubrir. El problema de no aceptar conocimientos de otros es que los tuyos propios pueden estar equivocados. Tan simple como eso. Uno podría morir y creer siempre que tuvo la razón, si nadie en toda su vida le llevase la contraria, o aunque lo hiciese, el primero no fuese capaz de asumir que estaba equivocado. Esto parece algo obvio, pero es muy difícil de dominar. La persona con mayor capacidad de aprendizaje es la que se deja aconsejar, y sabe asimilar en poco tiempo las buenas ideas de sus compañeros o colegas de profesión como suyas propias. Ese es capaz de dar pasos de gigante.

Un caso claro en el que florece el orgullo se da cuando alguien critica nuestro código, aunque sea de forma constructiva. Es muy normal sentirte atacado, terminando por ignorar todo lo que te han dicho una vez se zanja la conversación. ¿Quién se cree que es tu compañero para darte lecciones?. Sólo es una cabeza pensante más en tu entorno de trabajo, que intenta echarte una mano. Un punto de vista diferente al tuyo, que evidentemente no estabas teniendo en cuenta. Es realmente importante trabajar en la templanza, y conversar con nuestro compañero sobre nuestro código con total objetividad. Tanta como si el código hubiese sido escrito por otro.

Otro buen rasgo de pragmatismo es la capacidad de entenderse con todos los miembros de tu equipo de trabajo, ya formen parte de la misma plataforma, de otra, del equipo de diseño, o incluso de la gestión y organización, como puede ser un project manager. Ser capaz de entender el trabajo de cada uno de ellos, al menos hasta cierto punto, y dialogar pausadamente y con detalle sobre los pros y los contras de determinadas decisiones, demuestra tu tolerancia, empatía, y capacidad de trabajo. Muchas empresas prefieren contratar buenas personas con buenas dotes de ingeniería, que grandes ingenieros de renombre. Los miembros de otros equipos son tan compañeros como los que pertenecen al tuyo propio, y puedes aprender cosas de todos ellos. No son tus enemigos.

No es tu enemigo

Hacer pair/mob programming y code reviews, son prácticas que ayudan a mejorar la tolerancia / empatía. Además ayudan muchísimo a crecer como programador. Si trabajas en una empresa en la que no se suelan realizar este tipo de prácticas, no estaría de más proponerlo, ya que es un paso adelante importante. Compartir conocimientos es muy útil.

Todo lo referente al pragmatismo radica en el sentido común, y podría citar mil ejemplos. Creo que la idea está clara.

Actividad en la comunidad y aportar referencias

Hay desarrolladores realmente buenos que no son buenos a la hora de darse a conocer, y no hacen comunidad por diferentes motivos. Algunos de ellos simplemente se sienten más cómodos moviéndose por su cuenta, y otros quizá no lo han hecho por problemas de distancia. A causa de esto, no son conocidos dentro de la comunidad, y pierden oportunidades de trabajo que podrían resultar asequibles para ellos.

Por otro lado, para los estudiantes recién salidos de la carrera en ciudades pequeñas, es difícil estar al día y saber por dónde van los tiros. Yo, por ejemplo, estudié en Murcia, y jamás habría descubierto la comunidad que hoy tenemos si no hubiese tenido la oportunidad de trabajar en una de las empresas que mencioné antes. Mi recomendación al respecto es que si estás en una situación parecida, no desistas, muévete, consulta blogs, habla con la gente a través de ellos, y acabarás empapándote de la comunidad. A mi me ha ayudado mucho a seguir creciendo, y he descubierto un enorme número de cosas y conocimientos a los que no hubiera tenido acceso de otro modo.

Actualmente la empresa en la que trabajo fomenta que asistamos a eventos, tanto si somos asistentes como ponentes, y tengo la suerte de seguir potenciando ese factor. También organizan charlas propias a las que asisten muchas personas de la comunidad. Déjate caer por Jobandtalent algún martes que tengamos evento y allí nos conoceremos. Si tú no tienes esa suerte, el día de mañana, sería bueno que intentases trabajar duro para conseguir formar parte de una empresa que valore la formación. Hay una frase muy conocida que dice que vale más formar a tus empleados y que se marchen a no formarlos y que se queden. Hoy en día no es fácil encontrar empresas que promulguen este punto de vista.

Es muy importante participar en conversaciones activas sobre temas ténicos de actualidad, comentar en foros, leer opiniones de todo el mundo, asistir a eventos, compartir tu código para que otros lo valoren y opinen sobre él… etc. Perder el pudor a mostrar tu código al público es crucial para poder aprender a aceptar las críticas. Y no sólo aceptarlas, si no también sacar un partido real de ellas.

Código

En definitiva, enriquecerte del resto de miembros de la comunidad y hacer crecer tu marca personal (de lo que también se habla en el ebook gratuito de DevExperto) es un factor diferencial que no deberías dejar pasar.

Confiar en tus conocimientos, sobre todo en las entrevistas

Cuando somos entrevistados normalmente nos ponemos nerviosos y nos cuesta responder correctamente a las preguntas que nos hacen. Generalmente es complicado valorar a una persona por el resultado de una entrevista, y raras veces es capaz de defenderse lo suficientemente bien como para transmitir sus conocimientos de forma relativamente completa. Uno también debe acostumbrarse a hacer entrevistas, y estar preparado para responder correctamente. Estudiar de cara a una entrevista no es lo ideal, ya que no representa los conocimientos que tienes, si no los que adquiriste ayer por la noche para poder superarla, tras ver los requisitos que la empresa exigía en la oferta de trabajo. Está bien mirar la oferta para saber cómo enfocarla, pero tus conocimientos son los que son, y debes confiar en ellos.

Hacer entrevistas te ayuda a dilucidar cómo está el mercado en cada momento, y a saber qué es lo que las empresas están valorando más. Eso te ayudará a prepararte correctamente a lo largo del tiempo, para las siguientes. Pero de una forma sensata y dedicándole el tiempo que merece a las materias a aprender. No algo esporádico de una tarde.

En una entrevista puedes obtener información muy importante sobre la empresa para la que estás siendo entrevistado. Basándote en el tipo de preguntas que hacen, podrías ser capaz de decidir si para ti es interesante o no trabajar en esa empresa. No tienes por qué sentirte por debajo, como si estuvieras rogando por trabajo, si confías en lo que sabes. Ten en cuenta que estás siendo entrevistado por un motivo, por tanto, algo tendrás que ofrecer. A su vez, es importante ser humilde y realista. Saber a qué tipo de trabajos puedes aspirar en el momento actual.

Conclusiones

En una carrera uno debe dar todos los pasos, y no pasar de 0 a 100 en dos días. Tras cada escalón, puedes mirar abajo para contemplar lo recorrido, esto siempre es útil. Lo bueno es que ya está superado, y ese esfuerzo no lo tendrás que volver a realizar. Lee, programa, aprovecha el tiempo libre, descansa, confía en tus conocimientos, sé tolerante. Trabaja un poquito todos los días.

Yo sigo pensando que tengo un camino enorme por recorrer, igual que el primer día. Con el esfuerzo diario, todo termina por llegar, a su debido tiempo.