Cómo aprovechar al máximo la educación en informática

La mayoría de los programadores modernos recibieron su educación en las universidades. Con el tiempo, esto cambiará, pero ahora las cosas son tales que el buen personal de las empresas de TI todavía proviene de las universidades. En este post, Stanislav Protasov, director de Relaciones Universitarias de Acronis, habla sobre su visión de las características de la formación universitaria para futuros programadores. Los profesores, estudiantes y quienes los contratan pueden incluso encontrar algunos consejos útiles debajo del corte.

Cómo aprovechar al máximo la educación en informática

Durante los últimos 10 años he estado enseñando matemáticas, algoritmos, lenguajes de programación y aprendizaje automático en varias universidades. Hoy, además de mi puesto en Acronis, también soy subdirector del departamento de informática teórica y aplicada del MIPT. A partir de mi experiencia trabajando en buenas universidades rusas (y no sólo), hice algunas observaciones sobre la preparación de los estudiantes en disciplinas informáticas.

La regla de los 30 segundos ya no funciona

Estoy seguro de que te has encontrado con la regla de los 30 segundos, que establece que un programador debe comprender el propósito de una función después de echar un vistazo rápido a su código. Se inventó hace mucho tiempo y desde entonces han aparecido muchos sistemas operativos, lenguajes, hardware y algoritmos. He estado escribiendo código durante 12 años, pero hace relativamente poco tiempo vi el código fuente de un producto, que a primera vista me pareció un hechizo mágico. Hoy en día, si no estás inmerso en el tema, la regla de los 30 segundos deja de funcionar. De lo contrario, no sólo 30, sino también 300 segundos no serán suficientes para que puedas descubrir qué es qué.

Por ejemplo, si desea escribir controladores, deberá profundizar en esta área y leer miles de líneas de código específico. Con este enfoque para estudiar un tema, un especialista desarrolla una "sensación de fluidez". Como en el rap, cuando la sensación de una buena rima y el ritmo adecuado aparece sin especial racionalización. Del mismo modo, un programador bien capacitado puede reconocer fácilmente código ineficaz o simplemente incorrecto sin entrar en un estudio detallado de dónde ocurrió una violación de estilo o se utilizó un enfoque subóptimo (pero este sentimiento puede ser muy difícil de explicar).

La especialización y la creciente complejidad llevan al hecho de que la educación de licenciatura ya no ofrece la oportunidad de estudiar todas las áreas con suficiente profundidad. Pero es precisamente en este nivel educativo donde es necesario adquirir una perspectiva. Posteriormente, en la escuela de posgrado o en el trabajo, deberá dedicar algún tiempo a sumergirse en los problemas y detalles específicos del área temática, estudiar la jerga, los lenguajes de programación y el código de sus colegas, leer artículos y libros. Me parece que esta es la única manera, con la ayuda de la universidad, de “inflar el travesaño” para el futuro. Especialistas en forma de T.

¿Qué lenguaje de programación es mejor para enseñar en la universidad?

Cómo aprovechar al máximo la educación en informática
Para mi alegría, los profesores universitarios ya han dejado de buscar la respuesta correcta a la pregunta: "¿Cuál es el mejor idioma para programar?" El debate sobre cuál es mejor, C# o Java, Delphi o C++, prácticamente ha desaparecido. La aparición de muchos lenguajes de programación nuevos y la acumulación de experiencia pedagógica han llevado a una comprensión establecida en el entorno académico: cada lenguaje tiene su propio nicho.

El problema de la enseñanza utilizando uno u otro lenguaje de programación ha dejado de ser una prioridad. No importa en qué idioma se imparta el curso. Lo principal es suficiente expresividad del lenguaje. Libro "El arte de la programación multiprocesador” es un buen ejemplo de esta observación. En esta edición ya clásica, todos los ejemplos se presentan en Java, un lenguaje sin punteros, pero con Garbage Collector. Casi nadie diría que Java está lejos de ser la opción óptima para escribir código paralelo de alto rendimiento. Pero el lenguaje era adecuado para explicar los conceptos presentados en el libro. Otro ejemplo - curso clásico de aprendizaje automático Andrew Nna, enseñó en Matlab en el entorno Octave. Hoy en día se podría elegir un lenguaje de programación diferente, pero ¿qué diferencia realmente hay si las ideas y los enfoques son importantes?

Más práctico y más cercano a la realidad

