Posts Cosas que todo Junior debería saber, y más de un Senior debería recordar.
Post
Cancel

Cosas que todo Junior debería saber, y más de un Senior debería recordar.

Disclaimer

Para los de piel fina: este post, va dirigido tanto a personas que han decidido empezar a estudiar programación, sin contar con ningún tipo de “background”, como a quien ya ha aprendido lo básico (juniors), y a todo Senior que quiera leerlo, y aportar su granito de arena, o sus 2 cents… como queráis decirlo, o recordar algunas cosas, que quizá haya olvidado.

Habrá cosas subjetivas, basadas en mi prisma, obviamente, pero la intención es aportar algo de mi experiencia para intentar ayudar.

Introducción

Este post iba a ser un vídeo1 en respuesta a este Tweet:

Pero, escribir es mucho más rápido que grabar y editar vídeo, y como de todos modos tenía que escribir el “guión”, he decidido responder por escrito, de momento… en algún momento grabaré este video, y otros tantos pendientes, y adeudados.

Soy Marcos Ramírez, y llevo más de 25 años dedicandome al desarrollo de apliaciones, fundamentalmente web, desde Junior, como todos, hasta CTO y CEO. y os dejo el link por si alguien quiere saber más sobre mí.

Últimamente vengo observando un “boom” similar al de la década de los 90 (en los 90 muchísima gente empezó Ingeniería Informática), solo que ahora, debido a diversos factores, hay muchísima más personas que eligen otras vías de formación, como los CodeCamps, formación online, o autodidacta, algo perfectamente válido,

Es por ello, además de por el citado Tweet, que escribo este post.

Espero poder ayudar tanto a Juniors, como a quien quiera empezar a estudiar programación.

ESTE POST NO VA DIRIGIDO A NINGUN SECTOR ESPECÍFICO ES VÁLIDO PARA TODOS, pero si alguien quiere saber algo específico sobre programación de BackEnd, Front, Apps, o lo que sea, puede preguntar y trataré de responderle.

Situación actual

Estamos viviendo una época histórica, que todos conocemos, que ha probocado un aumento del teletrabajo, y de demanda de profesiones relaciondas con la informática, o que puedan desempeñarse de manera remota (sobre el trabajo remoto, ya hablaremos en otro momento).

Y por ello, muchas personas, han visto en la programación2 una vía de salida.

El problema

No sabes lo que no sabes.

Esa frase, debería ser lo primero a aprender al iniciar cualquier tipo de estudios, y esto, posiblemente sea por mi prima, pero veo incluso mucho “Fan Boy” de … “formadores” (a los que nadie con experiencia respeta), haciendo alarde de un ego tan grande como su desconocimiento (aunque, del ego en el mundo de la informática, podría sacar horas y horas de contenido)

Este punto, el de no saber lo que no sabes, es extensible desde que decides formarte, hasta que … te mueres :). No, en serio, por suerte, la informática es una profesión en la que no dejas de aprender cosas nuevas, aunque no tantas veces aprendes CONCEPTOS nuevos, y es en esto en lo que debes centrarte.

Quiero aprender a programar

Si estás en el punto de querer aprender a programar, lo primero que debes saber es elegir como quieres formarte, hay varias opciones, y trataré de expònerte toras con sus pros y contras. Aunque este post está pensado, sobretodo, para quienes eligieron formarse de manera autodidacta, o quienes no saben hacía donde dirigirse.

Tipos de formación

Universidad

Polémicas aparte, en la universidad aprenderás cosas que serán útiles si pretendes llegar a ser más que un programador (le pese a quien le pese, todos los ingenieros son programadores, pero no todos los programadores son ingenieros, pero de esto, hablaremos en otro momento si queréis) Aquí es donde más conceptos y conocimientos no directamente relacionados con la programación aprenderás.

La queja común suele ser que “meten mucha paja”, o cosa inutil, ciertamente, si solo quieres hacer cosas sencillas, si, “hay mucha paja”

Y, aunque para el 99% de los empleos, al menso en España, no lo requieran, tienes tu título de Ingeniero, o Licenciado en informática.

Otras formaciones regladas (FPs, Etc)

Desconozco la oferta actual, pero por norma general, suelen ser clases más prácticas o con “menos paja”, además de contar también con tu titulación reglada. Agradecería si alquien pudiese aportar más en este aspecto.

BootCamps y Cursos online

Aquí, dado que hay literalmente MILES, y sin entrar en polémicas de cual es mejor, o peor, o quien directamente es un estafador, te daré un simple consejo:

Para adquirir los conocimientos básicos, te basta con ver tutoriales gratuitos online, si decides PAGAR, que sea por el TIEMPO y CONOCIMIENMTOS un PROFESOR que te resuelva dudas, no por un curso, o unos vídeos3 y, evidentemente busca y pide referencias de dicho profesor/escuela

Formación autodidacta

