LICENCIATURA
OriginalMarch 2005
(Partes de este ensayo comenzaron como respuestas a estudiantes que me escribieron con preguntas.)
Recientemente he recibido varios correos electrónicos de estudiantes 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 era uno. 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 en programación y aprender mucho sobre problemas específicos y interesantes. Resulta que estas son equivalentes, porque cada una te impulsa a hacer la otra.
La forma de ser bueno en programación es trabajar (a) mucho (b) en problemas difíciles. Y la forma de obligarte a trabajar en problemas difíciles es trabajar en algún proyecto muy atractivo.
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. Uno de sus proyectos fue conectar Harvard a la Arpanet; había sido uno de los nodos originales, pero para 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 ello y descuidó sus estudios, fue expulsado de la escuela durante un año. [2] Al final todo se equilibró, y ahora es profesor en 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 en programación es encontrar a otras personas que sean buenas en ello y aprender lo que saben. Los programadores tienden a organizarse en tribus según el tipo de trabajo que hacen y las herramientas que utilizan, y algunas tribus son más inteligentes que otras. Mira a tu alrededor y observa en qué parecen estar 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 ofrecerte como asistente de investigación. Los profesores están especialmente interesados en personas que pueden resolver problemas tediosos de administración de sistemas para ellos, así que esa es una forma de abrirte una puerta. Lo que temen son los flojos y los que inflan sus currículums. 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 casi siempre es menos personal de lo que imagina el rechazado. 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 producir una serie de artículos cuyas conclusiones son novedosas porque a nadie más le importan. Es mejor evitar estos.
Nunca trabajé como asistente de investigación, así que me siento un poco deshonesto recomendando esa ruta. Aprendí a programar escribiendo cosas por mi cuenta, particularmente tratando de desensamblar el SHRDLU de Winograd. Estaba tan obsesionado con ese programa como una madre con un nuevo bebé.
Cualesquiera que sean las desventajas de trabajar solo, la ventaja es que el proyecto es completamente tuyo. Nunca tienes que comprometerte o pedir permiso a nadie, y si tienes una nueva idea, simplemente puedes sentarte y comenzar a implementarla.
En tus propios proyectos no tienes que preocuparte por la novedad (como lo hacen los profesores) o la rentabilidad (como lo hacen las empresas). Lo único que importa es cuán difícil es el proyecto técnicamente, y eso no tiene correlación con la naturaleza de la aplicación. Las aplicaciones "serias" como las bases de datos son a menudo triviales y aburridas técnicamente (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 son a menudo muy sofisticadas. Estoy seguro de que hay empresas de juegos trabajando en productos con más contenido intelectual que la investigación en los últimos nueve décimos de los departamentos de informática de las universidades.
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, no había suficientes ciclos disponibles 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 de los profesores creían (o al menos deseaban) que la informática era una rama de las matemáticas. Esta idea era más fuerte en Harvard, donde ni siquiera había una licenciatura en informática hasta la década de 1980; hasta entonces, uno tení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 en ese momento), me dijo que debería especializarme en matemáticas. Aún 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 especializarme en algo riguroso me curaría de tales ambiciones 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 les gusta admitir. 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 no necesitas literalmente 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 estudiar por sí mismas. Es una fuente valiosa de metáforas para casi cualquier tipo de trabajo.[3] Ojalá hubiera estudiado más matemáticas en la universidad por esa razón.
Como muchas personas, fui abusado matemáticamente de niño. Aprendí a pensar en las matemáticas como una colección de fórmulas que no eran hermosas ni tenían relación con mi vida (a pesar de los intentos de traducirlas en "problemas de palabras"), pero que tenían que ser memorizadas para hacerlo bien en los exámenes.
Una de las cosas más valiosas que podrías hacer en la universidad sería aprender de qué se trata realmente las matemáticas. Esto puede no ser fácil, porque muchos buenos matemáticos 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 aspiran a este ideal.
Pero, ¿qué es todo? Para mí significa todo lo que las personas aprenden en el transcurso de trabajar honestamente en problemas difíciles. Todo ese trabajo tiende a estar relacionado, en el sentido de que las ideas y técnicas de un campo a menudo pueden ser trasplantadas 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 tan rápido como puedo escribir, luego paso varias semanas reescribiéndola.
Trabajar en problemas difíciles no es, por sí mismo, suficiente. Los alquimistas medievales estaban trabajando 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 engañarse a sí mismas. 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 lo fraudulento.
Las ciencias sociales también son bastante falsas, porque están tan influenciadas por 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, solo entrarían en 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 de introducción a la historia del arte puede ser valioso. La literatura moderna es importante, pero la forma de aprender sobre ella es simplemente leer. No sé lo suficiente sobre música para opinar.
Puedes omitir las ciencias sociales, la filosofía y los diversos departamentos creados recientemente en respuesta a presiones políticas. Muchos de estos campos hablan sobre problemas importantes, ciertamente. Pero la forma en que hablan de ellos es inútil. Por ejemplo, la filosofía habla, entre otras cosas, sobre nuestras obligaciones hacia los demás; 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í desde la experiencia. Probablemente debería haberme ofendido cuando la gente se rió de Clinton por decir "Depende de lo que el significado de la palabra 'es' es." Tomé alrededor de cinco clases en la universidad sobre lo que el significado de "es" es.
Otra forma de averiguar qué campos valen la pena estudiar es crear el gráfico de abandono. 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 valen más la pena estudiar que la informática. A través de comparaciones similares, puedes hacer un gráfico de todos los departamentos en una universidad. En la parte inferior encontrarás las materias con menos 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 es mejor considerarlos como actividades extracurriculares, como clases de cerámica. Serían mucho más útiles si se combinan con algo de tiempo viviendo en un país donde se hable 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 palabras.
Los cursos de arte y escritura creativa son comodines. Por lo general, no te enseñan 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, así que valen la pena, especialmente si puedes encontrar un buen profesor.
Empleos
Por supuesto, los estudiantes universitarios tienen que pensar en más que solo aprender. También hay dos problemas prácticos a considerar: empleos y escuela de posgrado.
En teoría, una educación liberal no se supone que proporcione capacitación laboral. Pero todos saben que esto es un poco una mentira. Los hackers en cada universidad 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 genial o en un laboratorio de investigación, será mejor que aprendas Ruby en Linux. Y si quieres iniciar tu propia empresa, que creo que será cada vez más común, domina las herramientas más poderosas que puedas encontrar, porque estarás en una carrera contra tus competidores, y ellos 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 puede levantar 300 libras en press de banca, aunque puede que nunca tenga que ejercer una fuerza similar en el transcurso de un juego. Del mismo modo, si tus profesores intentan hacerte aprender cosas que son más avanzadas de lo que necesitarás en un trabajo, puede que no sea solo porque son académicos, desconectados del mundo real. Pueden estar tratando de hacerte levantar pesas con tu cerebro.
Los programas que escribes en las clases difieren en tres formas críticas 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 determines cuál es el problema antes de poder resolverlo.
No tienes que esperar a salir (o incluso entrar) de 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 quieres trabajar estará tan impresionado con eso como con buenas calificaciones en las tareas de clase.
En los proyectos de código abierto existentes no obtienes mucha práctica en la tercera habilidad, decidir qué problemas resolver. Pero no hay nada que te impida comenzar nuevos proyectos por tu cuenta. Y los buenos empleadores estarán aún más impresionados con eso.
¿Qué tipo de problema deberías intentar resolver? Una forma de responder a eso 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 evitara que mi bandeja de entrada se llenara. Tiende a usar mi bandeja de entrada como una lista de tareas. Pero eso es como usar un destornillador para abrir botellas; lo que realmente se quiere es un abridor de botellas.
Escuela de Posgrado
¿Qué pasa con la escuela de posgrado? ¿Deberías ir? ¿Y cómo entras en una buena?
En principio, la escuela de posgrado es capacitación profesional en investigación, y no deberías ir a menos que quieras hacer investigación como carrera. Y, sin embargo, la mitad de las personas que obtienen un doctorado en informática no van a la investigación. 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 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ú, ¿realmente estás fuera de tu elemento?
Hay un problema fundamental en "informática", y se manifiesta en situaciones como esta. Nadie está seguro de lo que se supone que es "investigación". Mucha investigación es hacking que tuvo que ser comprimido en la forma de un artículo académico para generar un quantum más de publicación.
Así que es un poco engañoso preguntar si estarás a gusto en la escuela de posgrado, porque muy pocas personas están realmente a gusto 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 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.
El número uno será tu disertación. Casi todos odian su disertación para cuando la terminan. El proceso tiende inherentemente a producir un resultado desagradable, como un pastel hecho de harina de trigo integral y horneado durante doce horas. Pocas disertaciones se leen con placer, especialmente por sus autores.
Pero miles de personas antes que tú han sufrido escribiendo una disertación. Y aparte de eso, la escuela de posgrado es casi un paraíso. Muchas personas la recuerdan como el momento 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, si no hubieran tenido que escribir una disertación. [5]
El peligro de la escuela de posgrado es que no ves la parte aterradora desde el principio. Los programas de doctorado comienzan como la universidad parte 2, con varios años de clases. Así que para cuando enfrentas el horror de escribir una disertación, ya has pasado varios años. 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 probablemente es mejor que la mayoría de las alternativas. Conoces a muchas personas inteligentes, 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 de unión de la academia, por supuesto) puede ser que te da cierta confianza básica. Por ejemplo, los termostatos Honeywell en mi casa tienen la interfaz de usuario más atroz. Mi madre, que tiene el mismo modelo, pasó diligentemente un día leyendo el manual del usuario para aprender a operar el suyo. Supuso que el problema era con ella. Pero puedo pensar para mí mismo "Si alguien con un doctorado en informática no puede entender este termostato, debe estar mal diseñado."
Si aún quieres ir a la escuela de posgrado después de esta recomendación equívoca, puedo darte un consejo sólido sobre cómo entrar. Muchos de mis amigos son profesores de informática ahora, así que tengo la historia interna sobre las admisiones. Es bastante diferente de la universidad. En la mayoría de las universidades, los oficiales de admisión deciden quién entra. Para los programas de doctorado, lo hacen los profesores. 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. Las pruebas estandarizadas 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 confían los profesores 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 de mis amigos que son profesores sé qué les impresiona: no simplemente intentar impresionarlos. No se impresionan con estudiantes que obtienen buenas calificaciones o quieren ser sus asistentes de investigación para poder entrar en la escuela de posgrado. Se impresionan con 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 realmente. 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 la simulación deja de funcionar. A partir de este punto, a menos que quieras trabajar para una gran empresa, lo que es como volver a la escuela secundaria, la única forma de avanzar es haciendo lo que amas.
Notas
[1] A nadie parece haberle importado, lo que muestra cuán poco importante era la Arpanet (que se convirtió en Internet) hasta tan tarde como 1984.
[2] Esta es la razón por la que, cuando me convertí en empleador, no me importaban las GPA. De hecho, buscamos activamente personas que habían fracasado en la escuela. Una vez pusimos carteles alrededor de Harvard diciendo "¿Te acaban de expulsar por hacerlo mal en tus clases porque pasaste todo tu tiempo trabajando en algún proyecto propio? ¡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 durante un año, tienen que conseguir trabajos. 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 fracasó con el chico que vino a trabajar para nosotros, porque se divirtió más de lo que había tenido en la escuela, y ganó más ese año con opciones sobre acciones que cualquiera de sus profesores en salario. Así que en lugar de regresar arrastrándose arrepentido al final del año, tomó otro año libre y se fue a Europa. Finalmente se graduó alrededor de 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. "'Matemáticas para ingenieros' fue un desastre. De hecho, cualquier 'x para ingenieros' es un desastre, donde x incluye matemáticas, derecho, escritura y diseño visual."
[4] Otros libros altamente recomendados: ¿Qué es Matemáticas?, de Courant y Robbins; Geometría e Imaginación 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 año o dos, y luego simplemente disfrutar de los siguientes tres años, sacando un capítulo a la vez. Esta perspectiva hará que la boca de los estudiantes de posgrado se haga agua, pero no conozco a nadie que haya tenido la disciplina para lograrlo.
[6] Un amigo profesor dice que el 15-20% de los estudiantes de posgrado que admiten cada año son "largas apuestas". Pero lo que quiere decir con largas apuestas 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 la escuela de posgrado en las ciencias, necesitas ir a una universidad donde haya verdaderos profesores de investigación. De lo contrario, parecerás una apuesta arriesgada para los comités de admisiones, sin importar cuán bueno seas.
Lo que implica una consecuencia sorprendente pero aparentemente inevitable: las pequeñas universidades de artes liberales están condenadas. La mayoría de los estudiantes de secundaria inteligentes al menos consideran entrar en las 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 CS anónimos por leer borradores de esto, y a los estudiantes cuyas preguntas lo iniciaron.