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

La mayoría de los programadores modernos se han graduado de 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 esta publicación, Stanislav Protasov, Director de Relaciones Universitarias de Acronis, habla sobre su visión de las características de la capacitación universitaria para futuros programadores. Los maestros, los estudiantes y quienes los contratan pueden incluso encontrar algunos consejos útiles debajo del corte.

imagen

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 Jefe Adjunto del Departamento de Informática Teórica y Aplicada en MIPT. Por experiencia en buenas universidades rusas (y no solo), hice algunas observaciones sobre la formación de estudiantes en disciplinas informáticas.

La regla de 30 segundos ya no funciona


Estoy seguro de que ha encontrado una regla de 30 segundos, que establece que un programador debe comprender el propósito de una función después de un rápido vistazo a su código. Fue inventado durante mucho tiempo, desde entonces ha habido muchos sistemas operativos, idiomas, hardware y algoritmos. He estado escribiendo código durante 12 años, pero relativamente hace poco vi el código fuente de un producto, que a primera vista me pareció hechizos mágicos. Hoy, si no está inmerso en el área temática, la regla de los 30 segundos deja de funcionar. De lo contrario, no tendrá suficientes no solo 30, sino también 300 segundos para descubrir qué es qué.

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

La especialización y la complejidad creciente conducen al hecho de que la formación de un soltero ya no brinda la oportunidad de estudiar todas las áreas lo suficientemente profundamente. Pero solo en este nivel de educación necesitas ganar horizontes. Después de eso, en una magistratura o en el trabajo, necesitará pasar un tiempo sumergiéndose en los problemas y detalles del área temática, estudiar jerga, lenguajes de programación y el código de colegas, leer artículos y libros. Me parece que esta es la única forma con la ayuda de la universidad de "inflar el travesaño" para futuros especialistas en forma de T.

¿Qué lenguaje de programación se enseña mejor en la universidad?


imagen
Para mi alegría, los profesores universitarios ya se han negado a encontrar la respuesta correcta a la pregunta: "¿Qué es mejor programar?". El debate sobre cuál es mejor - C # o Java, Delphi o C ++ - en realidad ha quedado en nada. La aparición de muchos nuevos lenguajes de programación y la acumulación de experiencia pedagógica han llevado al hecho de que se ha establecido una comprensión en el entorno académico: cada idioma tiene su propio nicho.

El problema de enseñar usando 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 la suficiente expresividad del idioma. El libro " El arte de la programación multiprocesador " es una buena ilustración de esta observación. En esta edición ya clásica, todos los ejemplos están en Java, un lenguaje sin punteros, pero con Garbage Collector. Es poco probable que alguien discuta que Java está lejos de ser la mejor opción al escribir código paralelo de alto rendimiento. Pero para explicar los conceptos descritos en el libro, el lenguaje resultó ser adecuado. Otro ejemplo es el clásico curso de aprendizaje automático de Andrew Eun que se imparte en el lenguaje Matlab en el entorno Octave. Hoy se podría elegir un lenguaje de programación diferente, pero ¿cuál es, en esencia, la diferencia 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, muchos más profesionales se han convertido en universidades. Si los programas universitarios rusos anteriores fueron criticados activamente por estar divorciados de la realidad, hoy ya no es posible decirlo sobre la educación en TI. Hace 10 años, casi no había maestros en las universidades con experiencia real en la industria. Ahora, cada vez más a menudo en el departamento especializado, las clases son impartidas no por maestros de tiempo completo en informática, sino por especialistas en TI que leen solo 1-2 cursos en su tiempo libre de su trabajo principal. Este enfoque se justifica en términos de capacitación de calidad, actualización de cursos y, por supuesto, la búsqueda de empleados potenciales en la empresa. No creo que cuente un secreto diciendo que apoyamos al departamento básico de MIPT y construimos relaciones con otras universidades, incluso para preparar a los estudiantes que puedan comenzar su carrera en Acronis.