Cuando decides ser autodidacta, tienes que ser consciente de lo que no sabes, y quieres aprender, ello conlleva que debes ser honesto contigo mismo, y dedicar tiempo primero a aprender a aprender y qué debes aprender, esto es un ejercicio de autoconomiento e investigación, dado que en el autoaprendizaje, hay una gran parte de autogestión, y resolución de problemas de manera autónoma.

Estudia programación, no lenguajes.

Algo que me preguntan a menudo, es “que lenguaje aprendo para empezar”, y mi respuesta siempre es la misma NINGUNO Y el motivo es simple, todos, absolutamente todos los lenguajes4 te vas a encontrar con los mismos conceptos, que es lo que debes tener claro, ¿que conceptos?, simple, te dejo un breve listado:

Conceptos básicos que deberías saber.

Esto es un breve, brevísimo resumen, el orden no está en piedra (está escrito deprisa, eso sí) pero si alguien quiere profundizar, ya tiene de donde empezar a tirar del hilo, o podéis preguntarme, aunque mi tiempo es más bien escaso, intentaré contestar, o escribir más posts al respecto.

  1. Variables, operadores lógicos, bucles, etc..
  2. Programación orientada a objetos
  3. Clases/Herencia
  4. Abstracción (Entender el concepto de Abstracción, es de lo más importe)
  5. Estructuras de datos
  6. Polimorfismo
  7. Algoritmos (y su coste, un olvidado siempre)
  8. Recursividad (Creo que tiene más sentido ponerlo dentro de algoritmos)
  9. Diagramado (otro gran olvidado)

Sabiendo esto, entendiendo bien estos conceptos, serás capaz de aprender cualquier lenguaje en menos de un mes.

Si alguien cree que falta algo, ya sabe ;).

Herramientas que deberías saber.

  1. IDE (El que quieras, pero aprende a exprimirlo al máximo)
  2. GIT al máximo, desde un commit, a un cherry pick.

Si alguien que falta algo, ya sabe (seguro que me he dejado algo)

Al grano, lo que todo Junior debería saber

Bueno, ahora, te has dado de bruces con la realidad, donde resulta que en la facultad, el bootcamp, o tu solo por tu cuenta, no has aprendido muchas cosas de las que se usan en el mundo real, ¿verdad?, aquí te dejo lo que a mi parecer todo Junior debería saber

Eres Junior: para lo bueno, y para lo malo

Como junior, bajo mi punto de vista tienes TRES obligaciones principalmente: APRENDER Y PREGUNTAR, que en realidad es lo mismo, pero así me da pié al juego de palabras para la tercera, que es APRENDER A PREGUNTAR, que parece algo muy sencillo, pero no lo es (lo dejo para otro post de hecho).

También tienes que tener clara cual va a ser tu formación dentro de la empresa, otra cosa fundamental para un Junior, si no te dicen claramente cual y como va a ser tu formación en la empresa… quizá sea mejor buscar otra empresa.

Otro caso en el que quizá sería mejor buscar otra empresa, es si tus responsabilidades no van a corde a tu experiencia, por ejemplo, si resulta que te llevas una bronca por que un cambio que has hecho ha llegado a producción….

Cosillas avanzadas que deberías aprender

Ahora programar empieza a ser más divertido… o no :), ahora te tocará aprender cosas Como

INGLÉS

Le dedico un apartado propio, si.

Lo primero, por que actualmente, el mercado de la programación es INTERNACIONAL, es absolutamente normal trabajar para una empresa del estranjero, desde cualquier parte del mundo (y cobrando el salario de ese pais)

Así que es importantísimo que aprendas si no sabes, y que LO PRACTIQUES si es que ya hablas inglés.

Yo trabajo constantemente en contacto con gente de otros paises, por lo que me comunico constantemente en inglés, y, a veces, alguien de mi equipo tiene que hacerlo también, y de verdad que me llevan los demonios, cuando por “costumbre”, aún hablando en inglés sueltan cosas como “jotason” o “güifi”.

No cometáis este error, que estamos en 2021, y ya en los 80 se decía lo importante que es hablar bien inglés.

programación Avanzada

Este es un breve resumen de lo que considero que deberías aprender, cada cosa daría al menos para un post completo, por lo que esto únicamente pretendo que sirva para que tengas de donde empezar a tirar del hilo

Patrones y Arquitecturas

Las más usadas a día de hoy, podríamos decir que son la hexagonal, o MVC (aunque empieza a estar en desuso), pero tampoco está de más que aprendas otras como las de capas, Cliente servidor, de evento…

Paradigmas

Lo mismo de antes, SOLID es la más extendida a día de hoy, pero por ejemplo, yo lo primero que aprendí fué KISS, que si te paras a pensarlo, en el fondo, no dista mucho de la S de Solid, de todo se puede aprender algo, por lo que mi recomendación siempre será que cuanta más teoria, mejor.

Refactorización

