Loading...

PREGRADO

Original

March 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 ciencias de la computación de pregrado que me preguntan qué hacer en la universidad. Puede que no sea la mejor fuente de consejos, porque fui un estudiante de filosofía en la universidad. Pero tomé tantas clases de CS que la mayoría de los estudiantes de CS 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: convertirte en muy bueno programando, y aprender mucho sobre problemas específicos y geniales. Estas resultan ser equivalentes, porque cada una te impulsa a hacer la otra.

La forma de ser bueno en la 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.

Es probable que este proyecto no sea una tarea de clase. Mi amigo Robert aprendió mucho escribiendo software de red cuando era estudiante de pregrado. Uno de sus proyectos fue conectar Harvard con el Arpanet; había sido uno de los nodos originales, pero en 1984 la conexión había muerto. [1] No solo este trabajo no fue para una clase, sino que, como dedicaba todo su tiempo a él y descuidaba sus estudios, fue expulsado de la escuela durante un año. [2] Todo se igualó al final, y ahora es profesor en el MIT. Pero probablemente serás más feliz si no te vas a ese extremo; le causó mucha preocupación en ese momento.

Otra forma de ser bueno en la programación es encontrar otras personas que sean buenas en ello y aprender lo que saben. Los programadores tienden a ordenarse en tribus según el tipo de trabajo que hacen y las herramientas que usan, y algunas tribus son más inteligentes que otras. Busca a tu alrededor y observa en qué parecen estar trabajando las personas inteligentes; normalmente hay una razón.

Algunas de las personas más inteligentes que te rodean son profesores. Así que una forma de encontrar un trabajo interesante es ofrecerte como asistente de investigación. Los profesores están especialmente interesados en personas que puedan resolver tediosos problemas de tipo de administración de sistemas para ellos, por lo que esa es una forma de meter un pie en la puerta. Lo que temen son los copos y los que rellenan currículums. Es demasiado común que un asistente se traduzca en un aumento neto de trabajo. Por lo tanto, debes dejar en claro que significarás una disminución neta.

No te desanimes si te dicen que no. El rechazo es casi siempre menos personal de lo que el que lo rechaza 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 más interesantes de la investigación. Entonces, lo que hacen los profesores menos ambiciosos es publicar una serie de artículos cuyas conclusiones son novedosas porque nadie más se preocupa por ellas. Es mejor evitar estas.

Nunca trabajé como asistente de investigación, así que me siento un poco deshonesto recomendando esa ruta. Aprendí a programar escribiendo cosas propias, especialmente tratando de hacer ingeniería inversa del SHRDLU de Winograd. Estaba tan obsesionado con ese programa como una madre con un bebé recién nacido.

Cualquiera que sean las desventajas de trabajar solo, la ventaja es que el proyecto es todo tuyo. Nunca tienes que comprometerte o pedirle permiso a nadie, y si tienes una nueva idea, puedes simplemente sentarte y empezar 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). Todo lo que importa es lo difícil que 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 suelen ser 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 suelen ser muy sofisticadas. Estoy seguro de que hay compañías de juegos por ahí que trabajan en productos con más contenido intelectual que la investigación en el fondo de nueve décimas partes de los departamentos de CS universitarios.

Si estuviera en la universidad ahora, probablemente trabajaría en gráficos: un juego de red, por ejemplo, o una herramienta para animación 3D. Cuando era estudiante de pregrado, no había suficientes ciclos alrededor 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 ciencia de la computación era una rama de las matemáticas. Esta idea era más fuerte en Harvard, donde ni siquiera existía una carrera en CS hasta la década de 1980; hasta entonces, uno tenía que estudiar matemáticas aplicadas. Pero fue casi tan malo en Cornell. Cuando le dije al temible profesor Conway que estaba interesado en la IA (un tema candente en ese entonces), me dijo que debía estudiar 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 estudiar 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 a 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, son todas matemáticas.

