¿Cuáles son las habilidades que debe tener cada programador que se gradúa de la universidad? [cerrado]

9

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?


fuente
¿Asumo que te refieres a graduarte de una universidad?
Michael Shaw
1
@Ptolomeo: En los Estados Unidos, el término universidad es correcto.
Macneil
1
Voluntad de patearse el culo y desaprender el mensaje de texto, ¡jóvenes punks! socializedpr.com/…
Trabajo

Respuestas:

27

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.

Jason Baker
fuente
No pudo haberse dicho mejor.
Chris
4

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:

  1. 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.

  2. 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.

  3. 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á.

  4. 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.

  5. 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.

  6. 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.

Bruce Alderson
fuente
1
  1. Una pasión por programar bien
  2. Humildad
  3. La capacidad de aprender cosas nuevas rápidamente
TaylorOtwell
fuente
0

Como empleador, solo emplearé personas como programadores que:

  1. Tener experiencia de paso único a través del código.
  2. Puede seleccionar un diseño apropiado para resolver un problema específico simple.
  3. Puede implementar código que refleje su diseño elegido.

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:

  • Experiencia de trabajo en un proyecto de equipo.
  • Uso de control de fuente
  • Experiencia de pruebas unitarias

Éstos facilitan su integración con el equipo de desarrollo existente, pero son asignaturas que normalmente se pueden enseñar en el trabajo.

Michael Shaw
fuente
0

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.

hol
fuente
0
  1. Habilidades interpersonales y de comunicación.
  2. Enfoque pragmático (no esa teoría académica)
  3. Capacidad para pensar como un cliente que no tiene una inclinación técnica
  4. Capacidad para evaluar lo que es importante y lo que se puede ignorar, en términos de costos / beneficios
  5. Capacidad para trabajar en equipo
  6. Capacidad para pensar estratégicamente: arquitectura, extensibilidad, escalabilidad
  7. Apertura para aceptar que las enseñanzas universitarias tienen poco que ver con el mundo real (depende de la universidad, a algunos les va mejor).

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.

Torre
fuente
Todos estos son útiles. Sin embargo, casi cero graduados universitarios los tienen, y no son críticos, ya que la mayoría se adquieren fácilmente en el lugar de trabajo. Creo que estabas respondiendo una pregunta diferente.
dbkk
@dbkk - Perdón, pero la pregunta no era "qué habilidades tienen los programadores graduados", sino "qué ... debería tener". Además, no, no se adquieren fácilmente. Todo lo contrario: la mayoría de las veces, las personas con años de experiencia todavía echan de menos la mayoría.
Torre
1
Estas son habilidades generales, y muchas no son realmente adecuadas para aprender en la escuela.
David Thornley
-1

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.

Nicole
fuente
44
Porque lo que se enseña a la gente es informática, no ingeniería de software. ¡Este problema desaparecería si las universidades y los estudiantes se dieran cuenta de que la informática! = Ingeniería de software, la informática es una ciencia, la informática no se trata de programación, y la ingeniería de software es más que programación.
Thomas Owens
-1. Es importante aprender cómo funcionan las cosas debajo del capó (compiladores, sistemas operativos, lenguaje ensamblador, etc.) incluso si nunca trabaja realmente a este nivel, porque en algún momento enfrentará abstracciones con fugas.
dsimcha
@dsimcha, si crees eso, tienes una visión muy limitada de qué tipo de ingenieros de software están empleando las empresas en este momento en el mundo real. No es que esas cosas no agreguen ningún valor, es el costo de oportunidad de no enseñar algo más esencial.
Nicole