Cómo entrenar a una persona para convertirse en un buen programador

La mejor manera de enseñarle a alguien a programar es darle un objetivo y decirle que puede hacer cualquier pregunta que desee. Comience con algo pequeño quizás, pero deles algo que haga algo.

Quiero que escribas una aplicación que le pida al usuario su nombre y luego le diga hola. (De entrada y salida)

Ahora escriba una aplicación que le pida al usuario que ingrese dos números y los sume. (Operaciones básicas)

Ahora haga que la aplicación pregunte qué operación desean realizar (suma, resta, multiplicación o división), solicite los números y realice la operación. (Introducción de lógica condicional)

Ahora haga que esa aplicación siga solicitando números y operaciones hasta que el usuario ingrese una entrada en blanco. Bonificación si la aplicación obedece el orden de las operaciones. (Bucles)

Haga que el alumno inicie la aplicación desde cero cada vez. Porque a medida que reescriben la entrada, la salida, la operación y la lógica condicional, se refuerza.

Cualquier concepto que quieras enseñar puede agregarse a esto. ¿Quieres enseñar operaciones de red? Haga que el alumno escriba un servidor que escuche una solicitud matemática y devuelva el resultado a un cliente.

¿Quieres enseñar HTML? Escriba una página web servida por un servidor que presente un formulario y cuando el usuario lo envíe, el servidor devolverá la respuesta.

JavaScript? Haga que la página web haga las operaciones del lado del cliente.

iOS? Haz una aplicación de calculadora.

Presentemos nuevos conceptos, ¿qué sucede si quiero presentar problemas a un usuario y hacer que lo resuelvan y la aplicación verifica la respuesta? Al principio pueden ser problemas codificados con la respuesta proporcionada. El alumno ya tiene las habilidades para hacer esto.

Pero, ¿qué pasaría si quisiéramos permitir que un maestro creara problemas y la aplicación los almacenara para el usuario? Ahora estamos introduciendo almacenamiento.

¿Qué sucede si queremos que las aplicaciones se conecten a un servidor central “problemático”, recuperar un conjunto de problemas e informar los resultados del usuario al servidor?

De repente, estamos entrando en el ámbito de la construcción de un LMS y esto es solo después de 12 lecciones.

Hay temas complementarios que pueden abordarse en el camino, como el control de origen, la implementación de una aplicación en la nube, la recopilación de requisitos, la gestión de proyectos, las revisiones de código, las pruebas unitarias, etc.

¿Cuáles son las claves de este enfoque?

  1. Bucle de retroalimentación: desde el primer día, el alumno es recompensado por sus esfuerzos
  2. Reforzar: a medida que introducimos nuevos conceptos, reforzamos los que ya se han aprendido
  3. Práctico: el estudiante está construyendo a la larga una aplicación del mundo real. Durante doce semanas, han construido algo que se puede demostrar que muestra cuán lejos han llegado de solo escribir hello world.
  4. Complementado fácilmente: puede agregar lecciones sobre teoría y funcionamiento interno de las computadoras, pero no son el núcleo de este plan de estudios
  5. Repetible y modificable: una vez que haya enseñado a utilizar este enfoque, puede modificarlo y enfocarse en aquellos elementos que importan. Cambie hacia lo que está construyendo (por ejemplo, haga que el curso se desarrolle hacia un clon de Twitter; el ejercicio sobre cómo trabajar las operaciones matemáticas en un clon de Twitter se deja para el lector)

Lo importante es que el alumno tenga un tiempo constante practicando programación porque ese es el ÚNICO método comprobado consistentemente de aprender a programar … la repetición.

Fundamentos + oportunidad + contexto + comentarios y colaboración:

  1. Asegúrese de que estén educados en las mejores prácticas de ingeniería. Responsabilidad individual, inversión de dependencia, pruebas exhaustivas. Asegúrese de que tengan una buena comprensión de las compensaciones básicas de uso de memoria y CPU.
  2. Dales la oportunidad de fracasar y triunfar. Bríndeles un ambiente seguro para experimentar y construir.
  3. Asegúrese de que estén trabajando en una buena base de código. Si nunca ha visto el código de calidad de producción, ¿cómo se puede esperar que lo escriba mágicamente?
  4. Asegúrese de que puedan colaborar y recibir comentarios de buenos programadores. Esta es la parte más importante. Revisiones de códigos, sesiones de diseño, programación de pares. Nada acelerará a un ingeniero más rápido que emparejar y colaborar con alguien bueno. La paciencia y la amabilidad son importantes aquí. Comentarios positivos, reflexivos y honestos también.

More Interesting

Quiero hacer un trabajo en línea para esto, ¿qué puedo hacer?

¿Es necesaria la codificación para estudiar para un estudiante de ECE?

Estudiante de negocios que aprende a codificar y me fascina. La situación ideal es un gerente de producto que trabaja en tecnología revolucionaria. ¿Dónde debería mirar?

¿Cuáles son las posibilidades de una carrera exitosa en informática para alguien que comienza en sus 50 años?

Cómo entrevistar a un arquitecto de datos

Tengo 35 años y estoy desempleado. ¿Quiero trabajar en la industria tecnológica pero no tengo educación relevante? No he trabajado en 3 años. ¿Es demasiado tarde para comenzar una nueva carrera?

¿Cómo son las ubicaciones de ingeniería eléctrica (EEE) en RVCE?

¿Debo abandonar la ingeniería como especialidad si mis calificaciones están bajando?

¿Cuáles son las clasificaciones entre los nuevos IIT para CSE y ramas eléctricas?

Cómo construir mi red de soporte profesional lo antes posible

Cómo enumerar en LinkedIn a un empleador anterior que haya sido adquirido por otra empresa

Estoy interesado en las matemáticas y quiero estudiar ingeniería, ¿qué título debo tomar?

Mi jefe es horrible escribiendo. ¿Cómo explico por qué no entiendo sus correos electrónicos?

Estoy explorando la opción de una carrera en periodismo, ¿cómo hago para que mi pie atraviese la puerta de la sala de redacción?

¿Sería práctico para una persona interesada en aprender a codificar poder obtener ingresos como profesional independiente que trabaja desde casa? ¿Cómo venderías tus servicios?