Pero aunque literalmente no necesitas 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 su propio bien. 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 mucha gente, fui abusado matemáticamente de niño. Yo aprendí a pensar en las matemáticas como una colección de fórmulas que no eran hermosas ni tenían ninguna relación con mi vida (a pesar de los intentos de traducirlas a "problemas de palabras"), pero que había que memorizar para sacar buenas notas 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 la matemática. Esto puede no ser fácil, porque muchos buenos matemáticos son malos profesores. Y si bien 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. Toda esa obra tiende a estar relacionada, en el sentido de que las ideas y las técnicas de una área a menudo se pueden trasplantar con éxito a otras. Incluso otras que parecen bastante distantes. Por ejemplo, escribo ensayos de la misma manera que escribo software: me siento y saco una versión 1 lame lo más rápido que puedo escribir, luego paso varias semanas reescribiéndola.

Trabajar en problemas difíciles no es, por sí mismo, suficiente. Los medievales los alquimistas estaban trabajando en un problema difícil, pero su enfoque fue tan falso que había poco que aprender de estudiarlo, excepto posiblemente sobre la capacidad de la gente para engañarse a sí mismos. Desafortunadamente, el tipo de IA que intentaba aprender en la universidad tenía el mismo defecto: un problema muy difícil, alegremente abordado con técnicas desesperadamente inadecuadas. ¿Audaz? Más cercano a lo fraudulento.

Las ciencias sociales también son bastante falsas, porque están tan influenciadas por las modas intelectuales. Si un físico conociera a 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 tomando un clase de psicología. El punto es que aprenderás más tomando una clase en otro departamento.

Los departamentos que valen la pena, en mi opinión, son las matemáticas, las ciencias duras, la ingeniería, la historia (especialmente la historia económica y social, y la historia de la ciencia), la arquitectura y los clásicos. Un curso introductorio sobre historia del arte puede ser útil. La literatura moderna es importante, pero la forma de aprender sobre ella es simplemente leer. Yo no sé lo suficiente sobre música para decirlo.

Puedes saltarte las ciencias sociales, la filosofía y los distintos departamentos creados recientemente en respuesta a presiones políticas. Muchas de estas áreas hablan de problemas importantes, sin duda. Pero la forma en que hablan de ellos es inútil. Por ejemplo, la filosofía habla, entre otras cosas, sobre nuestras obligaciones unos con otros; 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 la gente se rió de Clinton por decir: "Depende de lo que signifique la palabra 'es'". Tomé alrededor de cinco clases en la universidad sobre qué significa "es".

Otra forma de averiguar qué campos vale la pena estudiar es crear el gráfico de deserción. Por ejemplo, conozco a muchas personas que cambiaron de matemáticas a informática porque encontraron las matemáticas demasiado difíciles, y 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. Entonces probablemente las matemáticas sean más dignas de estudiar que la informática. Por comparaciones similares, puedes hacer un gráfico de todos los departamentos en una universidad. En la parte inferior encontrarás los temas con menor contenido intelectual.

Si usas este método, obtendrás más o menos la misma respuesta que acabo de dar.

Los cursos de idiomas son una anomalía. Creo que se consideran mejor como actividades extracurriculares, como las clases de cerámica. Serían mucho más útiles combinados con algo de tiempo viviendo en un país donde se habla la lengua. Por un capricho estudié árabe cuando era estudiante de primer año. Fue mucho trabajo, y los únicos beneficios duraderos fueron una extraña capacidad para identificar raíces semíticas y algunas ideas sobre cómo la gente reconocer palabras.

Los cursos de arte de estudio y escritura creativa son comodines. Normalmente 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 maestro. Pero la escritura y el arte son ambos problemas muy difíciles en los que (algunas) personas trabajan honestamente en ello, por lo que vale la pena hacerlo, especialmente si puedes encontrar un buen profesor.

Trabajos

Por supuesto, los estudiantes universitarios tienen que pensar en algo más que aprender. También hay dos problemas prácticos que considerar: trabajos, y la escuela de posgrado.

En teoría, una educación liberal no se supone que proporcione capacitación laboral. Pero todos sabemos 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 empresa pequeña y genial o en un laboratorio de investigación, 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 poderosas que puedas encontrar, porque vas a estar en una carrera contra tus competidores, y ellos serán tu caballo.