Al mismo tiempo, en los últimos años ha habido muchos más profesionales en las universidades. Si antes los programas universitarios rusos eran criticados activamente por estar divorciados de la realidad, hoy no se puede decir lo mismo de la educación en TI. Hace 10 años casi no había profesores en las universidades con experiencia real en la industria. Hoy en día, cada vez más a menudo las clases en un departamento especializado las imparten no profesores de informática a tiempo completo, sino especialistas en TI en ejercicio que imparten solo 1 o 2 cursos en su tiempo libre de su trabajo principal. Este enfoque se justifica desde el punto de vista de la formación de alta calidad del personal, cursos de actualización y, por supuesto, la búsqueda de empleados potenciales en la empresa. No creo que revele el secreto diciendo que apoyamos un departamento básico en MIPT y establecemos relaciones con otras universidades, incluso para preparar a los estudiantes que podrían comenzar sus carreras en Acronis.

¿Matemático o programador?

Cómo aprovechar al máximo la educación en informática
Las guerras santas, que antes giraban en torno a lenguajes de programación, han tomado una dirección filosófica. Ahora los llamados “programadores” y “matemáticos” están discutiendo entre sí. En principio, estas escuelas podrían dividirse en dos programas educativos, pero la industria aún no logra separar tales sutilezas, y de universidad en universidad tenemos una educación similar con un enfoque ligeramente diferente. Esto significa que tanto el estudiante como la empresa en la que seguirá trabajando tendrán que complementar el rompecabezas del conocimiento con las piezas que faltan.

La aparición de profesionales en las universidades que escriben códigos industriales en diferentes idiomas brinda a los estudiantes mejores habilidades de desarrollo. Al estar bien familiarizados con las implementaciones de bibliotecas estándar, marcos y técnicas de programación, los programadores practicantes inculcan en los estudiantes el deseo de escribir buen código, de hacerlo de manera rápida y eficiente.

Esta útil habilidad, sin embargo, a veces conduce al surgimiento de quienes gustan de reinventar la rueda. Los estudiantes de programación piensan así: "¿Debería escribir otras 200 líneas de buen código que resuelvan el problema de frente?"

Los profesores que han recibido una educación matemática clásica (por ejemplo, de la Facultad de Matemáticas o Matemáticas Aplicadas) a menudo trabajan en un entorno pseudocientífico o en el campo de la modelización y el análisis de datos. Los “matemáticos” ven los problemas en el campo de la informática de otra manera. Principalmente no operan con código, sino con algoritmos, teoremas y modelos formales. Una ventaja importante del enfoque matemático es una comprensión fundamental clara de lo que se puede y lo que no se puede resolver. Y como resolverlo.

En consecuencia, los profesores de matemáticas hablan de programación con un sesgo hacia la teoría. Los estudiantes que provienen de “matemáticos” a menudo encuentran soluciones bien pensadas y teóricamente superiores, pero generalmente subóptimas desde un punto de vista lingüístico y, a menudo, simplemente escritas de manera descuidada. Un estudiante así cree que su objetivo principal es demostrar la capacidad de resolver este tipo de problemas, en principio. Pero la implementación puede ser poco convincente.

Los niños que fueron criados como programadores en la escuela o en sus primeros años traen consigo una “bicicleta muy bonita”, que, sin embargo, normalmente no funciona de manera muy eficiente de forma asintótica. Por el contrario, no se proponen la tarea de teorizar profundamente y recurrir a los libros de texto en busca de soluciones óptimas, prefiriendo un código hermoso.

En diferentes universidades, durante las entrevistas con los estudiantes, suelo ver en qué “escuela” se basa su educación. Y casi nunca he encontrado un equilibrio perfecto en la educación básica. Cuando era niño, en mi ciudad podías prepararte para olimpiadas de matemáticas, pero no había clubes de programación. Ahora, en los clubes, los niños aprenden a programar en Go y Python “de moda”. Por tanto, incluso a nivel de admisión a las universidades, existen diferencias de enfoque. Creo que es importante mantener ambas habilidades en una universidad, de lo contrario vendrá a trabajar a la empresa un especialista con una base teórica insuficiente o una persona que no ha aprendido y no quiere escribir un buen código.

Cómo “inflar el travesaño” para el futuro ¿Especialistas en forma de T?