¿Matemático o programador?


imagen
Holivars, que solía cambiar los lenguajes de programación, tomó la dirección filosófica. Ahora los "programadores" y los "matemáticos" condicional discuten entre sí. En principio, estas escuelas podrían destacarse en dos programas educativos, pero la industria aún no comparte esas sutilezas bien, y de universidad en universidad tenemos una educación similar con un sesgo ligeramente diferente. Esto significa que tanto el estudiante como la empresa en la que continuará trabajando tendrán que complementar el rompecabezas del conocimiento con las piezas que faltan.

La aparición en universidades de profesionales que escriben códigos industriales en diferentes idiomas les brinda a los estudiantes una mejor habilidad de desarrollo. Al estar familiarizados con la implementación de bibliotecas estándar, marcos y técnicas de programación, los programadores prácticos inculcan en los estudiantes el deseo de escribir un buen código, para hacerlo de manera rápida y eficiente.

Sin embargo, esta habilidad útil a veces conduce al advenimiento de los fanáticos de reinventar la rueda. Los estudiantes de informática piensan de esta manera: "¿qué debo escribir otras 200 líneas de buen código que resolverán el problema en la frente?".

Los maestros que han recibido una educación matemática clásica (por ejemplo, matfak o matemáticas aplicadas) tienen más probabilidades de trabajar en un entorno casi científico, o en el campo del modelado y el análisis de datos. Los "matemáticos" ven los problemas en informática de manera diferente. Principalmente operan no con código, sino con algoritmos, teoremas, modelos formales. Una ventaja importante del enfoque matemático es una comprensión fundamental clara de lo que puede y no puede resolverse. 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" con mayor frecuencia ofrecen soluciones bien pensadas y teóricamente mejores, pero, por regla general, no son óptimas desde el punto de vista del lenguaje y, a menudo, simplemente son inexactas. Tal estudiante cree que su objetivo principal es demostrar la capacidad de resolver tales problemas en principio. Pero la implementación puede ser poco convincente.

Los chicos que fueron educados por programadores en la escuela o en sus primeros cursos traen consigo una "bicicleta muy hermosa", que, sin embargo, generalmente no funciona muy asintóticamente. Por el contrario, no se proponen la tarea de teorizar profundamente y recurrir a los libros de texto en busca de soluciones óptimas, dando preferencia a un código hermoso.

En varias universidades en entrevistas con estudiantes, generalmente veo qué "escuela" subyace a su educación. Y casi no encontré el equilibrio perfecto en educación básica. Cuando era niño, era posible prepararme para las matemáticas olímpicas en mi ciudad, pero no había círculos de programación. Ahora, en los círculos, los niños aprenden a programar en el "moderno" Go y Python. Por lo tanto, ya en el nivel de admisión a las universidades hay discrepancias en los enfoques. Creo que es importante apoyar ambas habilidades en la universidad, de lo contrario, un especialista con una base teórica insuficiente o una persona que no ha aprendido y no quiere escribir un buen código vendrá a trabajar en la empresa.

¿Cómo "bombear el travesaño" para futuros especialistas en forma de T?


