He estado haciendo muchas entrevistas últimamente, y he estado observando el auge de la Escuela Lambda, que creo que es fantástico, por cierto, y la combinación me hace pensar dos cosas:
- ¿Qué tan educados deben ser los ingenieros de software?
- ¿Y qué tan bien se relaciona eso con lo que realmente aprenden de la educación formal?
Retrocedamos y definamos algunos términos antes de tratar de responderlos. En primer lugar, por educación "formal", me refiero a una universidad acreditada de cuatro años, mientras que las personas con, por ejemplo, la Escuela Lambda o los campamentos de entrenamiento detrás de ellos, tienen una educación "informal" y, a su vez, se distinguen de los autodidactos. Esto no es universal. Google no parecía considerar a alguien con menos de un maestro "formalmente" educado.
Segundo, por supuesto que no hay un absoluto necesitar. Desde los albores del primer tubo de vacío, y en gran medida incluyendo cosas incondicionales como compiladores y criptografía, el software ha sido un campo en el que las personas sin entrenamiento formal han prosperado y han tenido un gran éxito. Obviamente, ni una educación formal ni una informal es en realidad necesario. Lo que realmente estamos preguntando es: en general, ¿hay razones para creer que los ingenieros de software con educación formal son mejores contratados?
Tenga en cuenta que, hablando como empleador, realmente no me importa si esto se debe a un sesgo de selección, es decir, si es porque las personas capaces tienen más probabilidades de ser educadas formalmente o porque realmente aprendieron de ello. Me complace aceptar que todo el sistema universitario en cualquier país, especialmente el suyo, es profundamente y cada vez más patológico, injustamente y celosamente jerárquico, terriblemente costoso y profundamente defectuoso en cuanto a credenciales y señalización de capacidades.
Eso es un gran problema para mí personalmente … pero cuando uso mi sombrero de contratación, no me importa cómo se hace esa salchicha de credencialización. Todo lo que me interesa, cuando estoy entrevistando, es: ¿son esas señales significativas? ¿Esas personas tienen más o menos posibilidades de éxito, o hacen un desastre que luego tendré que limpiar?
Es muy difícil encontrar estadísticas aplicables aquí, y mucho menos a cualquiera cuyos compiladores no tuvieran un hacha implícita para moler. Y, por supuesto, tengo mis propios prejuicios: tengo un título de cuatro años, de una escuela (canadiense) fuera de la jerarquía de la nación (estadounidense) en la que vivo, pero con una sólida reputación internacional (Waterloo), en un campo (ingeniería eléctrica) solo algo asociado con el desarrollo de software.
Solía hacer una pregunta de la entrevista o unos pocos acerca de la teoría. Una de mis preguntas frecuentes solía ser: "¿Tiene un algoritmo favorito y por qué?" He dejado de hacerlo porque la respuesta casi siempre es una variante de "no". Incluso aquellos que han estudiado formalmente los algoritmos. Rara vez se preocupan por ellos. A veces obtengo una variante de "Sé lo que es un algoritmo, pero en realidad nunca escribí uno".
Eso no es sorprendente. Una gran cantidad de ingeniería de software moderna consiste en conectar componentes preexistentes de formas ligeramente nuevas. Los "algoritmos", como solemos entenderlos, se incorporan a nuestras herramientas y bibliotecas. ¿Ayuda una educación formal en notación big-O y máquinas de Turing? Respuesta corta: no. ¿Es útil la experiencia previa con la multiplicación de matrices y los vectores propios? En realidad, sí, en el caso excepcional de que quiera comprender el aprendizaje automático moderno … pero, a medida que mejora el herramental, no tanto si solo quiere usarlo.
La ingeniería moderna de software a menudo, pero no siempre, tiene mucho más en común con la plomería o la carpintería que con el arte del hacking, la arquitectura o la informática. Es más como hacer publicaciones agregadas de blog, o escribir no ficción comercial, que crear una novela, y mucho menos escribir poesía.
Por supuesto, esto viene con la importante advertencia de que la analogía solo se sostiene si cada pocos años las herramientas que utilizaron los fontaneros y carpinteros cambiaron por completo, junto con el aumento ocasional de nuevos enfoques en sus campos. Pero aún así, la necesidad de reeducación constante es probablemente un argumento. en contra entrenamiento formal; ¿Por qué pasar cuatro años aprendiendo a usar herramientas que probablemente estarán obsoletas dos años después de que te gradúes?
Por lo tanto, parece razonable argumentar que si se elimina la teoría y la historia, entonces el contenido pedagógico de la educación "formal", en comparación con la educación "informal" más uno o dos años de experiencia, es aproximadamente equivalente. Autodidactos? … Son un caso de borde difícil. Tienden a ser muy inteligentes, tanto a los que trabajan duro como a los rápidos, pero no han pasado tanto tiempo aprendiendo implícitamente de los errores de los demás, por lo que, si aún se encuentran cerca de su etapa larvaria, es más probable que los vuelvan a hacer. Un autodidacta con una extensa historia / cartera, sin embargo, no tiene huelgas contra ellos.
¿Qué pasa con el sesgo de acreditación y selección de las personas más inteligentes que se sienten atraídas por las universidades? Admito que hay algo para eso. Si he oído hablar de una universidad (de nuevo, no crecí aquí), eso me predispone a favor de un candidato. Pero, al mismo tiempo, el sistema educativo de los Estados Unidos está tan jodido, que brinda tales ventajas a los que ya tienen privilegios, y la existencia de estudiantes "legados" (que realmente no ocurren en Canadá), que al mismo tiempo soy más cauteloso.
Podría concluir que, en última instancia, no distingo entre alumnos formados formal e informalmente. Pero te equivocarías. La mayoría de las veces son sorprendentemente equivalentes. Pero la ingeniería de software no es siempre como la plomería, y debido a eso, me encuentro bastante poco dispuesto a eliminar la teoría y la historia del análisis, después de todo.
Se supone que la educación formal, ya sea de ingeniería o de artes liberales, le enseña cómo pensar críticamente, cómo analizar sistemáticamente y estratégicamente y cómo educarse a sí mismo de manera eficiente, más de lo que se supone que importa cualquier cuerpo particular de conocimiento. No siempre tiene éxito en esto. Y la mayoría de las veces no necesita ninguna de esas habilidades (excepto la última, que siempre necesitará).
Pero en las ocasiones en que usted necesita esas otras meta-habilidades, las necesita muy mal, y me parece que es mucho menos probable que las obtenga con entrenamiento informal o autodidacticismo. Probablemente tengas razón para sospechar de esta vista. Yo sospecho de ello yo mismo. Probablemente es esencialmente imposible de medir y probar.
Sin embargo, todavía me parece que lo que obtiene de la educación formal no es tanto una expansión de su mente como una expansión específica y (en cierto modo) controlada de su visión del mundo, una que aún no se ha replicado en ningún otro lugar. Eso no significa que no pueda ser. Pero hay más que solo entrenamiento intensivo en habilidades técnicas … y quizás ese tipo de meta-capacitación sea el próximo paso en la educación no tradicional.