Cómo aprovechar al máximo la educación en informática
Está claro que en tales condiciones el alumno simplemente elige lo que más le gusta. El profesor simplemente transmite el punto de vista que le resulta más cercano. Pero todos se beneficiarán si el código está escrito de manera hermosa y, desde el punto de vista de los algoritmos, todo es claro, razonable y efectivo.

  • Horizontes de TI. Un graduado de una licenciatura en Ciencias de la Computación es un especialista preparado y con una perspectiva técnica desarrollada, que probablemente haya elegido su perfil. Pero en el tercer año, no sabemos qué hará. Puede dedicarse a la ciencia o la analítica o, por el contrario, escribir una gran cantidad de código todos los días. Por lo tanto, es necesario mostrar al estudiante todos los aspectos del trabajo en el campo de TI y presentarle todas las herramientas. Lo ideal es que los profesores de los cursos teóricos muestren una conexión con la práctica (y viceversa).
  • Punto de crecimiento. Al propio estudiante le conviene no permitirse llegar a los extremos. Comprender si eres un “matemático” o un “programador” no es difícil. Basta escuchar el primer impulso a la hora de resolver un problema: ¿qué quieres hacer: mirar el libro de texto en busca del enfoque óptimo o escribir un par de funciones que definitivamente te serán útiles más adelante? En base a esto, puede construir una trayectoria complementaria adicional de su aprendizaje.
  • Fuentes alternativas de conocimiento.. Sucede que el programa está bien equilibrado, pero la "Programación de sistemas" y los "Algoritmos" son enseñados por personas completamente diferentes, y algunos estudiantes están más cerca del primer maestro y otros, del segundo. Pero incluso si no le agrada el profesor, esto no es motivo para descuidar algunas materias en favor de otras. Los propios solteros están interesados ​​en encontrar la voluntad de trabajar con fuentes de conocimiento y en ningún caso confiar en opiniones radicales como “las matemáticas son la reina de las ciencias, lo principal es conocer los algoritmos” o “un buen código compensa todo lo demás”.

Puede profundizar sus conocimientos teóricos recurriendo a literatura especializada y cursos en línea. Puedes mejorar tus habilidades en lenguajes de programación en Coursera, Udacity o Stepik, donde se presentan muchos cursos diferentes. Además, los estudiantes suelen empezar a ver cursos de idiomas intensos si sienten que el profesor de algoritmos conoce bien las matemáticas, pero no puede responder preguntas complejas de implementación. No todo el mundo estará de acuerdo conmigo, pero en mi práctica ha demostrado su eficacia. especialización en C++ de Yandex, en el que se analizan secuencialmente características cada vez más complejas del lenguaje. En general, elija un curso con altas calificaciones de empresas o universidades de renombre.

Soft skills

Cómo aprovechar al máximo la educación en informática
Al pasar de la universidad a trabajar en cualquier empresa, desde una startup hasta una gran corporación, los estudiantes incluso de las mejores universidades se encuentran mal adaptados al entorno laboral real. El hecho es que hoy las universidades “cuidan” mucho a los estudiantes. Incluso después de faltar a muchas clases, no prepararse a tiempo para los exámenes y exámenes, quedarse dormido o llegar tarde a un examen, todos pueden aprobarlo y volver a realizarlo y, al final, recibir un diploma.