imagen
Está claro que en tales circunstancias, el estudiante simplemente elige lo que más le gusta. El profesor simplemente transmite un punto de vista más cercano a él. Pero todos se beneficiarán si el código está escrito maravillosamente, y desde el punto de vista de los algoritmos, todo será claro, razonable y eficiente.

  • Horizontes de TI . Un graduado de una licenciatura en Ciencias de la Computación es un especialista listo con una perspectiva técnica desarrollada, que probablemente eligió su perfil. Pero en los años más jóvenes, no sabemos qué hará él o ella. Puede ir a la ciencia o la analítica, o tal vez, por el contrario, escribir una gran cantidad de código todos los días. Por lo tanto, el estudiante debe mostrar todos los aspectos del trabajo en la esfera de TI, para familiarizarse con todas las herramientas. Idealmente, los profesores de los cursos teóricos mostrarán una conexión con la práctica (y viceversa).
  • Punto de crecimiento Evite rodar a los extremos, en interés del propio alumno. Comprender quién es usted, "matemático" o "programador", no es difícil. Es suficiente escuchar el primer impulso al resolver el problema: ¿qué quiere hacer? ¿Buscar en el libro de texto el mejor enfoque o escribir un par de funciones que definitivamente 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 "Programación del sistema" y "Algoritmos" son personas completamente diferentes, y el primer maestro está más cerca de algunos estudiantes, y el segundo está más cerca de otros. Pero incluso si no le gusta el profesor, esta no es una razón para criticar algunas materias en favor de otras. Los 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 su conocimiento en teoría al consultar literatura especializada y cursos en línea. Puede mejorar su capacidad de usar lenguajes de programación en Coursera, Udacity o Stepik, donde se presentan muchos cursos diferentes. Además, los estudiantes a menudo comienzan a ver cursos de idiomas intensos si sienten que el profesor de algoritmos conoce bien las matemáticas, pero no puede responder preguntas complejas en el campo de la implementación. No todos estarán de acuerdo conmigo, pero en mi práctica, la especialización en C ++ de Yandex se ha demostrado, en la que los chips de lenguaje cada vez más complejos se ordenan secuencialmente. En general, elija un curso con altas calificaciones de empresas o universidades de renombre.

Habilidades blandas


imagen
Al venir de una universidad para trabajar en cualquier empresa, desde una startup hasta una gran corporación, los estudiantes de incluso las mejores universidades están mal adaptados al entorno de trabajo real. El hecho es que hoy las universidades están "amamantando" mucho con los estudiantes. Incluso habiendo perdido muchas clases, no preparado a tiempo para el control y las pruebas, habiendo dormido demasiado, llegando tarde al examen, todos pueden aprobar y volver a tomar nuevamente, y al final obtener un diploma de todos modos.

