Tuvimos un profesor invitado en nuestra escuela, se puso en una tangente con respecto a los graduados y no alcanzar el nivel de habilidad que espera, es decir. conocimiento de un gran lenguaje compilado como Java, C ++ o C #, un lenguaje de script como Python o Ruby, un marco web. ¿Cuáles son algunas otras habilidades que ustedes piensan que deberían ser absolutamente críticas para los estudiantes graduados?
9
Respuestas:
De lejos, diría que está ansioso por aprender. La universidad no tiene la intención de darte las habilidades que necesitas para convertirte en programador. Su objetivo es enseñarle las habilidades que necesita para aprender esas habilidades.
fuente
Los recién graduados necesitan más que solo un deseo de aprender, necesitan una obsesión por aprender, una comprensión de cómo aprender y una base firme en las realidades del software. Generalmente no me importa qué idiomas sabes, pero cada junior debe:
Comprender la historia . La informática es un campo bien investigado, con muchos problemas resueltos. Conocer este hecho abre la puerta a aprender de lo que se te presenta. Incluso sabiendo que hay una rica historia para extraer el conocimiento de más de muchos graduados grok. Esto incluye cosas como la notación big-O, historia de algoritmos, principios de los profetas (Knuth, K&R, Hofstdater, etc.) y prácticas y patrones comúnmente aceptados.
Sepa que se puede resolver . Siempre me sorprende cuando un desarrollador está perplejo por un problema. Parte del aprendizaje para aprender es el principio simple de que los problemas son fácilmente solubles, siempre. Una vez que sepa esto, enmarca su pensamiento para encontrar una respuesta sensata.
Comprender la descomposición . No solo se pueden resolver los problemas, sino que el camino para hacerlo es tan simple como dividir y conquistar. Reduzca un problema a componentes más simples, y su respuesta siempre se presentará.
Saber medir . Además de poder descomponer los problemas, los nuevos desarrolladores necesitan saber cómo recopilar datos sobre estos problemas. ¿Cuánto tiempo? ¿Que tan grande? ¿Qué rápido? ¿Cuántos? Los hechos simples son un paso hacia la comprensión y el pensamiento objetivo. Hacer suposiciones sin hechos es una manera fácil de perderse en el espacio del problema.
Se objetivo . Todos los problemas pueden descomponerse, medirse y entenderse simplemente. Los problemas que no se pueden entender simplemente requieren una descomposición, medición y comprensión adicionales. No sirve de nada enojarse o frustrarse, ni es productivo discutir sobre teorías o culpar. Cualquier comportamiento o creencia irracional relacionada con el proceso de resolución de problemas es veneno, lo que hace que las soluciones sean muy difíciles de encontrar.
Prefiere patrones y principios . Encontrará docenas de formas correctas de hacer cosas, lenguajes, modelos de programación, arquitecturas informáticas e incluso métodos de ingeniería. No existe una única forma correcta, pero existen conceptos subyacentes sólidos que puede aplicar una y otra vez. Aprenda a ver estos patrones, ya que guiarán su aprendizaje y pensamiento en cada paso del camino.
fuente
fuente
Como empleador, solo emplearé personas como programadores que:
En mi experiencia, menos del 5% de los graduados en ciencias de la computación que solicitan trabajos de programación en realidad tienen estas habilidades, en un nivel básico. Estas son las habilidades mínimas que se necesitan para ser comercialmente útiles y, lo que es más importante, no todos son capaces de aprender estas habilidades.
Otros buenos para tener son:
Éstos facilitan su integración con el equipo de desarrollo existente, pero son asignaturas que normalmente se pueden enseñar en el trabajo.
fuente
Una vez tuve un equipo que "heredé", en su mayoría con personal recién graduado y tuve mi experiencia de que los que hicieron la programación real "junto" al estudio (para ganar algo de dinero extra) eran los miembros del equipo más capaces. Por lo tanto, la experiencia es la clave y solo importa poco el idioma.
Sin embargo, si observa lo que buscan los reclutadores (en todos los sitios de reclutamiento comunes como jobserver.com, etc.) es interesante observar que se piden mucho los C ++, C #, Java, pero también hay otros buscados y También existen cosas "exóticas" como COBOL.
fuente
El proceso de aprendizaje en esta profesión nunca termina. Uno debe aprender y mejorar constantemente a sí mismo, de lo contrario, "abandona" el juego muy rápido.
fuente
Las otras respuestas son buenas, pero diría que la habilidad # 1 pasada por alto en la universidad parece ser la ingeniería de software real .
Las clases básicas para enseñar OOP y un lenguaje como Java son geniales, pero en el tercer y cuarto año, ¿por qué los estudiantes (al menos en mi universidad local) escriben compiladores y sistemas operativos en lugar de aprender a identificar y crear una buena arquitectura? para analizar los requisitos y crear a partir de eso una lista de especificaciones técnicas, y quizás lo más importante, cuál es la diferencia entre un código bueno que funciona y un código malo que funciona.
Es como si nuestras universidades casi quisieran producir codificadores en lugar de ingenieros de software . Nunca contrataría a alguien que no mostrara alguna habilidad / talento en ingeniería.
fuente