Sin embargo, hoy en día existen todas las condiciones para que los estudiantes estén preparados para la vida adulta y la actividad profesional independiente. No sólo tendrán que programar, sino también comunicar. Y esto también hay que enseñarlo. Las universidades tienen diversos formatos para desarrollar estas habilidades, pero lamentablemente a menudo no se les presta suficiente atención. Sin embargo, tenemos muchas oportunidades para adquirir habilidades efectivas para trabajar en equipo.

  • comunicación empresarial escrita. Desafortunadamente, la mayoría de los graduados que salen de la universidad no tienen idea de la etiqueta por correspondencia. La especificidad de la comunicación en la mensajería instantánea está en el intercambio de mensajes día y noche y en el uso de un estilo conversacional y vocabulario informal. Sin embargo, sería posible entrenar el habla escrita cuando el estudiante se comunique con el departamento y la universidad.

    En la práctica, los gerentes a menudo se enfrentan a la necesidad de descomponer un gran proyecto en pequeñas tareas. Para hacer esto, debe describir claramente cada tarea y sus componentes para que los desarrolladores junior comprendan lo que se requiere de ellos. Una tarea mal definida a menudo conduce a la necesidad de rehacer algo, razón por la cual la experiencia en comunicación escrita ayuda a los graduados a trabajar en equipos distribuidos.

  • Presentación escrita de los resultados de su trabajo.. Para presentar sus proyectos educativos, los estudiantes de último año pueden escribir publicaciones sobre Habr, artículos científicos y también informes. Hay muchas oportunidades para ello: en algunas universidades, los cursos comienzan en el segundo año. También puede utilizar ensayos como forma de control; su forma suele ser más parecida a la de un artículo periodístico. Este enfoque ya se ha implementado en la Escuela Superior de Economía de la Universidad Nacional de Investigación.

    Si una empresa aplica un enfoque flexible al desarrollo, tiene que presentar los resultados de su trabajo en porciones más pequeñas, pero con mayor frecuencia. Para ello, es importante poder transmitir brevemente los resultados del trabajo de un especialista o de todo el equipo. Además, hoy en día muchas empresas realizan "revisiones", anuales o semestrales. Los empleados discuten los resultados y las perspectivas laborales. Una revisión exitosa es la razón principal para el crecimiento profesional, bonificaciones, por ejemplo, en Microsoft, Acronis o Yandex. Sí, puedes programar bien, pero "sentado en un rincón", incluso un buen especialista siempre perderá frente a alguien que sabe cómo presentar bien su éxito.

  • Writing Academic. La escritura académica merece una mención especial. Es útil que los estudiantes se familiaricen con las reglas para escribir textos científicos, usar argumentos, buscar información en diversas fuentes y formatear las referencias a estas fuentes. Es recomendable hacerlo en inglés, ya que hay muchos más buenos textos en la comunidad académica internacional, y para diversas disciplinas ya existen plantillas establecidas para presentar resultados científicos. Por supuesto, también se necesitan habilidades de escritura académica al preparar publicaciones en ruso, pero hay muchos menos ejemplos de buenos artículos modernos en inglés. Estas habilidades se pueden adquirir a través de un curso apropiado, que ahora se incluye en muchos programas educativos.
  • Liderar reuniones. La mayoría de los estudiantes no saben cómo prepararse para reuniones, redactar actas y procesar datos. Pero si desarrollamos esta habilidad en la universidad, por ejemplo, participando en proyectos en equipo, podemos evitar perder tiempo en el lugar de trabajo. Esto requiere supervisión del trabajo de proyecto de los estudiantes para enseñarles cómo llevar a cabo reuniones de manera efectiva. En la práctica, esto le cuesta a cada corporación mucho dinero; después de todo, si varias personas que reciben un gran salario pasan una hora de trabajo en un mitin, lo deseable es obtener el correspondiente retorno.
  • Hablar en público. Muchos estudiantes se enfrentan a la necesidad de hablar en público sólo mientras defienden su tesis. Y no todo el mundo está preparado para esto. He visto a muchos estudiantes que:
    • estar de espaldas al público,
    • balanceándose, tratando de introducir a la comisión en el trance,
    • romper bolígrafos, lápices y punteros,
    • caminando en circulos
    • mira al suelo.

    Esto es normal cuando una persona actúa por primera vez. Pero debes empezar a trabajar con este estrés antes, defendiendo tu trabajo de curso en un ambiente amigable, entre tus compañeros de clase.

    Además, una práctica habitual en las corporaciones es dar a un empleado la oportunidad de proponer una idea y recibir financiación, un puesto o un proyecto dedicado a ella. Pero, si lo piensas bien, se trata de la misma protección que los cursos, sólo que en un nivel superior. ¿Por qué no practicar habilidades profesionales tan útiles mientras estudias?

¿Qué me estoy perdiendo?

Una de las razones para escribir esta publicación fue el artículo, publicado en el sitio web de la Universidad Estatal de Tyumen. El autor del artículo se centra únicamente en las deficiencias de los estudiantes rusos observadas por los profesores extranjeros. La práctica de mi enseñanza en diferentes universidades sugiere que la escuela y la educación superior rusas proporcionan una buena base. Los estudiantes rusos dominan las matemáticas y los algoritmos, y es más fácil entablar una comunicación profesional con ellos.

En el caso de los estudiantes extranjeros, por el contrario, las expectativas de un profesor de ruso a veces pueden ser demasiado altas. Por ejemplo, en el nivel de formación básica en matemáticas, los estudiantes indios que conocí son similares a los rusos. Sin embargo, a veces carecen de conocimientos especializados cuando finalizan sus estudios universitarios. Es probable que los buenos estudiantes europeos tengan una formación matemática menos sólida a nivel escolar.

Y si estudias o trabajas en una universidad, ahora puedes trabajar tus habilidades comunicativas (propias o de tus alumnos), ampliar tu base fundamental y practicar la programación. Para ello, el sistema educativo ruso ofrece todas las oportunidades, sólo hay que utilizarlas correctamente.

Me alegraré si en los comentarios de la publicación compartes tus enlaces a cursos y métodos que ayudan a igualar el equilibrio en la educación, así como otras formas de mejorar las habilidades sociales mientras estudias en una universidad.

Fuente: habr.com

Añadir un comentario