Loading...

LICENCIATURA

Original

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 de informática que me preguntaban qué hacer en la universidad. Puede que no sea la mejor fuente de consejos, porque estudié 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 de ellos. Al menos, sin duda era un hacker.

Seco

¿Qué debes hacer en la universidad para convertirte en un buen hacker ? Hay dos cosas principales que puedes hacer: convertirte en un experto en programación y aprender mucho sobre problemas interesantes y específicos. Estas dos cosas resultan ser equivalentes, porque cada una te impulsa a hacer la otra.

La manera de ser bueno en programación es trabajar (a) mucho (b) en problemas difíciles. Y la manera de obligarte a trabajar 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 redes cuando era estudiante. Uno de sus proyectos era conectar Harvard a Arpanet; había sido uno de los nodos originales, pero en 1984 la conexión había muerto. [1] No sólo este trabajo no era para una clase, sino que como dedicó todo su tiempo a ello y descuidó sus estudios, lo echaron de la escuela durante 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 programación es encontrar a otras personas que sean buenas en eso y aprender lo que saben. Los programadores tienden a organizarse en tribus según el tipo de trabajo que realizan y las herramientas que utilizan, y algunas tribus son más inteligentes que otras. Mire a su alrededor y vea en qué parecen estar trabajando las personas inteligentes; generalmente 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 ofrecerse como voluntario como asistente de investigación. Los profesores están especialmente interesados en personas que puedan resolverles problemas tediosos de tipo administrativo, así que esa es una forma de abrirse camino. Lo que temen son los despreocupados y los que aumentan el currículum. Es muy común que un asistente se traduzca en un aumento neto de trabajo, así que tienes que dejar claro que te referirás a una disminución neta.

No te desanimes si te dicen que no. El rechazo casi siempre es menos personal de lo que la persona rechazada imagina. Simplemente pasa a la siguiente opción (esto también se aplica a las citas).

Tenga cuidado, porque aunque la mayoría de los profesores son inteligentes, no todos trabajan en temas 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. Por lo tanto, lo que hacen los profesores menos ambiciosos es publicar una serie de artículos cuyas conclusiones son novedosas porque a nadie más le interesan. Es mejor evitarlos.

Nunca trabajé como asistente de investigación, así que me siento un poco deshonesto al recomendar ese camino. Aprendí a programar escribiendo cosas propias, en particular al intentar aplicar ingeniería inversa al SHRDLU de Winograd. Estaba tan obsesionada con ese programa como una madre con un bebé recién nacido.

