Algunos son consejos genéricos, he intentado que se refieran a nuestra profesión en particular, pero creo que no lo he conseguido del todo. Normalmente trabajamos con más gente, y mejorar no sólo depende de tí, tus compañeros te pueden ayudar más que nadie. Son muchas cosas, a mi se me olvidan algunas veces, otras veces no me paro a pensar lo suficiente y la cago.
Nuestro trabajo es muy difícil, pero siempre podemos mejorar, y espero que alguno de estos consejos os ayuden:
Si por un casual has llegado aquí porque tienes intención de dedicarte a esto en el futuro, mi consejo inicial es que llegues con el mejor inglés posible. Todo está en inglés.
No te quedes atrás, intenta estar al día de lo que pasa en nuestra industría. Si en tu tiempo libre no puedes o no quieres dedicarle tiempo, no pasa nada. Hazlo durante tus horas de trabajo, siempre podrás dedicar algo de tiempo, aunque sea poco. Ve a algún meetup de vez en cuando, alguna conferencia. Incluso puedes dar tú alguna charla, sólo preparándola ya estarás aprendiendo.
Hacer un proyecto personal y ponerlo en producción, o participar en un proyecto open source, son las mejores formas de mejorar. Procura que lo que hagas sea algo diferente, algo con lo que aprendas o algo que te divierta. Intenta hacerlo con más gente, que no sea una tarea solitaria. Aprenderás un montón de cosas, de verdad, y además conocerás a un montón de gente nueva interesante.
No te quejes nunca del código de otros, nunca sabes de donde sale. A lo mejor lo hiciste tú, o lo hizo alguien con un mal día, alguien que tenía prisa, alguien que necesitaba aprender y nadie le ayudó … pueden pasar muchas cosas. Si crees que un código es mejorable, y es reciente, coméntalo con la persona que lo hizo y los dos aprenderéis.
No tengas nunca miedo a decir que algo no sabes o no lo controlas, o que estas atascado, o que se te ha olvidado,… Si ves algo que no entiendes, algo que no sabes como funciona exactamente, algo que copias y pegas sin saber. Párate, pregunta, investiga a ver que es, somos seres humanos, nuestro trabajo es muy complicado, nadie lo sabe todo.
Hay personas que te pueden hacer mejorar, pregúnta lo que no tengas claro, de forma educada, entérate de lo que te cuentan, apúntalo. Intenta comprenderlo por tu cuenta, procura que la próxima vez que preguntes algo sea otra cosa diferente. Si te has esforzado se notará y la gente siempre estará dispuesta a ayudarte.
No siempre lo que hay que hacer es un reto tecnológico, hay veces que hacemos cosas más repetitivas o aburridas. No hay que caer en el desánimo o la queja, siempre se puede aprender algo, mejorar algún proceso, crear un test, automatizarlo para no volver a hacerlo, … y si no, hazlo bien y rápido y date una pequeña recompensa.
Es imposible estar ocho horas tirando código, haz pausas de vez en cuando. Incluso cuando estas muy “enchufado” con algo, hacer una pequeña pausa puede venir bien para ver las cosas con otra perspectiva. No tengas miedo a pausas de vez en cuando, pero si tienes que acordarte de algo, apúntalo :)
Cuando crees que algo está terminado, y lo vas a “subir”, ¡espérate!, mira otra vez lo que vas a subir. ¿Estas seguro de que quieres subir eso? ¿estas mejorando o empeorando lo que había antes? ¿te has dejado alguna mejora por hacer? ¿has testeado bien todo?,… hazte preguntas y no subas lo primero que “funciona”.
Cuando hay que tomar decisiones importantes de arquitectura, o de como hacer las cosas, es importante que se tomen entre varios (si es posible). Si no te parece bien, coméntalo sin miedo. Expresa tus dudas, habla educadamente, puede que tengas razón pero puede que no. También puede que no se sepa lo que va a pasar, a los cambios importantes o cosas nuevas, hay que darles tiempo a que se desarrollen. Es muy importante que todos penséis en la misma dirección. No olvides cual fué el resultado de esas decisiones, haz retrospectiva, te ayudará en el futuro.
Crees que algo se puede mejorar, parece una buena idea… no te hacen caso, te ignoran. No dejes que se te olvide ni caigas en el pesar. Sé un poco “pesado”, muestra tus ideas, que te convenzan o convénceles tu a ellos.
Empezar un nuevo proyecto y decir “microservicios”, o cualquier otro palabro que añada complejidad, suele ser una mala idea. Intenta comprender porque es necesario. Comprende lo que va a implicar en tu dia a día. El esfuerzo extra que va a suponer, lo que va a complicar tus tests, la de lineas de código que vas a tirar que no tienen nada que ver con la lógica de tu aplicación. Hay veces que nos vemos arrastrado a utilizar técnologías complicadas y hay que dedicarle tiempo. Aprende de ello, piensa en como se puede mejorar, que cambios se podrían hacer, intenta siempre ir un paso más allá, no te quedes con hacer tu trabajo, sé pragmático.
Llegas a un proyecto que ya está rodado, lo que hay es un infierno, te quieres morir,… No, seguramente no te vayan a dejar hacerlo de nuevo como a ti te gustaria. Siempre hay algo que se puede mejorar, hasta en el proyecto que crees más aburrido. Van a aplaudir que lo mejores, o que les enseñes tus ideas para darle un mejor aire.
No hagas test manuales y evita la lista de cosas a probar cuando subes a producción. Automatiza los tests. No te obsesiones con dar 100% de cobertura de test en los proyectos, preocúpate de que tus tests tengan valor. Si haces un test y tienes que mockear un montón de cosas, para, ese test no te va servir de nada. Asegurate que siempre haya una herramienta de integración continua corriendo tus tests.
Busca siempre la simplicidad. Pregúntate si cada dependencia que añades es realmente necesaria. Si te cuesta entender tu propio código, aunque funcione, rehazlo. Cada linea de código extra o cada complejidad que añades, multiplica las opciones de que lo que haces sea inmantenible o nunca llegue a usarse. Sé minimalista con tu código.
Las revisiones de código y poneros dos a hablar con código delante, es algo muy valioso. Y si no puedes porque estas sólo, mira el código que escriben los demás, por ejemplo en Github.
Leer libros, manuales, documentación,… está muy bien, pero mejor si lo pasas a la práctica y haces algo. Y si no lees, te recomiendo leer temas más generalistas y menos técnicos, sobre como hacer un código más limpio, más entendible, más ordenado, mejores tests,…
Nunca te creas que eres el mejor o que estas por encima de otras desarrolladores. Siempre, siempre, siempre, alguien sabe más que tú o hace las cosas mejor que tú.
No te dejes llevar por los miles de librerias, frameworks y lenguajes que salen. Intenta entender ideas o conceptos nuevos, el paradigma funcional, cómo funciona react, el event sourcing, las bases de datos no relacionales, el blockchain, los contenedores, la encriptación, el machine learning, la herencia, la metaprogramación, los algoritmos, la computación en la nube, … Y si puedes, pon alguno en práctica.
Como colofón, a mi me encanta desarrollar, y lo que más me pone es borrar código ;)
Muchas gracias!