Hace unas semanas sucedió algo especial: el 8 de octubre. Para todos los demás eso no significa nada, otro día normal. Para mí, por otro lado, fue mi cumpleaños de desarrollo de software.
A principios de 2014, mi mejor amigo me recomendó que comenzara a aprender programación porque vio que estaba triste y cansado de seguir una carrera que realmente no me gustaba. Comencé a aprender C por mi cuenta, experimente un poco con C++ y finalmente comencé a leer "C# In Depth" según la recomendación de mi amigo.
El 8 de octubre de 2014 me uní a un programa de capacitación en C# impartido por Accenture (lo llamaron su campo de entrenamiento), 1 mes después estaba trabajando como desarrollador de C# Junior y comenzó mi carrera en software. Mucho ha cambiado en los últimos 5 años, Microsoft se volvió de código abierto, JavaScript se convirtió en un lenguaje serio y no solo un juguete para sitios web, la programación funcional comenzó su regreso, toneladas de tecnologías han nacido y murieron ante nuestros ojos.
Muchas cosas también cambiaron en mi carrera: pasé de ser autodidacta a bootcamp, a cambiar de universidad para dedicarme a la ingeniería de software, abandonar y finalmente continuar la ruta autodidacta. Desde trabajar en contabilidad hasta convertirme en desarrollador de software, trabajar durante 3 años en mi país natal, Argentina, para buscar una vida mejor en un lugar del que no sabía nada, y mucho menos hablar el mismo idioma, la encantadora y lluviosa Bélgica.
Después de reflexionar sobre el camino que me trajo hasta aquí, no puedo evitar pensar en las buenas y malas decisiones que he tomado. Aquí hay algunas cosas que desearía haber sabido cuando comencé:
Las personas subestiman la importancia de las relaciones personales y la comunicación en el desarrollo de software. Algunos creen en esta idea de un desarrollador genio 10X que codeara 24 horas sin dormir y creará magia. Este es un sueño imposible. Somos excelentes en lo que hacemos cuando colaboramos entre nosotros, cuando desarrollamos relaciones humanas que nos permiten crear grandes piezas de software. Estas relaciones nos ayudan a crecer, aprender cosas nuevas (no siempre relacionadas con el software, pero igual de valiosas) e incluso progresar en nuestras carreras. Si no fuera por un amigo mío, probablemente sería un contador muy triste.
Siempre preferí los tutoriales y los cursos en línea, pero desafortunadamente no cubrirán el conocimiento fundamental que llevará sus habilidades de desarrollo a un nivel completamente nuevo. Durante los últimos 2 años he estado comiendo libros técnicos, "El programador pragmático", "Código completo", "Código limpio", "Refactorización", lo que sea, sólo desearía haber comenzado antes. Hay tanto conocimiento escrito por profesionales en la industria y es una pena no mirar un poco sus cerebros.
Este está relacionado con el anterior. Claro, hay un nuevo framework de JavaScript todos los días y la gente está luchando por ponerse al día. Bueno, no lo intentes. No es posible ni vale la pena. En lugar de enfocarse en los framework, enfócate en la arquitectura, el diseño de sistemas, incluso los paradigmas de software. Los lenguajes y los framework son solo herramientas que utilizamos para crear productos, cambian todo el tiempo, las técnicas que utilizamos para crear software evolucionan a un ritmo mucho más lento y pueden ayudarte a cambiar de un stack a otro con facilidad.
No puedo enfatizar lo suficiente lo importante que es esto. Claro, codeas 8 horas al día en su trabajo diario y podrías estar pensando, "¿por qué necesito codear en mi tiempo libre?", Bueno, hay una serie de razones.
Si eres un desarrollador autodidacta como yo, probablemente no quieras tener nada que ver con esto. Bueno, tendré que reventarte la burbuja. Aprender algunos conceptos clave hará que tu vida sea mucho más fácil para el aprendizaje futuro. No digo que los necesites para ser un desarrollador, pero después de conocerlos, se convertirán en los componentes básicos que utilizarás para aprender nuevas tecnologías y patrones. Pasé 2 años estudiando ciencias de la computación mientras trabajaba como desarrollador, no mucho, pero fue suficiente para ponerme en contacto con conceptos como álgebra booleana, grupos, grafos, árboles, algoritmos de clasificación, memoria dinámica y estática, punteros, teoría de autómatas; incluso diferentes paradigmas de programación, como orientado a objetos, lógico, funcional, y puedo recordar toneladas de momentos en los que pude asociar esos conceptos a cómo una nueva pieza de tecnología que estaba aprendiendo se encontraba implementada detrás de escena.
Si eres un desarrollador autodidacta, te recomendaría que leyeras The Imposter ‘s Handbook 1 & 2, cubren todo lo que puedas necesitar 😀
Después de escribir este artículo, me siento mucho mejor acerca de mi progreso, cometí algunos errores aquí y allá, tal vez no utilicé mi tiempo correctamente. Pero aprendí y continuaré aprendiendo sin importar qué, porque eso es lo más importante que quiero que recuerdes de esto, sigue aprendiendo y te prometo que todo estará bien.
Soy un developer autodidacta Argentino que actualmente vive y trabaja en España. Intento mejorar diariamente, mientras ayudo a otros a hacer lo mismo.
Seguir a @patferraggi