¿Pueden los desarrolladores de última generación ponerse al día con los niños genios? Si no empezaste a programar hasta los 20 años, ¿puedes olvidarte de competir con estos tipos?

Infierno si

No se desanime solo porque hay programadores de 17 (y 12-) años que dan patadas.

Este es un campo no lineal: se reinicia y se reinventa cada 5 años aproximadamente. Eso es lo que tiene de bueno.

He estado en eso por 30 años. Cuando empecé, había BASIC, pero era demasiado lento para los juegos (lo que todos queríamos), así que tenías que escribir el código de ensamblaje. Y escribe tus propias herramientas (ensamblador) para hacerlo.

Luego fui a trabajar para los militares, y allí estaba FORTRAN en los mainframes. Así que tuve que aprender eso. Pero algo nuevo estaba sucediendo, todas estas estaciones de trabajo Sun, conectadas en red, tenían más poder de procesamiento total que los mainframes. Los programaste en C.

Tenía 20 años, tuve que desechar todo lo que sabía sobre BASIC y FORTRAN y aprender C. X-Windows. La generación anterior, que se burló de nuestras estaciones de trabajo gráficas como “máquinas de dibujos animados” (cita real) se quedó en el polvo.

¡Objetos! Luego vino la programación orientada a objetos Screw C, ahora todo se trata de C ++. Lo que arrancó la mitad de C y se dejó caer 10 veces más “++” para admitir objetos.

Luego los soviéticos dieron por terminada la guerra fría, así que me mudé a Cambridge y aprendí de algunas personas súper inteligentes del MIT y Harvard. Atornille objetos, la programación funcional estaba donde está si quiere hacer IA. ¡Ceceo! ¡Esquema!

Bromeé con un compañero de trabajo, “en programación, no hay nada tan paralizante como la experiencia”.

Entonces sucedió el frigging internet . Hay un lenguaje de scripting en el servidor, otro en la base de datos, otro en el navegador.

Algunas (y no muchas) ideas subyacentes se llevan adelante: estructuras de datos, bucles, etc. Pero el 95% de las cosas reales que tienes que aprender, tienes que volver a aprender cada vez que llega una ola.

Lo que queda es un enfoque curioso y lúdico: solo salte, no te preocupes por cosas como ‘soy lo suficientemente inteligente’, solo construye algo, tal vez una aplicación de Android o un sitio web.

La aplicación de Android sería Java, para una aplicación web sugeriría Python en el servidor y algo de Javascript en el cliente.

Definitivamente obtenga una introducción al libro de programación (el lenguaje no importa, Java o Python es genial, así que puede manejar los conceptos básicos de programación).

Si terminas el libro, lo estás haciendo mal.

Un par de pensamientos:

1. La programación de software no es como los Juegos Olímpicos. No estás compitiendo directamente con la gente para obtener la medalla de oro en el desarrollo de Java. La programación tiende a ser mucho más sobre la colaboración, donde la suma es (idealmente) mayor que las partes.

2. La experiencia es excelente, pero no subestime la inteligencia pura y la resolución de problemas. He estado entrevistando a un grupo de ingenieros de software recientemente, y puede haber una gran cantidad de inteligencia entre dos personas cuyos currículos son casi iguales.

3. A pesar de que un grupo de personas comenzó a escribir código cuando era niño, y lo han estado haciendo durante años, eso no significa necesariamente que hayan pasado todo ese tiempo perfeccionando y perfeccionando su arte. Aprendí a tocar el piano cuando tenía 12 años, pero nunca seguí la música con pasión y vigor, así que todavía no soy particularmente bueno en eso.

Entonces, si está preguntando si será mejor programador que una persona súper inteligente que aprendió su primer idioma a los 8 años y que ha estado aprendiendo apasionadamente desde entonces, entonces la respuesta es probablemente no. Pero, francamente, eso es probablemente un pequeño porcentaje de los programadores de software que hay.

Si la programación es algo que te inspira y te compromete, entonces hazlo. Creo que una pregunta mejor es “¿Qué puedo crear con las habilidades que tengo?” en lugar de “¿hay personas por ahí que sean mejores en esto que yo?”

Sí, y la solución es especializarse . Si se compara con whiz-kids en términos de la cantidad total de cualquier conocimiento de programación, nunca podrá ponerse al día. Sin embargo, si toma cualquier subconjunto del conocimiento (por ejemplo, JavaScript), existe una gran posibilidad de que los desarrolladores que están floreciendo tarde sean tan buenos como los niños genios, simplemente debido a los rendimientos decrecientes del aprendizaje.

Uno podría tener dos contraargumentos:

  1. Es posible que no pueda ponerse al día con alguien que comenzó temprano y se ha especializado en X durante el tiempo que ha estado programando. Esto es cierto, pero esas personas simplemente terminan siendo uno de esos “gurús” de esa tecnología. Esas personas terminarán gastando más tiempo mejorando esa tecnología en lugar de producir algo usando esa tecnología. Entonces, mientras esté preocupado por su producción, no debería preocuparse por este caso.
  2. Aprender muchas tecnologías te ayudará a especializarte. Por ejemplo, si desea ser bueno en JavaScript, es útil conocer otras tecnologías de front-end (como Cocoa, por ejemplo) porque le brindará una perspectiva más amplia. Eso es cierto, pero aprender de forma amplia y superficial no toma tanto tiempo como crees.

Si tuviera que elegir algo para especializarse a partir de hoy, elegiría JavaScript , como dice esta persona: http: //webcache.googleuserconten … (originalmente http://thenerdary.net/articles/e … pero el sitio no estaba disponible ).