¿Qué habilidades tienen los programadores autodidactas que otros no tienen?

Soy autodidacta y he estado codificando en varios idiomas desde que tenía 5 años, y solo más tarde en mi vida (bueno, a la edad normal) obtuve un título en ciencias de la computación; Así que tengo alguna perspectiva sobre los méritos de ser autodidacta frente a estudiar en la universidad. Como no deseo sonar como si estuviera tocando mi propia trompeta, diría que algunas de las habilidades que poseo que los programadores enseñados en la universidad tienden a no haber desarrollado al mismo nivel son:

  • Buen juicio técnico y fuertes intuiciones sobre la mejor manera de hacer las cosas. Esta intuición surge de piratear día tras día en un número considerable de proyectos de mascotas durante un período de tiempo muy largo, por lo que se deriva de la experiencia del mundo real, algo que muchos codificadores recién salidos de la universidad tienden a carecer. Es como aprender un segundo idioma: si comienzas joven, tu cerebro puede asimilar la estructura y la estética del idioma de una manera que aquellos que comenzaron más tarde a menudo no lo hacen. También estoy íntimamente familiarizado con la historia del desarrollo de computadoras y lenguajes de programación: mi padre programó en Fortran en tarjetas perforadas, crecí escribiendo programas BASIC y ensambladores en una computadora con 16 KB de RAM, y con el tiempo he observado cómo funciona el campo. ha evolucionado y ha desarrollado una comprensión de las razones por las cuales evolucionó de la manera en que lo ha hecho.
  • La capacidad de aprender nuevos idiomas, habilidades y prácticas de codificación de forma rápida y sin esfuerzo. Seguí programando mucho cuando era niño porque disfruté aprendiendo a construir cosas, y la llama de esa pasión innata ha seguido ardiendo en mi edad adulta. No necesito presiones externas como calificaciones o exámenes para estar motivado para aprender. Cuando se trata de cualquier cosa y todo lo técnico, dado un libro, manual de referencia o cualquier otra cosa que pueda encontrar, absorberé feliz y sin esfuerzo la información, generalmente con una expresión curiosa y fascinada en mi rostro.
  • Pasión, iniciativa y la capacidad de motivarme sin tener que pensar demasiado en ello. Construir cosas que realizan alguna tarea útil es mi estado natural de ser, no es algo que alguna vez necesité que me enseñaran a hacer. Si no tuviera un trabajo como ingeniero de software, ni yo ni nadie más podríamos evitar que escribiera software. Sigo trabajando en proyectos incluso después de las horas regulares de trabajo, porque el placer que obtengo de aprender cosas nuevas y hacer que las cosas funcionen es lo que me motivó a aprender tanto sobre computadoras, y nunca tuve que estar motivado por los exámenes, los GPA, la presión de grupo, u otros factores que a veces pueden ser los principales motivadores de los programadores que imparten cursos.
  • Independencia y la capacidad de trabajar sin necesidad de pedir ayuda. Después de todo, cuando era niño no tenía mucho apoyo, aparte de los libros, y ocasionales sugerencias de mi padre, que tuvo cuidado de dejarme ser lo más independiente posible. Esta independencia me predispone hacia papeles principales. Sin embargo, también puede ser una desventaja en ocasiones en términos de trabajo en red y crecimiento profesional, porque la codificación como parte de un equipo es algo que solo comencé a hacer más adelante en mi vida.
  • Saludable humildad. Enseñarte a ti mismo es difícil. No tienes a nadie que te explique cosas cuando no entiendes algo. Siempre te enfrentas y tienes que luchar con las limitaciones de tu propio conocimiento y comprensión. Nunca te haces ilusiones sobre tus habilidades, porque eres constantemente consciente de cuánto fracaso y lucha llevaron a su desarrollo, y cuánto aún no sabes. Del mismo modo, nunca se tiene la sensación embriagadora de “Fui educado en la universidad X” que puede dar a algunos ingenieros una ventaja más aguda.
  • Saludable disgusto por el proceso excesivo y respeto por el pensamiento del “Producto mínimo viable”. La mayoría de las veces no estoy contaminado por lo que me parecen cantidades excesivas de procesos que tienden a enseñarse en la clase de ingeniería tradicional. Es poco probable que me atrape escribiendo esa prueba unitaria innecesaria para un método que no hace nada más que escribir un valor en el campo de un objeto, o que verifica un método que siempre devuelve verdadero, nunca devuelve falso, por una creencia ingenua e incuestionable de que siempre es “lo correcto”. Por otro lado, es probable que me encuentre escribiendo pruebas unitarias donde mi juicio y experiencia me dicen que es probable que atrape o evite un error, y el conjunto de ocasiones en las que elijo hacerlo tienden a diferir bastante de manera más convencional. Ingenieros enseñados. También es probable que me encuentre frustrado por el celo religioso que los programadores no autodidactas a veces exudan cuando se trata de detalles no solo de pruebas unitarias, sino también de estilo sintáctico; Realmente no me importa si rompes tu línea antes o después del operador binario: puedo leer ambos con la misma rapidez y, por favor, construyamos un producto bien probado que funcione tan rápido como podamos. Este sentido de perspectiva se desarrolló al trabajar en muchos proyectos grandes, autoiniciados e individuales: simplemente no tiene tiempo para preocuparse por cruzar sus t si está construyendo algo solo; si suda las pequeñas cosas, nunca termines, pero si descuidas las cosas importantes, nunca tendrás éxito.

La capacidad de resolver problemas de formas innovadoras. Debido a que los desarrolladores autodidactas no están limitados por lo que se les ha enseñado como la solución correcta o la mejor para un problema, pueden innovar y encontrar soluciones más creativas.

Además, según mi experiencia, los desarrolladores autodidactas están más abiertos a comentarios negativos porque reconocen que la mejor manera de aprender es escuchando en lugar de citar a alguna autoridad que generalmente es solo un desarrollador marginal que tiene un título (como TA).

La capacidad de aprender cosas por sí mismos. Puede que no parezca mucho, pero va un largo camino. Si eres autodidacta, espero que tengas mejores habilidades de investigación y la capacidad de resolver las cosas por tu cuenta. Si no tienes estas habilidades, probablemente no puedas enseñarte a ti mismo.