Cuando tengas cieta soltura, empezar a aprender a refactorizar, es de lo más importante que podrás aprender, yo aconsejo empezar a refactorizar cosas simples, normalmente, corrigiendo los errores típicos de Junior (implemetar clausulas de guarda, implementar TDA, y… demás cosas simples)

Testing

Sin entrar en TDD, acostumbrarse a escribir tests, debería ser obligado, aunque también hay que tener cuidado en no caer en el exceso, el testing es casi un arte. Y algo que debes dominar.

Guias de estilo

Parece una tontería, pero ceñirse a una guía de estilo (incluso cuando no nos gueste ese estilo determinado), simplifica mucho la tarea, e incluso chorradas como definir si tabuladores o espacios (la eterna y absurda “pelea”, que dejó de tener sentido hace mil años, a no ser que hablemos a la hora de teclear)

Otras cosas que deberías aprender.

Aquí os dejo algunas cosillas útiles, e incluso alguna molona, por si estoy dando mucho el tostón

Metodologías ágiles

Las más usadas son SCRUM y Kanban, y aquí tengo un conflicto… por que, en realidad, o al menos en mi experiencia, muy, muy, muy pocas empresas lo aplican correctamente, a la hora de la verdad, se limitan a meter tareas en sprints… y bueno, sobre esto, ya hablaré en otro post, pero deberías saber bien en que consiste.

(aunque en muchas compañias no se aplica bien, eso da para otro post)

Gestores de tareas y/o proyectos

En España (y posiblemente en medio mundo) Jira y el ecosistema de Atlasian es el más usado, verte unos tutoriales y aprender a exprimirlo, te simplificará bastante la vida.

Trello y Todoist también es relativamente frecuente encontrarlos en algunas empresas.

Linters

Los linters simplifican la vida de manera extraordinaria en muchos casos, como, por ejemplo, cuando eres como yo, y no estás agusto con la guia de estilo de la empresa, y te da la real gana seguir usando la tuya, entonces, simplemente configuras el linter para que adapte tu estilo al de la empresa, y listo.

MarkUp languajes

Lenguajes como MarkDown (y sus variantes), son útiles y ampliamente usados en muchísimas aplicaciones, y son un modo estupendo de escribir texto “bonito” de manera rápida y en cualquier sitio.

Formatos de serialización (y similares)

JSON deberías saberlo ya, pero si no es así, ya sabes. YAML se usa en cientos de aplicaciones, por no decir casi todas, como formato de configuraciones, por lo que lo cuelo por aquí, para no crear un apartrado especial.

  1. Integración continua

Sistemas de virtualización y/o contenedores

Esto he dudado en si incluirlo o no, pero … en realidad, te dediques a lo que te dediques, creo que saber usar VMWare, Docker, o Kubernetes, solo puede darte ventajas.

BONUS

Tenemos una profesión priviligiada, y, aunque soy consciente de que, quizá hablo desde una posición aún más privilegiada, me voy a permitir aconsejarte que elijas bien donde trabajar, y con quien, nuestra profesión nos permite, en mayor o menor medida, darnos el lujo de elegir, y deberías aprovecharlo.

Por ello, ten en cuenta las “miserias” normales de cualquier empresa de desarrollo.

Y, un primer paso para evitarlas es pregunta directamente sobre esto en las entrevistas, no tengas miedo.

Los EGOs

Para mi, uno de los mayores problemas del sector, son los EGOs, lidiar con alguien con mucho EGO siendo Junior, puede ser bastante infierno…

Cultura empresarial

Esto va a gustos, a unos les gusta una cultura como la de Google… a otros, como a mi, les parece horrorosa, infórmate bien antes de entrar.

Lecturas recomendadas

Te dejo un link a mis lecturas recomendadas (/Mis-lecturas-recomendadas), donde pretendo crear un pequeño repositorio, espero que colaborativo, de cosas interesantes.

Eso es todo, espero que te haya servido de ayuda, y, si tienes algún aporte que hacer, o alguna pregunta, no dudes en comentar,


  1. Pero con lo paquete que soy editando vídeo, sumado a mi enfermiza autoexigencia, tardo la vida en grabar, editar y publicar cualquier cosa, sobretodo por el tiempo que empleo en aprender a editar del modo que quiero. 

  2. Curiosamente, desde mi espectro, solo veo gente que ha decidido dedicarse, o empezar, por el FrontEnd web, me gustaría que me comentáseis otros casos, solo por simple curiosidad estadística, no me creo que el 100% haya elegido FrontEnd :) 

  3. Para los de piel fina, una vez más, hablo de quien no sabe nada de nada, si ya sabes, el trabajo de gente como los chicos de CodelyTV, es la caña. si 

  4. Obviamente hablo de Lenguajes de alto nivel, que son los que se emplean la mayor parte del tiempo 

This post is licensed under CC BY 4.0 by the author.

Mis recomendaciones, libros, blogs, películas, canales...

Como programar posts con Jekyll en GitHub Pages.

Loading comments from Disqus ...