Universitarios
¿Quieres empezar una startup? Obtén financiación de Y Combinator.
Marzo de 2005
(Partes de este ensayo comenzaron como respuestas a estudiantes que me escribieron con preguntas.)
Recientemente he recibido varios correos electrónicos de estudiantes universitarios de informática preguntando qué hacer en la universidad. Puede que no sea la mejor fuente de consejos, porque fui estudiante de filosofía en la universidad. Pero tomé tantas clases de informática que la mayoría de los estudiantes de informática pensaban que yo lo era. Ciertamente era un hacker, al menos.
Hacking
¿Qué deberías hacer en la universidad para convertirte en un buen hacker? Hay dos cosas principales que puedes hacer: volverte muy bueno programando y aprender mucho sobre problemas específicos y geniales. Estos resultan ser equivalentes, porque cada uno te impulsa a hacer el otro.
La forma de ser bueno programando es trabajar (a) mucho (b) en problemas difíciles. Y la forma de hacer que trabajes en problemas difíciles es trabajar en algún proyecto muy interesante.
Lo más probable es que este proyecto no sea una tarea de clase. Mi amigo Robert aprendió mucho escribiendo software de red cuando era estudiante universitario. Uno de sus proyectos fue conectar Harvard a Arpanet; había sido uno de los nodos originales, pero en 1984 la conexión había muerto. [1] No solo este trabajo no era para una clase, sino que como pasó todo su tiempo en él y descuidó sus estudios, fue expulsado de la escuela por un año. [2] Al final todo se arregló, y ahora es profesor en el MIT. Pero probablemente serás más feliz si no llegas a ese extremo; le causó mucha preocupación en ese momento.
Otra forma de ser bueno programando es encontrar a otras personas que sean buenas en ello y aprender lo que saben. Los programadores tienden a clasificarse en tribus según el tipo de trabajo que hacen y las herramientas que usan, y algunas tribus son más inteligentes que otras. Mira a tu alrededor y ve en qué están trabajando las personas inteligentes; generalmente hay una razón.
Algunas de las personas más inteligentes a tu alrededor son profesores. Así que una forma de encontrar trabajo interesante es ofrecerse como voluntario como asistente de investigación. Los profesores están especialmente interesados en personas que pueden resolverles tediosos problemas de administración de sistemas, por lo que esa es una forma de entrar. Lo que temen son los inestables y los que inflan su currículum. Es demasiado común que un asistente resulte en un aumento neto de trabajo. Así que tienes que dejar claro que significarás una disminución neta.
No te desanimes si dicen que no. El rechazo es casi siempre menos personal de lo que el rechazado imagina. Simplemente pasa al siguiente. (Esto también se aplica a las citas).
Ten cuidado, porque aunque la mayoría de los profesores son inteligentes, no todos trabajan en cosas interesantes. Los profesores tienen que publicar resultados novedosos para avanzar en sus carreras, pero hay más competencia en áreas de investigación más interesantes. Así que lo que hacen los profesores menos ambiciosos es publicar una serie de artículos cuyas conclusiones son novedosas porque a nadie más le importan. Es mejor que evites estos.
Nunca trabajé como asistente de investigación, así que me siento un poco deshonesto recomendando esa vía. Aprendí a programar escribiendo cosas propias, particularmente intentando hacer ingeniería inversa de SHRDLU de Winograd. Estaba tan obsesionado con ese programa como una madre con un bebé nuevo.
Sean cuales sean las desventajas de trabajar por tu cuenta, la ventaja es que el proyecto es enteramente tuyo. Nunca tienes que comprometerte o pedir permiso a nadie, y si tienes una idea nueva puedes simplemente sentarte y empezar a implementarla.
En tus propios proyectos no tienes que preocuparte por la novedad (como los profesores) ni por la rentabilidad (como las empresas). Lo único que importa es lo difícil que sea técnicamente el proyecto, y eso no tiene correlación con la naturaleza de la aplicación. Las aplicaciones "serias" como las bases de datos a menudo son técnicamente triviales y aburridas (si alguna vez sufres de insomnio, intenta leer la literatura técnica sobre bases de datos) mientras que las aplicaciones "frívolas" como los juegos a menudo son muy sofisticadas. Estoy seguro de que hay empresas de juegos que trabajan en productos con más contenido intelectual que la investigación en los últimos nueve décimos de los departamentos de informática universitarios.
Si estuviera en la universidad ahora, probablemente trabajaría en gráficos: un juego en red, por ejemplo, o una herramienta para animación 3D. Cuando era estudiante universitario no había suficientes ciclos para hacer que los gráficos fueran interesantes, pero es difícil imaginar algo más divertido en lo que trabajar ahora.
Matemáticas
Cuando estaba en la universidad, muchos profesores creían (o al menos deseaban) que la informática fuera una rama de las matemáticas. Esta idea era más fuerte en Harvard, donde ni siquiera había una especialización en informática hasta la década de 1980; hasta entonces había que especializarse en matemáticas aplicadas. Pero era casi igual de malo en Cornell. Cuando le dije al temible Profesor Conway que estaba interesado en la IA (un tema candente entonces), me dijo que debería especializarme en matemáticas. Todavía no estoy seguro de si pensaba que la IA requería matemáticas, o si pensaba que la IA era una tontería y que especializarse en algo riguroso me curaría de ambiciones tan estúpidas.
De hecho, la cantidad de matemáticas que necesitas como hacker es mucho menor de lo que la mayoría de los departamentos universitarios admiten. No creo que necesites mucho más que matemáticas de secundaria más algunos conceptos de la teoría de la computación. (Tienes que saber qué es un algoritmo n^2 si quieres evitar escribirlos). A menos que planees escribir aplicaciones matemáticas, por supuesto. La robótica, por ejemplo, es toda matemáticas.
Pero aunque literalmente no necesites matemáticas para la mayoría de los tipos de hacking, en el sentido de conocer 1001 trucos para diferenciar fórmulas, las matemáticas valen mucho la pena estudiarlas por sí mismas. Es una valiosa fuente de metáforas para casi cualquier tipo de trabajo.[3] Desearía haber estudiado más matemáticas en la universidad por esa razón.
Como mucha gente, fui maltratado matemáticamente de niño. Aprendí a pensar en las matemáticas como una colección de fórmulas que no eran ni hermosas ni tenían relación con mi vida (a pesar de los intentos de traducirlas a "problemas de palabras"), sino que debían memorizarse para obtener buenos resultados en los exámenes.
Una de las cosas más valiosas que podrías hacer en la universidad sería aprender de qué tratan realmente las matemáticas. Esto puede no ser fácil, porque muchos matemáticos buenos son malos profesores. Y aunque hay muchos libros populares sobre matemáticas, pocos parecen buenos. Los mejores que se me ocurren son los de W. W. Sawyer. Y por supuesto, Euclides. [4]
Todo
Thomas Huxley dijo: "Intenta aprender algo sobre todo y todo sobre algo". La mayoría de las universidades apuntan a este ideal.
Pero ¿qué es todo? Para mí significa todo lo que la gente aprende en el curso de trabajar honestamente en problemas difíciles. Todo ese trabajo tiende a estar relacionado, en que las ideas y técnicas de un campo a menudo se pueden trasplantar con éxito a otros. Incluso a otros que parecen bastante distantes. Por ejemplo, escribo ensayos de la misma manera que escribo software: me siento y saco una versión 1 mediocre lo más rápido que puedo escribir, luego paso varias semanas reescribiéndola.
Trabajar en problemas difíciles no es, por sí solo, suficiente. Los alquimistas medievales trabajaban en un problema difícil, pero su enfoque era tan falso que había poco que aprender de su estudio, excepto posiblemente sobre la capacidad de las personas para autoengañarse. Desafortunadamente, el tipo de IA que intentaba aprender en la universidad tenía el mismo defecto: un problema muy difícil, abordado alegremente con técnicas desesperadamente inadecuadas. ¿Audaz? Más cerca de ser fraudulento.
Las ciencias sociales también son bastante falsas, porque están muy influenciadas por las modas intelectuales. Si un físico se encontrara con un colega de hace 100 años, podría enseñarle algunas cosas nuevas; si un psicólogo se encontrara con un colega de hace 100 años, simplemente tendrían una discusión ideológica. Sí, por supuesto, aprenderás algo al tomar una clase de psicología. El punto es que aprenderás más al tomar una clase en otro departamento.
Los departamentos que valen la pena, en mi opinión, son matemáticas, las ciencias duras, ingeniería, historia (especialmente historia económica y social, y la historia de la ciencia), arquitectura y los clásicos. Un curso introductorio de historia del arte puede valer la pena. La literatura moderna es importante, pero la forma de aprender sobre ella es simplemente leer. No sé lo suficiente sobre música para decirlo.
Puedes saltarte las ciencias sociales, la filosofía y los diversos departamentos creados recientemente en respuesta a presiones políticas. Muchos de estos campos hablan de problemas importantes, ciertamente. Pero la forma en que hablan de ellos es inútil. Por ejemplo, la filosofía habla, entre otras cosas, de nuestras obligaciones mutuas; pero puedes aprender más sobre esto de una abuela sabia o de E. B. White que de un filósofo académico.
Hablo aquí por experiencia. Probablemente debería haberme ofendido cuando se rieron de Clinton por decir "Depende de lo que signifique la palabra 'es'". Tomé unas cinco clases en la universidad sobre qué significa la palabra "es".
Otra forma de averiguar qué campos valen la pena estudiar es crear el gráfico de abandonos. Por ejemplo, conozco a muchas personas que cambiaron de matemáticas a informática porque encontraron las matemáticas demasiado difíciles, y a nadie que hiciera lo contrario. La gente no hace cosas difíciles gratuitamente; nadie trabajará en un problema más difícil a menos que sea proporcionalmente (o al menos log(n)) más gratificante. Así que probablemente las matemáticas valgan más la pena que la informática. Mediante comparaciones similares, puedes hacer un gráfico de todos los departamentos de una universidad. En la parte inferior encontrarás las materias con menor contenido intelectual.
Si usas este método, obtendrás aproximadamente la misma respuesta que acabo de dar.
Los cursos de idiomas son una anomalía. Creo que se consideran más bien actividades extracurriculares, como clases de cerámica. Serían mucho más útiles si se combinaran con tiempo viviendo en un país donde se habla el idioma. Por capricho, estudié árabe como estudiante de primer año. Fue mucho trabajo, y los únicos beneficios duraderos fueron una extraña habilidad para identificar raíces semíticas y algunas ideas sobre cómo las personas reconocen las palabras.
Las clases de arte de estudio y escritura creativa son comodines. Por lo general, no se enseña mucho: simplemente trabajas (o no trabajas) en lo que quieras, y luego te sientas a ofrecer "críticas" de las creaciones de los demás bajo la vaga supervisión del profesor. Pero la escritura y el arte son ambos problemas muy difíciles en los que (algunas) personas trabajan honestamente, por lo que valen la pena, especialmente si puedes encontrar un buen profesor.
Trabajos
Por supuesto, los estudiantes universitarios tienen que pensar en más que solo aprender. También hay dos problemas prácticos a considerar: trabajos y escuela de posgrado.
En teoría, una educación liberal no debe proporcionar formación laboral. Pero todo el mundo sabe que esto es un poco una mentira. Los hackers de todas las universidades aprenden habilidades prácticas, y no por accidente.
Lo que deberías aprender para conseguir un trabajo depende del tipo que quieras. Si quieres trabajar en una gran empresa, aprende a hackear Blub en Windows. Si quieres trabajar en una pequeña empresa o laboratorio de investigación genial, te irá mejor aprendiendo Ruby en Linux. Y si quieres empezar tu propia empresa, lo que creo que será cada vez más común, domina las herramientas más potentes que puedas encontrar, porque estarás en una carrera contra tus competidores, y ellas serán tu caballo.
No hay una correlación directa entre las habilidades que deberías aprender en la universidad y las que usarás en un trabajo. Deberías apuntar un poco más alto en la universidad.
En los entrenamientos, un jugador de fútbol americano puede levantar 300 libras en press de banca, aunque nunca tenga que ejercer tanta fuerza en el transcurso de un partido. Del mismo modo, si tus profesores intentan que aprendas cosas más avanzadas de las que necesitarás en un trabajo, puede que no sea solo porque son académicos, ajenos al mundo real. Pueden estar intentando que levantes pesas con tu cerebro.
Los programas que escribes en las clases difieren en tres aspectos críticos de los que escribirás en el mundo real: son pequeños; puedes empezar desde cero; y el problema suele ser artificial y predeterminado. En el mundo real, los programas son más grandes, tienden a involucrar código existente y a menudo requieren que descubras cuál es el problema antes de poder resolverlo.
No tienes que esperar a dejar (o siquiera entrar) la universidad para aprender estas habilidades. Si quieres aprender a lidiar con código existente, por ejemplo, puedes contribuir a proyectos de código abierto. El tipo de empleador para el que quieras trabajar estará tan impresionado por eso como por las buenas calificaciones en las tareas de clase.
En los proyectos de código abierto existentes no practicas mucho la tercera habilidad, la de decidir qué problemas resolver. Pero no hay nada que te impida empezar tus propios proyectos. Y los buenos empleadores se impresionarán aún más con eso.
¿Qué tipo de problema deberías intentar resolver? Una forma de responder es preguntar qué necesitas como usuario. Por ejemplo, me topé con un buen algoritmo para filtrar spam porque quería dejar de recibir spam. Ahora, lo que desearía tener es un lector de correo que de alguna manera impidiera que mi bandeja de entrada se llenara. Tiendo a usar mi bandeja de entrada como una lista de tareas pendientes. Pero eso es como usar un destornillador para abrir botellas; lo que uno realmente quiere es un abridor de botellas.
Escuela de Posgrado
¿Y la escuela de posgrado? ¿Deberías ir? ¿Y cómo se entra en una buena?
En principio, la escuela de posgrado es formación profesional en investigación, y no deberías ir a menos que quieras dedicarte a la investigación como carrera. Y sin embargo, la mitad de las personas que obtienen un doctorado en informática no se dedican a la investigación. Yo no fui a la escuela de posgrado para convertirme en profesor. Fui porque quería aprender más.
Así que si estás principalmente interesado en el hacking y vas a la escuela de posgrado, encontrarás a muchas otras personas que están igualmente fuera de su elemento. Y si la mitad de las personas a tu alrededor están fuera de su elemento de la misma manera que tú, ¿estás realmente fuera de tu elemento?
Hay un problema fundamental en la "informática", y surge en situaciones como esta. Nadie está seguro de lo que se supone que es la "investigación". Gran parte de la investigación es hacking que tuvo que ser empaquetado en forma de un artículo académico para producir un quantum más de publicación.
Así que es un poco engañoso preguntar si te sentirás cómodo en la escuela de posgrado, porque muy pocas personas se sienten del todo cómodas en informática. Todo el campo se siente incómodo en su propia piel. Así que el hecho de que estés principalmente interesado en el hacking no debería disuadirte de ir a la escuela de posgrado. Solo ten en cuenta que tendrás que hacer muchas cosas que no te gustan.
Lo número uno será tu disertación. Casi todo el mundo odia su disertación cuando termina. El proceso inherentemente tiende a producir un resultado desagradable, como un pastel hecho de harina integral y horneado durante doce horas. Pocas disertaciones se leen con placer, especialmente por sus autores.
Pero miles antes que tú han sufrido escribiendo una disertación. Y aparte de eso, la escuela de posgrado está cerca del paraíso. Mucha gente la recuerda como la época más feliz de sus vidas. Y casi todos los demás, incluyéndome a mí, la recuerdan como un período que habría sido así, si no hubieran tenido que escribir una disertación. [5]
El peligro con la escuela de posgrado es que no ves la parte aterradora de antemano. Los programas de doctorado comienzan como la universidad parte 2, con varios años de clases. Así que cuando te enfrentas al horror de escribir una disertación, ya llevas varios años dentro. Si renuncias ahora, serás un desertor de la escuela de posgrado, y probablemente no te gustará esa idea. Cuando Robert fue expulsado de la escuela de posgrado por escribir el gusano de Internet de 1988, lo envidié enormemente por encontrar una salida sin el estigma del fracaso.
En general, la escuela de posgrado es probablemente mejor que la mayoría de las alternativas. Conoces a mucha gente inteligente, y tu sombría procrastinación al menos será un poderoso vínculo común. Y por supuesto, tienes un doctorado al final. Me olvidé de eso. Supongo que eso vale algo.
La mayor ventaja de un doctorado (además de ser la tarjeta sindical de la academia, por supuesto) puede ser que te da cierta confianza básica. Por ejemplo, los termostatos Honeywell de mi casa tienen la interfaz de usuario más atroz. Mi madre, que tiene el mismo modelo, dedicó diligentemente un día a leer el manual de usuario para aprender a operarlo. Ella asumió que el problema era con ella. Pero yo puedo pensar para mí: "Si alguien con un doctorado en informática no puede entender este termostato, debe estar mal diseñado".
Si todavía quieres ir a la escuela de posgrado después de esta recomendación equívoca, puedo darte consejos sólidos sobre cómo entrar. Muchos de mis amigos son ahora profesores de informática, así que tengo la historia interna sobre admisiones. Es muy diferente de la universidad. En la mayoría de las universidades, los oficiales de admisiones deciden quién entra. Para los programas de doctorado, los profesores lo hacen. Y tratan de hacerlo bien, porque las personas que admiten van a trabajar para ellos.
Aparentemente, solo las recomendaciones realmente importan en las mejores escuelas. Los exámenes estandarizados no cuentan para nada, y las calificaciones para poco. El ensayo es principalmente una oportunidad para descalificarte diciendo algo estúpido. Lo único en lo que los profesores confían son las recomendaciones, preferiblemente de personas que conocen. [6]
Así que si quieres entrar en un programa de doctorado, la clave es impresionar a tus profesores. Y por mis amigos que son profesores, sé lo que los impresiona: no solo intentar impresionarlos. No les impresionan los estudiantes que obtienen buenas calificaciones o que quieren ser sus asistentes de investigación para poder entrar en la escuela de posgrado. Les impresionan los estudiantes que obtienen buenas calificaciones y quieren ser sus asistentes de investigación porque están genuinamente interesados en el tema.
Así que lo mejor que puedes hacer en la universidad, ya sea que quieras entrar en la escuela de posgrado o simplemente ser bueno en hacking, es averiguar qué te gusta de verdad. Es difícil engañar a los profesores para que te dejen entrar en la escuela de posgrado, e imposible engañar a los problemas para que te dejen resolverlos. La universidad es donde dejar de fingir funciona. A partir de aquí, a menos que quieras ir a trabajar para una gran empresa, lo que es como volver a la secundaria, la única forma de avanzar es haciendo lo que amas.
Notas
[1] Nadie pareció importarle, lo que demuestra lo poco importante que era Arpanet (que se convirtió en Internet) hasta 1984.
[2] Por eso, cuando me convertí en empleador, no me importaban las GPA. De hecho, buscábamos activamente personas que habían sido expulsadas de la escuela. Una vez pusimos carteles alrededor de Harvard diciendo: "¿Acabas de ser expulsado por ir mal en tus clases porque pasaste todo tu tiempo trabajando en tu propio proyecto? ¡Ven a trabajar con nosotros!". Logramos encontrar a un chico que lo había hecho, y era un gran hacker.
Cuando Harvard expulsa a los estudiantes universitarios por un año, tienen que conseguir trabajo. La idea es mostrarles lo horrible que es el mundo real, para que entiendan lo afortunados que son de estar en la universidad. Este plan salió mal con el chico que vino a trabajar con nosotros, porque se divirtió más de lo que se había divertido en la escuela, y ganó más ese año con opciones sobre acciones de lo que cualquiera de sus profesores ganaba en salario. Así que en lugar de regresar arrepentido al final del año, se tomó otro año libre y se fue a Europa. Finalmente se graduó a los 26 años.
[3] Eric Raymond dice que las mejores metáforas para los hackers están en la teoría de conjuntos, la combinatoria y la teoría de grafos.
Trevor Blackwell te recuerda que tomes clases de matemáticas destinadas a estudiantes de matemáticas. "Las clases de 'matemáticas para ingenieros' apestaban enormemente. De hecho, cualquier cosa de 'x para ingenieros' apesta, donde x incluye matemáticas, derecho, escritura y diseño visual."
[4] Otros libros muy recomendados: What is Mathematics? , de Courant y Robbins; Geometry and the Imagination de Hilbert y Cohn-Vossen. Y para aquellos interesados en diseño gráfico, Euclides de Byrne.
[5] Si quisieras tener la vida perfecta, lo que deberías hacer sería ir a la escuela de posgrado, escribir en secreto tu disertación en el primer o segundo año, y luego simplemente disfrutar durante los próximos tres años, entregando un capítulo a la vez. Esta perspectiva hará que los estudiantes de posgrado se les haga la boca agua, pero no conozco a nadie que haya tenido la disciplina para lograrlo.
[6] Un amigo profesor dice que entre el 15 y el 20% de los estudiantes de posgrado que admiten cada año son "apuestas arriesgadas". Pero lo que él entiende por apuestas arriesgadas son personas cuyas solicitudes son perfectas en todos los sentidos, excepto que nadie en el comité de admisiones conoce a los profesores que escribieron las recomendaciones.
Así que si quieres entrar en un programa de doctorado en ciencias, necesitas ir a la universidad en algún lugar con profesores de investigación reales. De lo contrario, parecerás una apuesta arriesgada para los comités de admisión, sin importar lo bueno que seas.
Lo que implica una consecuencia sorprendente pero aparentemente inevitable: los pequeños colegios de artes liberales están condenados. La mayoría de los estudiantes de secundaria inteligentes al menos consideran estudiar ciencias, incluso si finalmente eligen no hacerlo. ¿Por qué ir a una universidad que limita sus opciones?
Gracias a Trevor Blackwell, Alex Lewin, Jessica Livingston, Robert Morris, Eric Raymond y varios profesores de informática anónimos por leer borradores de esto, y a los estudiantes cuyas preguntas lo iniciaron.