Skip to content

Latest commit

 

History

History
67 lines (34 loc) · 8.67 KB

modesto_san_juan_a.md

File metadata and controls

67 lines (34 loc) · 8.67 KB

Modesto San Juan Álvarez

1. BIO

Según dicen mis padres, con 5 años les daba mucho el coñazo para que me apuntasen a una academia a estudiar programación. Tan pesado debí ser que me apuntaron con 6 años porque, como diría mi abuela, era muy grandote y el profesor pensó que tenía más años.

Así que ahí estaba yo, con 6 años aprendiendo a prograbar en Basic delante de una pantalla de fósforo verde, enormemente confundido cada vez que tenía que escribir "INPUT" porque en el colegio me enseñaban que poner N antes de P era una falta de ortografía.

Después de BASIC hubo más lenguajes y, aunque mis primeros pinitos "profesionales" los hice con Clipper, considero que mi "bautismo profesional" fue con un lenguaje llamado Lingo, utilizado para programar CD's interactivos de esos que daban en las revistas o ponían en los "kioskos interactivos".

De aquellos tiempos con Lingo hasta ahora han pasado 20 años, muchas tecnologías y muchas experiencias, pero como esto es mi "BIO" y no "mis memorias", mejor no cuento mucho más ;)

Escribo de vez en cuando en mi blog y en twitter soy @msanjuan

2. INTRO

No tengo ni la menor idea de lo que hay que tener para ser buen desarrollador. Ni siquiera se realmente qué es un buen desarrollador, porque con el paso de los años hay muchas características que consideraba cualidades de buenos desarrolladores y que ahora considero que son todo lo contrario.

Lo que si que tengo claro que te tiene que gustar. Si no te gusta desarrollar software, busca otra profesión que te guste.

Te tiene que gustar porque esto no es como prepararte una oposición, sufrir durante un tiempo y luego ya está hecho. Como desarrollador tu fe en la profesión va a ser puesta a prueba constantemente, con nuevos retos, cosas que aprender, muchas que desaprender y todo eso, toda la vida. Visto así puede sonar tétrico y casi masoquista, pero la clave es que si te gusta, nunca te cansas. No al menos hasta el punto de dejarlo, puede que de vez en cuando necesites unas vacaciones ;)

Creo que uno de los aspectos clave de los que debemos darnos cuenta es que nosotros somos los dueños de nuestro camino como profesionales. Somos los responsables de trazarlo y de tratar de recorrerlo, no debemos incurrir en el error de responsabilizar a nuestras empresas. Una vez que asumimos que esa responsabilidad es nuestra, el primer paso está dado, ya no tenemos excusas.

Ojo, que tú seas el responsable no quiere decir que lo tengas que hacer sólo. Buscar "kindred spirits" es una de las mejores cosas que podrás hacer, porque no hay nada como compartir tu tiempo con personas que han decidido seguir el mismo camino que tú. Ya sabes, andar es más entretenido cuando lo haces acompañado. ¡Y qué mejor sitio para encontrar gente como tú que en las comunidades locales! ;)

3. PERFIL

Coincido con @gulnor y me considero desarrollador. Abandoné las equiquetas de analista, arquitecto, etc. Creo que hacen mucho daño y estoy convencido de que la arquitectura es una skill, no un rol.

Cuando escribo esto se lleva eso de ser full stack developer, pero la realidad es que lo de hacer de todo es algo que se ha hecho siempre. Aún recuerdo cuando me tocaba crimpar cables si había que instalar una máquina nueva o teníamos que montar un stand en el SIMO. O mucho antes, cuando había que pegarse de leches porque alguien había hecho la gracia y había quitado un finalizador BNC y la red se había ido al garete.

Creo que cuanto más puedas saber sobre todo lo que rodea al desarrollo de software, mejor. Eso no significa que pretendas buscar ser experto en todo, en todo momento. Pero que no te de miedo remangarte y convertirte en "experto eventual" si llegado el momento es necesario.

4. CAMINO DE APRENDIZAJE

Una vez que tienes claro que te gusta esto de desarrollar software, creo que el mejor consejo que puedo darte es que te leas el libreo de Apprenticeship Patterns

No te voy a hacer ningún spoiler, pero lo más probable es que ese libro te resulte rebelador respecto a cómo deberías enfocar tu aprendizaje.