Sin embargo, hoy existen todas las condiciones para que los estudiantes estén preparados para la edad adulta y la actividad profesional independiente. Tendrán que no solo programar, sino también comunicarse. Y esto también necesita ser enseñado. En las universidades, existen varios formatos para impulsar estas habilidades, pero, lamentablemente, a menudo no reciben suficiente atención. Sin embargo, en nuestro arsenal hay muchas oportunidades para adquirir habilidades efectivas de trabajo en equipo.

  • Comunicación comercial por escrito . Desafortunadamente, la mayoría de los especialistas que abandonan la universidad no tienen idea de la etiqueta de la correspondencia. Los detalles de la comunicación en mensajería instantánea en la mensajería nocturna y en la tarde y el uso del estilo de conversación y el vocabulario informal. Sin embargo, sería posible entrenar el lenguaje escrito en la comunicación del estudiante con el departamento y la universidad.

    En la práctica, los gerentes a menudo enfrentan la necesidad de descomponer un proyecto grande en tareas pequeñas. Para hacer esto, debe describir bien cada tarea y sus componentes, para que los desarrolladores junior entiendan lo que se requiere de ellos. Una tarea mal establecida a menudo lleva a la necesidad de rehacer algo y, por lo tanto, 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 la presentación de sus proyectos educativos, los estudiantes de último año pueden escribir publicaciones sobre Habr, artículos científicos y también solo informes. Hay muchas oportunidades para esto: ya en el segundo año, comienzan los trabajos a término en algunas universidades. También puede usar ensayos como una forma de control; por lo general, están más cerca de un artículo periodístico. Este enfoque ya se ha implementado en la Escuela Superior de Economía.

    Si una empresa practica un enfoque flexible para el desarrollo, es necesario presentar los resultados de su trabajo en porciones más pequeñas, pero con mayor frecuencia. Para esto, es importante poder transmitir brevemente el resultado del trabajo de un especialista o de todo el equipo. Además, muchas empresas hoy realizan "revisiones", anuales o semestrales. Los empleados discuten los resultados y las perspectivas de trabajo. Una revisión exitosa es la razón principal del crecimiento profesional, las bonificaciones, por ejemplo, en Microsoft, Acronis o Yandex. Sí, puedes programar bien, pero "sentarte en la esquina", incluso un especialista difícil siempre perderá ante alguien que sepa cómo presentar bien su éxito.
  • Escritura Académica Por separado, vale la pena destacar la escritura académica. Es útil que los estudiantes se familiaricen con las reglas para escribir textos científicos, usar argumentos, buscar información en varias fuentes y vincularlas a estas fuentes. Es aconsejable hacer esto en inglés, ya que la comunidad académica internacional tiene textos mucho más buenos, y para varias disciplinas ya hay plantillas bien establecidas para presentar resultados científicos. Por supuesto, también se necesitan habilidades de escritura académica en la preparación de publicaciones en ruso, pero hay muchos más ejemplos de buenos artículos modernos en inglés. Puede obtener estas habilidades como parte del curso correspondiente, que ahora se incluye en muchos programas educativos.
  • Liderando reuniones . La mayoría de los estudiantes no saben cómo prepararse para las reuniones, mantener un protocolo y procesar datos. Pero si desarrollamos esta habilidad en una universidad, por ejemplo, al participar en proyectos colectivos, podemos evitar perder el tiempo en el lugar de trabajo. Para hacer esto, necesitamos control sobre el trabajo de diseño de los estudiantes para enseñarles cómo llevar a cabo reuniones de manera efectiva. En la práctica, le cuesta mucho dinero a cada corporación, porque si varias personas que reciben un gran salario gastan una hora de trabajo en una concentración, quiero que obtengan el rendimiento correspondiente.
  • Hablar en público Muchos estudiantes se enfrentan a la necesidad de hablar en público solo para defender su tesis. Y no todos están listos para esto. He visto muchos estudiantes que:

    • de espaldas a la audiencia
    • balanceándose, tratando de introducir una comisión para el trance,
    • romper bolígrafos, lápices y punteros,
    • caminar en círculos
    • mira al piso.

    Esto es normal cuando una persona habla por primera vez. Pero con este estrés, debe comenzar a trabajar antes, con la protección de los cursos en un ambiente amigable entre los compañeros de clase.

    Además, la práctica estándar en las corporaciones es permitir que un empleado proponga una idea, reciba fondos, un puesto o un proyecto dedicado para ello. Pero, si lo piensas bien, esta es la misma defensa del término trabajo, solo que en un nivel superior. ¿Por qué no entrenar habilidades profesionales tan útiles mientras estudias?

¿Qué me estoy perdiendo?


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

En el caso de los estudiantes extranjeros, por el contrario, las expectativas de un maestro ruso a veces pueden ser exageradas. Por ejemplo, en el nivel de capacitación básica en matemáticas, los estudiantes indios que conocí son similares a los estudiantes rusos. Sin embargo, a veces carecen de conocimientos especiales a la salida de los estudios de pregrado. Los buenos estudiantes europeos tienen más probabilidades de tener matemáticas menos fuertes a nivel escolar.

Y si estudias o trabajas en una universidad, ahora puedes desarrollar el trabajo en habilidades comunicativas (tuyas o de tus alumnos), ampliar la base fundamental y practicar la programación. Con este fin, todas las posibilidades están previstas en el sistema educativo ruso: solo necesita usarlas correctamente.

Me alegrará si en los comentarios a la publicación comparte sus enlaces a cursos y métodos que ayudan a equilibrar el equilibrio en la educación, así como de otras maneras para impulsar las habilidades blandas mientras estudia en la universidad.

Source: https://habr.com/ru/post/458676/


All Articles