SUBGRADUACIÓN
OriginalMarzo 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 pregrado de ciencias de la computación preguntándome qué hacer en la universidad. Puede que no sea la mejor fuente de consejos, porque yo era 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 lo era. Ciertamente era un hacker, al menos.
Hackeo
¿Qué deberías hacer en la universidad para convertirte en un buen hacker? Hay dos cosas principales que puedes hacer: volverte muy bueno en la programación y aprender mucho sobre problemas específicos y geniales. Resulta que son 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 hacerte 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 a la Arpanet; había sido uno de los nodos originales, pero para 1984 la conexión se había muerto. [1] Este trabajo no solo no era para una clase, sino que, como pasó todo su tiempo en él y descuidó sus estudios, lo expulsaron de la escuela por un año. [2] Al final todo se equilibró 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 en la programación es encontrar a otras personas que son buenas en ello y aprender lo que saben. Los programadores tienden a agruparse 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é parecen estar trabajando las personas inteligentes; generalmente hay una razón.
Algunos de los más inteligentes a tu alrededor son los profesores. Entonces una forma de encontrar un trabajo interesante es ofrecerse como asistente de investigación. Los profesores están especialmente interesados en las personas que pueden resolver problemas tediosos de administración de sistemas por ellos, así que esa es una forma de entrar. Lo que temen son los chiflados y los que rellenan currículos. 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 las áreas de investigación más interesantes. Entonces lo que hacen los profesores menos ambiciosos es producir una serie de artículos cuyras conclusiones son novedosas porque a nadie más le importan. Es mejor evitar a estos.
Nunca trabajé como asistente de investigación, así que me siento un poco deshonesto recomendando esa ruta. Aprendí a programar escribiendo cosas propias, particularmente intentando revertir el 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 por tu cuenta, la ventaja es que el proyecto es todo tuyo. Nunca tienes que comprometerte o pedir permiso a nadie, y si tienes una idea nueva 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). Todo lo que importa es qué tan 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 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 trabajando en productos con más contenido intelectual que la investigación en los dos tercios inferiores de los departamentos universitarios de CS.
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 para que los gráficos fueran interesantes, pero es difícil imaginar algo más divertido de trabajar ahora.
Matemáticas
Cuando estaba en la universidad, muchos de los 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 había una carrera de CS hasta la década de 1980; hasta entonces uno tenía que especializarse en matemáticas aplicadas. Pero era casi tan malo en Cornell. Cuando le dije al temible Profesor Conway que me interesaba la IA (un tema candente en ese 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 esas 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 estés planeando escribir aplicaciones matemáticas, por supuesto. La robótica, por ejemplo, es todo matemáticas.
Pero mientras que literalmente no necesitas matemáticas para la mayoría de los tipos de hackeo, en el sentido de conocer 1001 trucos para diferenciar fórmulas, las matemáticas son muy valiosas de estudiar por sí mismas. Es una valiosa fuente 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 a mucha gente, de niño me abusaron matemáticamente. 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"), pero que había que memorizar para tener un buen desempeño 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 maestros. Y si bien hay muchos libros populares sobre matemáticas, pocos parecen buenos. Los mejores que puedo pensar son los de W. W. Sawyer. Y por supuesto, Euclides. [1]
Todo
Thomas Huxley dijo "Trata de 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 este trabajo tiende a estar relacionado, en el sentido de 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, luego paso varias semanas reescribiéndola.
Trabajar en problemas difíciles no es, por sí solo, suficiente. Los alquimistas medievales estaban trabajando en un problema difícil, pero su enfoque era tan falso que había poco que aprender al estudiarlos, 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 con técnicas lamentablemente inadecuadas. ¿Audaz? Más cerca de 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 un argumento ideológico. 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 valiosos, en mi opinión, son matemáticas, ciencias duras, ingeniería, historia (especialmente historia económica y social, e historia de la ciencia), arquitectura y los clásicos. Un curso general de 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 como para decir.
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, sin duda. Pero la forma en que los abordan es inútil. Por ejemplo, la filosofía habla, entre otras cosas, sobre 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 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 lo que 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 ciencias de la computación porque encontraron que las matemáticas eran demasiado difíciles, y a nadie que haya hecho 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 recompensante. Entonces, probablemente las matemáticas valgan más la pena estudiar que las ciencias de la computación. Mediante comparaciones similares, puedes hacer un gráfico de todos los departamentos de una universidad. En la parte inferior encontrarás los temas 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 se consideran mejor como actividades extracurriculares, como las clases de alfarería. Serían mucho más útiles cuando se combinan con un 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 la gente reconoce las palabras.
Los cursos de arte de estudio 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 supervisión vaga del maestro. Pero la escritura y el arte son problemas muy difíciles que (algunas) personas trabajan honestamente, por lo que vale la pena hacerlos, especialmente si puedes encontrar un buen maestro.
Trabajos
Por supuesto, los estudiantes universitarios tienen que pensar en más que solo aprender. También hay dos problemas prácticos a considerar: los trabajos y la escuela de posgrado.
En teoría, una educación liberal no se supone que proporcione capacitación laboral. Pero todo el mundo sabe que esto es un poco de mentira. Los hackers en cada universidad aprenden habilidades prácticas, y no por accidente.
Lo que debes aprender para conseguir un trabajo depende del tipo que quieras. Si quieres trabajar en una empresa grande, aprende a hackear Blub en Windows. Si quieres trabajar en una empresa o laboratorio de investigación genial, te irá mejor si aprendes Ruby en Linux. Y si quieres iniciar tu propia empresa, lo 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 debes aprender en la universidad y las que usarás en un trabajo. Debes apuntar ligeramente alto en la universidad.
En los entrenamientos, un jugador de fútbol americano puede hacer press de banca con 300 libras, incluso si es posible que nunca tenga que ejercer una fuerza tan grande 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 comenzar 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 salir (o incluso entrar) de la universidad para aprender estas habilidades. Si quieres aprender a lidiar con el código existente, por ejemplo, puedes contribuir a proyectos de código abierto. El tipo de empleador para el que quieres trabajar se impresionará tanto por eso como por las 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 nada te impide iniciar nuevos proyectos propios. 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, tropecé con un buen algoritmo para el filtrado de 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. 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 realmente se quiere es un abridor de botellas.
Escuela de Posgrado
¿Qué hay de la escuela de posgrado? ¿Deberías ir? ¿Y cómo entras en una buena?
En principio, la escuela de posgrado es una 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 doctorados en CS no se dedican a la investigación. 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 el hackeo y vas a la escuela de posgrado, encontrarás a mucha otra gente que está igualmente fuera de su elemento. Y si la mitad de la gente que te rodea está fuera de su elemento de la misma manera que tú, ¿realmente estás fuera de tu elemento?
Hay un problema fundamental en la "ciencia de la computación", y sale a la superficie en situaciones como esta. Nadie está seguro de lo que se supone que debe ser la "investigación". Mucha investigación es hackeo que tuvo que ser encajado en la forma de un documento 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 completamente cómodas en la ciencia de la computación. Todo el campo se siente incómodo en su propia piel. Así que el hecho de que estés principalmente interesado en el hackeo 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.
Número uno será tu disertación. Casi todo el mundo odia su disertación cuando terminan con ella. El proceso tiende inherentemente a producir un resultado desagradable, como un pastel hecho con 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, incluido yo, la recuerdan como un período que habría sido, 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 para cuando te enfrentas al horror de escribir una disertación, ya llevas varios años. Si lo dejas ahora, serás un desertor de la escuela de posgrado, y probablemente no te guste esa idea. Cuando a Robert lo echaron de la escuela de posgrado por escribir el gusano de Internet de 1988, lo envidié enormemente por encontrar una forma de salir 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 lúgubre 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 presentación del mundo académico, por supuesto) puede ser que te da una cierta confianza de base. 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 usar el suyo. Ella asumió que el problema era con ella. Pero yo puedo pensar "Si alguien con un doctorado en ciencias de la computación no puede entender este termostato, debe estar muy mal diseñado".
Si aún 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 las admisiones. Es bastante diferente de la universidad. En la mayoría de las universidades, los oficiales de admisiones 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 estar trabajando para ellos.
Aparentemente, solo las recomendaciones realmente importan en las mejores escuelas. Las pruebas estandarizadas no cuentan para nada, y las calificaciones cuentan poco. El ensayo es principalmente una oportunidad para descalificarte a ti mismo diciendo algo estúpido. Lo único en lo que confían los profesores son las recomendaciones, preferiblemente de personas que conocen. [6]
Entonces, si quieres entrar en un programa de doctorado, la clave es impresionar a tus profesores. Y por mis amigos que son profesores, sé qué los impresiona: no simplemente intentar impresionarlos. No se impresionan con los estudiantes que obtienen buenas calificaciones o quieren ser sus asistentes de investigación para poder entrar en la escuela de posgrado. Se impresionan con los estudiantes que obtienen buenas calificaciones y quieren ser sus asistentes de investigación porque están realmente 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 el hackeo, es descubrir lo que realmente te gusta. 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 deja de funcionar. A partir de este punto, a menos que quieras ir a trabajar para una gran empresa, que es como volver a la escuela secundaria, la única forma de avanzar es a través de hacer lo que amas.
Notas
[1] A nadie pareció importarle, lo que demuestra lo poco importante que era el Arpanet (que se convirtió en Internet) tan tarde como 1984.
[2] Esta es la razón por la que, cuando me convertí en empleador, no me importaban los promedios de calificaciones. De hecho, buscamos activamente a personas que hubieran sido expulsadas de la escuela. Una vez colocamos carteles alrededor de Harvard que decían "¿Te acaban de echar por ir mal en tus clases porque pasabas todo tu tiempo trabajando en algún proyecto propio? ¡Ven a trabajar para nosotros!" Logramos encontrar a un chico que había sido expulsado, y era un gran hacker.
Cuando Harvard expulsa a los estudiantes de pregrado por 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 falló con el chico que vino a trabajar para nosotros, porque se divirtió más de lo que se había divertido en la escuela, e hizo más ese año con las opciones sobre acciones que cualquiera de sus profesores con su salario. Así que en lugar de volver 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 se encuentran 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 terriblemente. De hecho, cualquier 'x para ingenieros' apesta, donde x incluye matemáticas, derecho, escritura y diseño visual".
[4] Otros libros muy recomendados: ¿Qué es las matemáticas?, de Courant y Robbins; Geometría e imaginación de Hilbert y Cohn-Vossen. Y para aquellos interesados en el diseño gráfico, Byrne's Euclid.
[5] Si quisieras tener la vida perfecta, lo mejor sería ir a la escuela de posgrado, escribir tu tesis en secreto en el primer año o dos, y luego simplemente disfrutar durante los siguientes tres años, sacando 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 la disciplina para lograrlo.
[6] Un profesor amigo dice que el 15-20% de los estudiantes de posgrado que admiten cada año son "apuestas a largo plazo". Pero lo que él quiere decir con apuestas a largo plazo 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 las ciencias, necesitas ir a la universidad donde haya profesores de investigación reales. De lo contrario, parecerás una apuesta arriesgada para los comités de admisión, 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 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 anónimos de CS por leer borradores de esto, y a los estudiantes cuyas preguntas lo iniciaron.