Cualesquiera que sean las desventajas de trabajar solo, la ventaja es que el proyecto es completamente tuyo. Nunca tienes que ceder ni pedirle 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 hacen los profesores) ni por la rentabilidad (como hacen 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 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 empresas de juegos que trabajan en productos con más contenido intelectual que la investigación de los nueve últimos departamentos de informática de las universidades.

Si ahora estuviese en la universidad, 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 para hacer que los gráficos fuesen 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 carrera de informática hasta los años 80; hasta entonces, uno tenía que especializarse en matemáticas aplicadas. Pero en Cornell era casi igual de malo. Cuando le dije al temible profesor Conway que me interesaba la IA (un tema candente en aquel 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 especializarme en algo riguroso me curaría de esas ambiciones estúpidas.

De hecho, la cantidad de matemáticas que necesitas para ser un hacker es mucho menor de lo que la mayoría de los departamentos universitarios están dispuestos a 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 si bien no se necesitan matemáticas literalmente para la mayoría de los tipos de hacking, en el sentido de conocer 1001 trucos para diferenciar fórmulas, vale mucho la pena estudiar matemáticas por sí mismas. Son 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 mucha gente, sufrí abuso matemático cuando era niña. Aprendí a pensar en las matemáticas como una colección de fórmulas que no eran ni bellas ni tenían relación alguna con mi vida (pese a los intentos de traducirlas en "problemas de palabras"), pero que tenía que memorizar para obtener buenas calificaciones en los exámenes.

Una de las cosas más valiosas que podrías hacer en la universidad sería aprender qué son 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 WW 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 la gente aprende 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 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 escribo una versión 1 mediocre lo más rápido que puedo y 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 estudiándolo, excepto, posiblemente, sobre la capacidad de las personas para engañarse a sí mismas. Desafortunadamente, el tipo de IA que estaba tratando de 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 fraudulento.

Las ciencias sociales también son bastante falsas, porque están muy influidas por las modas intelectuales. Si un físico se encuentra con un colega de hace 100 años, podría enseñarle algunas cosas nuevas; si un psicólogo se encuentra con un colega de hace 100 años, simplemente se enzarzarán en una discusión ideológica. Sí, por supuesto, aprenderás algo tomando una clase de psicología. El punto es que aprenderás más tomando una clase en otro departamento.

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

Se pueden obviar 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, sin duda, pero la forma en que lo hacen es inútil. Por ejemplo, la filosofía habla, entre otras cosas, de nuestras obligaciones para con los demás; pero se puede aprender más sobre esto de una abuela sabia o de EB White que de un filósofo académico.

Hablo por experiencia. Probablemente me hubiera sentido ofendido cuando la gente se rió de Clinton por decir "Depende de cuál sea el significado de la palabra 'es'". Tomé unas cinco clases en la universidad sobre cuál es el significado de "es".

Otra forma de averiguar qué campos merece la pena estudiar es crear el gráfico de abandono. Por ejemplo, conozco a mucha gente que pasó de las matemáticas a la informática porque las matemáticas les resultaban 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. Así que probablemente valga más la pena estudiar matemáticas que informática. Mediante comparaciones similares, se puede hacer un gráfico de todos los departamentos de una universidad. En la parte inferior se encuentran las asignaturas con menos contenido intelectual.

Si utiliza este método, obtendrá 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 las clases de cerámica. Serían mucho más útiles si se combinaran con algún tiempo viviendo en un país donde se habla el idioma. Por 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 las personas reconocen 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 quieres 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 problemas muy difíciles en los que (algunas) personas trabajan honestamente, por lo que vale la pena hacerlos, especialmente si puedes encontrar un buen profesor.

Empleos

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

En teoría, una educación liberal no debería proporcionar capacitación laboral, pero todo el mundo sabe que esto es una mentira. Los hackers de todas las universidades aprenden habilidades prácticas, y no por casualidad.

Lo que debes aprender para conseguir un trabajo depende del tipo de trabajo que quieras. Si quieres trabajar en una gran empresa, aprende a hackear Blub en Windows. Si quieres trabajar en una pequeña empresa o en un laboratorio de investigación, te irá mejor si aprendes Ruby en Linux. Y si quieres montar tu propia empresa, que creo que será cada vez más habitual, domina las herramientas más potentes que puedas encontrar, porque estarás en una carrera contra tus competidores, y ellos serán tu caballo de batalla.

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

En los entrenamientos, un jugador de fútbol puede levantar 135 kilos en press de banca, aunque tal vez nunca tenga que ejercer tanta fuerza durante un partido. Del mismo modo, si tus profesores intentan hacerte aprender cosas más avanzadas de las que necesitarás en un trabajo, puede que no sea solo porque sean académicos, alejados del mundo real. Puede que estén intentando hacerte levantar pesas con el cerebro.

Los programas que escribes en clase difieren de los que escribirás en el mundo real en tres aspectos críticos: 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 averigües cuál es el problema antes de poder resolverlo.

No tienes que esperar a terminar la universidad (o incluso a entrar) para aprender estas habilidades. Si quieres aprender a manejar código existente, por ejemplo, puedes contribuir a proyectos de código abierto. El tipo de empleador para el que quieres trabajar quedará tan impresionado por eso como por las buenas notas en las tareas de clase.

En los proyectos de código abierto existentes no se practica mucho la tercera habilidad, decidir qué problemas resolver. Pero no hay nada que impida que se inicien nuevos proyectos propios. Y los buenos empleadores quedarán aún más impresionados con eso.

¿Qué tipo de problema debería intentar resolver? Una forma de responder a esta pregunta es preguntarse qué necesita como usuario. Por ejemplo, yo me topé con un buen algoritmo para filtrar el correo basura porque quería dejar de recibirlo. Ahora, lo que me gustaría tener es un lector de correo que de alguna manera impidiera que mi bandeja de entrada se llenara. Suelo utilizar 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

¿Qué tal si hago un posgrado? ¿Debería ir? ¿Y cómo puedo ingresar a uno bueno?

En principio, la escuela de posgrado es una formación profesional en investigación y no deberías ir a menos que quieras dedicarte a la investigación profesionalmente. Y, sin embargo, la mitad de las personas que obtienen un doctorado en Ciencias de la Computación 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 lo que te interesa es principalmente la piratería y vas a la escuela de posgrado, encontrarás a muchas otras personas que también están fuera de su elemento. Y si la mitad de las personas que te rodean están fuera de su elemento de la misma manera que tú, ¿realmente estás fuera de tu elemento?

Hay un problema fundamental en la "ciencia informática", que surge en situaciones como ésta. Nadie está seguro de qué se supone que es la "investigación". Gran parte de la investigación es piratería informática que tuvo que ser comprimida en forma de artículo académico para obtener un volumen adicional de publicaciones.

Por lo tanto, es un poco engañoso preguntar si te sentirás cómodo en la escuela de posgrado, porque muy pocas personas se sienten cómodas en la informática. Todo este campo es incómodo en sí mismo. Por lo tanto, el hecho de que te interese principalmente la piratería 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 tesis. Casi todo el mundo odia su tesis cuando la termina. El proceso tiende inherentemente a producir un resultado desagradable, como un pastel hecho con harina integral y horneado durante doce horas. Pocas tesis se leen con placer, especialmente por sus autores.

Pero miles de personas antes que tú han sufrido al escribir una tesis. Y, aparte de eso, la escuela de posgrado es casi un paraíso. Mucha gente la recuerda como la época más feliz de su vida. Y casi todos los demás, incluido yo, la recuerdan como un período que habría sido así si no hubieran tenido que escribir una tesis. [5]

El peligro de los estudios de posgrado es que no se ve la parte aterradora desde el principio. Los programas de doctorado comienzan como la segunda parte de la universidad, con varios años de clases. Así que cuando te enfrentas al horror de escribir una tesis, ya has pasado varios años. Si dejas el estudio ahora, habrás abandonado la escuela de posgrado y probablemente no te guste esa idea. Cuando echaron a Robert 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 desgana por posponer las cosas al menos será un poderoso vínculo común. Y, por supuesto, al final obtienes un doctorado. Me olvidé de eso. Supongo que eso vale algo.

La mayor ventaja de un doctorado (además de ser el carnet de identidad del mundo académico, 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, se pasó un día leyendo diligentemente el manual del usuario para aprender a utilizar el suyo. Supuso que el problema estaba en ella. Pero yo puedo pensar: "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 buenos consejos sobre cómo ingresar. Muchos de mis amigos son profesores de informática ahora, así que tengo la historia interna sobre las admisiones. Es bastante diferente a la universidad. En la mayoría de las universidades, los funcionarios de admisiones deciden quién ingresa. En los programas de doctorado, lo hacen los profesores. Y tratan de hacerlo bien, porque las personas a las que admiten van a trabajar para ellos.

Al parecer, en las mejores escuelas sólo importan las recomendaciones. Los exámenes estandarizados no cuentan para nada y las calificaciones, poco. El ensayo es, en su mayoría, una oportunidad para descalificarse diciendo algo estúpido. En lo único en lo que confían los profesores son en 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 les impresiona: no sólo tratar de impresionarlos. No les impresionan los estudiantes que obtienen buenas notas o quieren ser sus asistentes de investigación para poder entrar en la escuela de posgrado. Les impresionan los estudiantes que obtienen buenas notas 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 ingresar a la escuela de posgrado o simplemente ser bueno en piratería, es descubrir qué es lo que realmente te gusta. Es difícil engañar a los profesores para que te dejen ingresar a la escuela de posgrado, e imposible engañar a los problemas para que te dejen resolverlos. La universidad es donde fingir deja de funcionar. A partir de este punto, a menos que quieras ir a 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 pareció importarle, lo que demuestra lo poco importante que era Arpanet (que se convirtió en Internet) incluso en 1984.

[2] Por eso, cuando me convertí en empleador, no me importaban las notas. De hecho, buscamos activamente a gente que había fracasado en sus estudios. Una vez pusimos carteles por Harvard que decían: "¿Te acaban de echar por tener un mal desempeño 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 sí lo había hecho y era un gran hacker.

Cuando Harvard expulsa a los estudiantes universitarios durante 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 fracasó con el tipo que vino a trabajar para nosotros, porque se divirtió más que 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 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 aproximadamente.

[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 debes tomar clases de matemáticas destinadas a estudiantes de matemáticas. "Las clases de 'Matemáticas para ingenieros' son terriblemente malas. De hecho, cualquier 'x para ingenieros' es una porquería, donde x incluye matemáticas, derecho, redacción y diseño visual".

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

[5] Si quisieras tener la vida perfecta, lo que tendrías que hacer sería ir a la escuela de posgrado, escribir en secreto tu tesis durante el primer o segundo año y luego simplemente disfrutar durante los siguientes tres años, escribiendo un capítulo a la vez. Esta perspectiva hará que a 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 "poco probables", pero lo que quiere decir con "poco probables" 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 ingresar a una escuela de posgrado en ciencias, tienes que ir a una universidad en la que haya profesores investigadores de verdad. 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: las pequeñas universidades de humanidades están condenadas al fracaso. La mayoría de los estudiantes de secundaria inteligentes al menos consideran 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 anónimos de informática por leer borradores de este documento, y a los estudiantes cuyas preguntas lo iniciaron.