No existe una correlación directa entre las habilidades que debes aprender en la universidad y las que usarás en un trabajo. Debes apuntar un poco más alto en la universidad.

En los entrenamientos, un jugador de fútbol puede hacer press de banca con 300 libras, incluso aunque nunca tenga que ejercer una fuerza como esa en el curso 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 sean académicos, desvinculados del mundo real. Pueden estar tratando de hacer que levantes pesas con tu cerebro.

Los programas que escribes en clase difieren en tres formas cruciales de los que escribirás en el mundo real: son pequeños; tú puedes empezar de 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 te obligan a averiguar qué es el problema antes de poder resolverlo.

No tienes que esperar a irte (o incluso entrar) a 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. La clase de empleador para el que quieres trabajar estará tan impresionado con eso como con buenas notas 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 propios. Y 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 preguntarte qué necesitas como usuario. Por ejemplo, yo tropecé con un buen algoritmo para filtrar spam porque quería dejar de recibir spam. Ahora lo que deseo tener es un lector de correo que de alguna manera evite que mi bandeja de entrada se llene. Tiendo a usar mi bandeja de entrada como una lista de tareas. Pero eso es como usar un destornillador para abrir botellas; lo que uno realmente 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 dedicarte a la investigación como carrera. Y sin embargo, la mitad de las personas que obtienen un doctorado en CS 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.

Entonces, si estás principalmente interesado en hackear y vas a la escuela de posgrado, encontrarás a mucha gente que está igualmente fuera de lugar. Y si la mitad de las personas que te rodean están fuera de lugar en la misma forma que tú, ¿realmente estás fuera de lugar?

Existe un problema fundamental en "la ciencia de la computación", y sale a la luz en situaciones como esta. Nadie está seguro de lo que se supone que es la "investigación". Mucho de la investigación es hacking que tuvo que ser metido a la fuerza en la forma de un artículo académico para generar un cuanto más de publicación.

Entonces, es un poco engañoso preguntar si te sentirás cómodo en la escuela de posgrado, porque muy pocas personas se sienten realmente cómodas en la informática. Todo el campo se siente incómodo en su propia piel. Así que el hecho de que estés principalmente interesado en hackear no debería disuadirte de ir a la escuela de posgrado. Solo debes tener en cuenta que tendrás que hacer muchas cosas que no te gusten.

El número uno será tu tesis. Casi todos odian su tesis para cuando terminan con ella. El proceso inherentemente tiende a producir un resultado desagradable, como un pastel hecho de harina integral y horneado durante doce horas. Pocas tesis se leen con placer, especialmente por sus autores.

Pero miles antes que tú han sufrido escribiendo una tesis. 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 el resto, incluido yo, la recordamos como un período que hubiera sido, si no hubieran tenido que escribir una tesis. [5]

El peligro con la escuela de posgrado es que no ves la parte aterradora por adelantado. Los programas de doctorado comienzan como la universidad parte 2, con varios años de clases. Entonces, cuando te enfrentas al horror de escribir una tesis, ya llevas varios años dentro. Si dejas ahora, serás un desertor de la escuela de posgrado, y probablemente no te guste 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 sea mejor que la mayoría de las alternativas. Conoces a mucha gente inteligente, y tu sombría procrastinación será al menos un poderoso vínculo común. Y por supuesto, tienes un doctorado al final. Me había olvidado de eso. Supongo que vale algo.

La mayor ventaja de un doctorado (además de ser el carnet de la unión de la academia, por supuesto) puede ser que te da algo de confianza básica. Por ejemplo, los termostatos Honeywell de mi casa tienen la más atroz interfaz de usuario. Mi madre, que tiene el mismo modelo, diligentemente gastó un día leyendo el manual del usuario para aprender a operar el suyo. Ella supuso que el problema era con ella. Pero yo puedo pensar: "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 ambigua, puedo darte consejos sólidos sobre cómo entrar. Muchos de mis amigos son profesores de CS ahora, así que tengo la historia interna sobre admisiones. Es bastante diferente de la universidad. En la mayoría de las universidades, los oficiales de admisiones deciden quién entra. Para los doctorados los programas, los profesores lo hacen. Y tratan de hacerlo bien, porque la gente que admitan va 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 cuentan poco. El ensayo es principalmente una oportunidad para descalificarte diciendo algo estúpido. Lo único que los profesores confían son las recomendaciones, preferiblemente de personas que conozcan. [6]

