Esta pregunta me hizo pensar que había una mejor pregunta que hacer.
¿Qué aprendiste en la escuela que no te importaba en ese momento, pero que resultó ser útil o que tuviste que volver a aprender en el lugar de trabajo porque lo tenías en la escuela, pero no retenías la información y la necesitabas? (Me refiero a trabajos relacionados con software).
Creo que esto podría ayudar a los estudiantes universitarios a identificar algo de lo que realmente deberían prestar atención mientras están en la escuela.
programming-practices
HLGEM
fuente
fuente
Respuestas:
La mayoría de los desarrolladores que he visto recién salidos de la escuela no tenían mucha experiencia con el desarrollo OO . Han oído hablar de él, pero lo más importante es 'poner cosas en las clases'.
En la escuela obtienes muchos ejemplos sobre autos y personas que se pueden colocar en el marco OO. Esto te enseña polimorfismo, sobrecarga y cosas así. Más bien cosas "básicas". Es bueno saber estas cosas y cómo funcionan, pero nunca obtuve un ejemplo de uso en el mundo real para esto. Creo que es importante mostrar a los estudiantes algunos escenarios del mundo real en los que se usa algún diseño.
Otra cosa que me perdí en la universidad es el uso (o mal uso) de patrones de diseño utilizables . Creo que en estos días los patrones más importantes deberían introducirse en algún lugar a fines del primer año o principios del segundo año. Los estudiantes deben familiarizarse con ellos.
Escribir código limpio es algo que no se enseña (suficiente) en la escuela. Podríamos hacer un verdadero desastre del código y aún así obtener un A +. "Si la aplicación funciona, está bien". Era el lema. Los estudiantes deben aprender a escribir código limpio y de alta calidad y recibir recompensas por ello, esto también significa refactorizar y usar los patrones o las mejores prácticas que han aprendido.
Por supuesto, los estudiantes ansiosos aprendieron todas estas cosas por sí mismos, pero otros que no estaban tan ansiosos no lo hicieron. Esto podría colocarse por falta de motivación, o simplemente no sabían dónde o cómo mirar. Cuando pagas mucho dinero por una escuela, creo que realmente deberían enseñarte estas cosas semi-avanzadas.
Además, algo de escritura decente (profesional) es una habilidad que falta para la mayoría de las personas. Lástima, ya que es muy importante en el mundo real. Lo más importante es poder aclararse en su idioma nativo. Si no puede escribir claramente en su idioma principal, es difícil comunicarse en una empresa.
No sé si puedes enseñarle a alguien a escribir a esta edad, ya debería estar familiarizado con esta habilidad. Se podría repetir lo que se enseña en la escuela secundaria. Tal vez enseñar a los estudiantes cómo escribir comentarios y documentación técnica. Todavía me resulta difícil escribir documentos técnicos, ya que nadie parece saber cómo hacerlo o cuál es el formato predeterminado.
fuente
Chicas. Puedes pensar que estoy bromeando pero no lo estoy.
No te vuelvas loco ni nada, aún necesitas aprender las cosas académicas. Pero también necesita pasar un tiempo aprendiendo sobre las personas, de las personas que lo rodean.
Eso incluye a la mitad de la humanidad que tiene intereses y actitudes completamente diferentes a las de usted y sus amigos, pero con quienes aún querrá llevarse bien.
fuente
Siento que debería haber puesto un 42% más de energía en las estadísticas.
fuente
Escribir sería uno de los más grandes para mí. Sin embargo, no creo que esto se limite solo a los desarrolladores.
fuente
Programación funcional En ese momento parecía un enjambre de paréntesis que no podía hacer nada útil. Ahora que las expresiones lambda están llegando a un uso generalizado, he tenido que volver a entrenar mi cerebro para pensar de esa manera. En la universidad solo quería llevar a LISP y Scheme lo más lejos posible en el espejo retrovisor y nunca mirar atrás. Si tuviera alguna idea de cuán útiles podrían ser algunos aspectos de la programación funcional, habría prestado más atención.
fuente
Expresiones regulares. Recuerdo claramente haberlos volado en la universidad. Han sido indispensables para el trabajo.
fuente
Se toma mi respuesta favorita (estadísticas), así que daré mi segunda respuesta favorita. Notación Big-O y conocimiento de la eficiencia de varios algoritmos clave. Para mí es menos un "arma secreta" que las estadísticas, pero sigue siendo muy valioso.
fuente
Desearía haber escuchado lo que mi maestra me dijo cuando tenía 14 años. Desafortunadamente no puedo decirte qué fue, porque no escuché.
fuente
Tiene que ser el curso de Lenguaje Finito y Teoría de Autómatas.
Pensé que era demasiado teórico, hasta que mi trabajo me exigió hacer un compilador de lenguaje específico de dominio desde cero.
fuente
Yo diría C, así como UNIX. Aunque aprendí UNIX poco después de la universidad, creo que me habría beneficiado haberme enraizado más con UNIX y C antes.
fuente
fuente
Escritura técnica. Paso mucho tiempo escribiendo requisitos, comunicándome con clientes y compañeros de trabajo. Esta es un área en la que tuve una clase de 1 crédito en la universidad. La única otra clase que realmente ayudó en mi carrera fue otra clase de 1 hora de crédito. Eso fue en la programación C. El resto, aunque interesante y probablemente ayudó a mis habilidades analíticas generales, no ha sido realmente un beneficio directo para mi carrera.
De acuerdo, fui a la escuela hace 20 años y C era considerado vanguardista en el departamento de Ingeniería Eléctrica. La gente de CS estaba haciendo algunas cosas con Lisp y C ++, pero probablemente todavía no tanto OO como espero que suceda con los graduados de hoy.
fuente
Documentos de diseño
Siempre asumí que alguien más sería el que crearía estas cosas, o que solo serían documentos simples. No son simples en absoluto y mi equipo es lo suficientemente pequeño como para hacer mis propios documentos de diseño.
fuente
Segunda lengua extranjera. Ruso en mi caso. Muchos libros, recursos y más en este idioma en particular en mi espacio circundante.
fuente
Desde el lado CS de las cosas:
De la categoría de todo:
fuente
Vector de matemáticas y cálculo. Los tenía, pero mis profesores eran terribles y en realidad no enseñaban las materias. Pero como alguien que está muy interesado en la programación de gráficos ... una mejor base de matemática vectorial habría ayudado.
fuente
Obviamente, Historia y Literatura. El problema es a menudo, la escuela no los hace interesantes.
fuente
Electrónica
No tenía muchas cosas relacionadas con el software en la escuela . Ah, informática, pero lo cancelé. :) Pero fue fácil aprender más tarde. Mientras que la electrónica, a menudo no lo entiendo. Microcontroladores, PWM, GPIO - wtf? Desearía entender las cosas.
fuente
Redes distribuidas / informática . La programación no es un desafío, pero los requisitos previos en la arquitectura actual son un conocimiento profundo de los conceptos distribuidos.
Se ofreció un curso detallado como optativo, pero tuvo que elegir entre esto y AI: por lo tanto, no es realmente un arrepentimiento.
fuente
Patrones de diseño: la forma en que se presentaron en realidad no te dijo cuán útiles son, desde entonces he leído un par de libros sobre ellos y creo que son increíblemente útiles.
fuente
Unix, Shellscripting, C. Tuve la oportunidad de aprenderlo bien en la escuela, pero tuve que hacerlo más tarde en el trabajo.
fuente
Material no informático:
Personalmente, desearía tener un idioma nativo como la mayoría de las personas normales por aquí. Con eso quiero decir que la mayoría de las personas nacieron hablando un idioma principal y tal vez eligiendo uno o dos más tarde. En esta situación, los idiomas adicionales generalmente no afectan el idioma nativo porque ya tiene una base sólida que abarca el habla, la escritura y la escucha. Crecí hablando, escribiendo y escuchando tres idiomas distintos simultáneamente. Aunque siempre me fue bien en las clases de idiomas tanto en la escuela como en la universidad, desearía tener fluidez completa en UN idioma. Esto hace que tenga que pensar un poco por una fracción de segundo antes de formular una respuesta. Algunas personas lo notan y concluyen que soy demasiado tímido (lo cual no está mal hasta cierto punto).
fuente
Ciencias económicas. Puede ser aburrido (y un poco cruel), pero de todos modos es el único que es realmente esencial en esta sociedad. Después de eso, estadísticas.
fuente
Creo que las tres clases que me dieron la mayor comprensión de cómo operan las computadoras en la ejecución de software (que esta comprensión permite una programación más óptima) fueron:
Compiladores de sistemas operativos en lenguaje ensamblador
Quizás sea muy fácil pensar que estas clases no son tan útiles a menos que entres en una carrera específicamente enfocada en cualquiera de estas cosas, pero incluso si eres un desarrollador web y no utilizas ninguna de estas directamente esa comprensión subyacente aún sería extremadamente útil para codificar de manera efectiva.
fuente
Hay alrededor de una docena de clases que desearía haber tomado en la universidad pero no lo hice. Principalmente no CS. Fotografía, General Chem, ¡más escritura!
fuente
Es curioso el número de personas que dicen artes liberales: yo era un experto en ciencias cognitivas (Filosofía / CompSci / Anatomía) ... Terminé cambiando a Filosofía / CompSci con una gran especialización en inglés (podría haber obtenido un BA, pero no me molesté en tomar los 101 que me había saltado).
Me llevaría una semana de historias contarles sobre toda la basura que recibí de mis compañeros de CS por tomar esas clases de artes liberales. No importa que media docena de clases de lógica hicieran más por mi programación que cualquier cantidad de cálculo. No importa que todos mis mejores cursos de IA fueran cursos de filosofía. No importaba que hubiera NIÑAS en mis clases de inglés. No, no, era una especie de poser poco serio para tomar esos cursos.
Sin embargo, anímate. Al menos que no tiene que explicar su educación cada vez que alguien se ve en su hoja de vida.
fuente
Ecuaciones cuadráticas y trigonometría.
Muy importante en la escritura de software para las disciplinas de ingeniería tradicionales.
fuente
Ya no presté mucha atención a los compiladores como debería haberlo hecho.
fuente
CS / Math: más lógica, álgebra, teoría de categorías. Cosas más fundamentales y menos aplicadas: comprender las cosas aplicadas cuando conoces bien los fundamentos es mucho más fácil que al revés, y más fructífero.
(Tenía A en las estadísticas, pero tardé mucho en vincularlo con las necesidades reales de programación, olvidé mucho).
'Humanidades': lenguaje natural, escritura, formulación, comprensión y comprensión. No parece importante hasta que te unes a un equipo de más de 2-3 compañeros piratas informáticos, es decir, en la llamada "vida real".
fuente
Gráficos por computadora (representación 3D en opengl / directx)
Sinceramente, estaba muy interesado en ello, pero estaba tan ocupado que no podía dedicar el tiempo que me hubiera gustado. Se convirtió en una tarea en lugar de un hobby. Creo que tendré que recoger un libro para que me interese de nuevo.
fuente