Sobre el tema de estudiar una carrera o no, mi consejo es que si estás perdido y no tienes claro cómo enfocarlo, seguramente el abrigo de un plan formal de estudios te pueda venir bien. Seguir un camino autodidacta puede ser muy duro si no tienes la guía adecuada. En mi caso, no tengo estudios, mi camino de aprendizaje ha sido 100% autodidacta desde 1996.

Si eres joven ya haces tus pinitos programando y tienes la oportunidad, busca una empresa que tenga un programa de aprendices. Ojo, no un programa de becarios, hablo de un programa de aprendices tal como lo plantea el movimiento de Software Craftsmanship.

Si no tienes esa oportunidad, por lo que más quieras, intenta no caer en una empresa que te va a tratar como si fueras un pedazo de carne al peso.

La comunidad e internet son buenos sitio para conocer gente que comparta tu gusto por el desarrollo. Personalmente, creo que mis dos últimos trabajos han sido gracias a que he asomado la cabeza por eventos de la comunidad, así que no tengo más que buenas palabras. Eso si, no esperes convertirte en master del universo a base de ir a meetups, ese no es el objetivo. Para mi los eventos de comunidad tienen un 50% de componente de descubrimiento y un 50% de networking.

Una cosa que me parece importantísima es tener en cuenta el Shu Ha Ri. Aunque Fowler lo explica mucho mejor que yo, pero básicamente debes entender que aprender tiene un proceso y que tu actitud, objetivos y enfoque deben ser distintos en función del punto en el que te encuentres. No intentes inventar tus propias reglas cuando aún ni siquiera conoces las reglas existentes, no tiene sentido.

Y recuerda, asume que vas a ser el eterno aprendiz.

Parece que ahora el protocolo dicta que debería enumerar algunas cosas que considero imprescindibles, así que allá voy:

  • Aprende las bases. Para que te hagas una idea, la mayoría de las tecnologías que están haciendo hype durante los últimos tiempos, se basan en papers de los años 70 o incluso antes. Por poner un ejemplo, los dos últimos libros que he comprado (esta semana) son sobre fundamentos de diseño orientado a objetos, del año 1988.

  • Aprende los paradigmas. Programación orientada a objetos y programación funcional parecen enfrentados, pero el mejor favor que te puedes hacer es aprender cosas de ambos. Personalmente creo que es más fácil empezar con la programación orientada a objetos, pero los lenguajes van incorporando cada vez más aspectos de estilo funcional. Mi consejo es, no entres en la guerra, es absurdo y estéril. Limítate a aprender todo lo que puedas y ya está.

  • Bases de datos. Al igual que con los paradigmas, aprende las bases, van a ser muy importantes. Por supuesto, las bases de datos relacionales son las más habituales, pero no te limites únicamente a estas o intentarás resolverlo todo con una base de datos relacional.

  • Testing automático. Tests hacemos todos, aunque sean manuales, pero creo que una de las cosas que realmente marca la diferencia es cuando además puedes hacer testing automático. La aproximación al mundo de los tests puede resulta muy dura, intenta buscar comunidades locales que organicen katas, puede ser una buena forma de aprender de gente que ya desarrolla automatizando tests.

  • Cómo escribir bueno código. Escribir código lo puede hacer casi cualquiera, para escribir buen código es importante querer escribirlo y molestarse en buscar los mecanismos para hacerlo. Una vez que los buscamos, nos encontraremos sumergidos en el maravilloso mundo de la arquitectura y diseño de software. Recuerda, son skills, no roles! Este aspecto es muy importante incluso desde el principio.

  • Ser perezoso. Lo bueno de los programadores perezosos es que buscan formas de resolver los problemas sin complicarse la vida. Por supuesto, este punto es sólo una excusa para ser perezoso y recomendarte que mires el resto de puntos que ha escrito el resto de gente, así yo puedo dejar de repetirme y escribir menos ;)

Sólo hay una cosa que quiero añadir. Aunque esto me parece una iniciativa más que interesante, creo que soy incapaz de aportar algo realmente de valor sin saber a quién se lo estoy aportando. Si realmente quieres ayuda, dame un toque cuando me veas en un meetup, cuéntame tu vida y pídeme consejo. Seguramente no tenga ninguna solución para tí, pero es posible que te pueda contar alguna cagada que yo ya he cometido, algo es algo ;)