Entonces, si quieres ingresar a un programa de doctorado, la clave es impresionar a tus profesores. Y de mis amigos que son profesores, sé lo que les impresiona: no solo intentar impresionarlos. No están impresionados por los estudiantes que sacan buenas notas o que quieren ser sus asistentes de investigación para poder ingresar a la escuela de posgrado. Están impresionados por los estudiantes que sacan buenas notas y quieren ser sus asistentes de investigación porque están genuinamente interesados en el tema.

Entonces, lo mejor que puedes hacer en la universidad, ya sea que quieras entrar en la escuela de posgrado o simplemente ser bueno en hackear, es averiguar qué te gusta realmente. Es difícil engañar a los profesores para que te permitan entrar en la escuela de posgrado, e imposible engañar a los problemas para que te permitan resolverlos. La universidad es donde dejar de fingir deja de funcionar. A partir de este punto, a menos que quieras ir a trabajar para una gran empresa, lo cual es como volver a la escuela secundaria, la única forma de avanzar es haciendo lo que amas.

Notas

[1] A nadie parece importarle, lo que demuestra cuán poco importante era el Arpanet (que se convirtió en Internet) hasta el 1984.

[2] Esta es la razón por la que, cuando me convertí en empleador, no me preocupaban los promedios generales. De hecho, buscamos activamente personas que hubieran sido expulsadas de la escuela. Una vez pusimos carteles por toda Harvard diciendo: "¿Te acaban de expulsar por sacar malas notas en tus clases porque dedicabas todo tu tiempo a trabajar en algún proyecto propio? ¡Ven a trabajar con nosotros!" Conseguimos encontrar a un chico que había sido, y era un gran hacker.

Cuando Harvard expulsa a los estudiantes de pregrado durante un año, tienen que conseguir trabajo. La idea es mostrarles lo horrible que es el mundo real, para que lo hagan comprender lo afortunados que son de estar en la universidad. Este plan fracasó 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 que cualquiera de sus profesores con salario. Entonces, en lugar de arrastrarse de regreso 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 son en teoría de conjuntos, combinatoria y 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 mucho. De hecho, cualquier 'x para ingenieros' apesta, donde x incluye matemáticas, derecho, escritura y diseño visual."

[4] Otros libros muy recomendados: ¿Qué son las matemáticas?, de Courant y Robbins; Geometría y la imaginación de Hilbert y Cohn-Vossen. Y para aquellos interesados en el diseño gráfico, Euclides de Byrne.

[5] Si quisieras tener la vida perfecta, lo que debes hacer sería ir a la escuela de posgrado, escribir tu tesis en secreto en el primer o segundo año, y luego simplemente disfrutar de los siguientes tres años, goteando un capítulo a la vez. Esta perspectiva hará que a los estudiantes de posgrado se les haga agua la boca, pero no conozco a nadie que haya tenido el disciplina para lograrlo.

[6] Un amigo profesor dice que el 15-20% de los estudiantes de posgrado que admiten cada año son "tiros largos". Pero lo que él quiere decir con tiros largos 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.

Entonces, si quieres ingresar a la escuela de posgrado en ciencias, necesitas ir a la universidad en algún lugar con verdaderos profesores de investigación. De lo contrario, parecerás una apuesta arriesgada para los comités de admisiones, sin importar lo bueno que seas.

Lo cual implica una consecuencia sorprendente pero aparentemente inevitable: las pequeñas universidades de artes liberales están condenadas. La mayoría de los chicos inteligentes de la escuela secundaria al menos consideran la posibilidad de estudiar ciencias, incluso si finalmente deciden 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 los borradores de esto, y a los estudiantes cuyas preguntas lo iniciaron.