¿Por qué no estamos aprendiendo el desarrollo de software de la escuela primaria y la arquitectura del software ya que todo eso depende de la lógica y la mayoría de nosotros nacemos con ella?

Debido a que no es el desarrollo de software lo que es difícil, es el hecho de que no hay suficientes personas que tengan una educación cuantitativa adecuada para retomar el desarrollo de software, y mucho menos la informática.

Como alguien que comenzó y administró empresas de tecnología educativa, diría que tenga cuidado con todo el bombo publicitario que rodea la educación CS.

Este es el por qué:

En cuanto a la ingeniería de software, fui autodidacta antes de la universidad. Nadie en mi familia sabe cómo usar correctamente una computadora (y ahora incluso están luchando con un iPad), pero tomé un libro y me enseñé a programar solo pasando innumerables horas leyendo y hurgando con mi 586.

Cuando comencé tenía 12 años, había conceptos que no pude entender hasta uno o dos años después, simplemente porque no había aprendido conceptos algebraicos o lógicos de alto nivel a mi edad que no podía comprender ciertas relaciones lógicas entre el software componentes. Los conceptos y las relaciones fundamentales para el desarrollo de software ya se enseñan en las escuelas, pero el problema es que no hay suficientes personas que estén terminando las escuelas.

He estado trabajando en el campo de la IA durante más de una década, y los estudiantes me han preguntado “¿por qué necesito educación formal? Solo necesito aprender ingeniería de software ”y mi respuesta es siempre la misma: debido a que los problemas del mundo real son complejos, por ejemplo, he trabajado en modelos cognitivos para la educación, esto requiere una comprensión íntima de cómo los humanos adquieren, almacenan y procesan información , y para emplear el aprendizaje automático para analizar comportamientos a escala comercial, debe conocer su álgebra lineal y estadísticas para diseñar algo que valga la pena. De manera similar, cuando empiezo a trabajar con el procesamiento del lenguaje natural, no puedes hacer ningún trabajo serio sin pasar suficiente tiempo entendiendo cómo los humanos manejan las palabras, oraciones y conversaciones, y la mayoría de las veces, hay lógica involucrada, hay estadísticas involucradas, hay son heurísticas involucradas. Debe aprender todo esto, de una forma u otra, para ser honesto, la educación formal es la forma más adecuada de hacerlo.

Después de la secundaria, fui a Carnegie Mellon para estudiar informática, ya que algunas personas pueden saber que CMU es una de las escuelas más prestigiosas para la disciplina. Y a decir verdad, las prestigiosas escuelas de informática como CMU, Stanford, MIT, Berkeley, etc. no están educando a los estudiantes sobre informática: estas escuelas son patios de recreo para que crezcan personas inteligentes y bien educadas, la mayoría de las veces de forma autónoma. moda dirigida.

¿Por qué digo eso?

Debido a que estas escuelas generalmente tienen profesores increíblemente inteligentes y talentosos a quienes realmente no les gusta enseñar a estudiantes de pregrado (o simplemente no les gusta enseñar en absoluto, punto), no tienen paciencia para ello, de hecho, la mayoría de ellos no ‘ Realmente ni siquiera sé enseñar.

Estas escuelas no están convirtiendo las alegrías promedio en informáticos, no se equivoquen, están tomando los mejores resultados de las escuelas secundarias, y luego les dan una tonelada de trabajo y oportunidades, y ven quién sobrevive al guante.

Cuando fallas en estas escuelas, hay poco o ningún apoyo para que vuelvas a estar en funcionamiento: tienes que ponerte de pie, desempolvarlo y seguir adelante. Tienes que esforzarte para volver al juego. Porque estás constantemente rodeado de personas que conocen bien muchas disciplinas diferentes, que son creativas y súper competitivas.

En otras palabras, no existe un atajo para simplemente educarse mejor.

Entonces, ¿por qué enseñar arquitectura de software a los niños es una mala idea?

Es simple, ¿por qué enseñarías a un niño que apenas puede comprender el concepto de equilibrio estático, algo tan especializado como la carpintería?

La arquitectura de software y la ingeniería de software son de la misma manera. Estas habilidades profesionales son objetivos cambiantes constantes. Hace 25 años, Windows y las aplicaciones de escritorio estaban de moda. Hace 15 años, se trataba de software basado en navegador. Hace 10 años, toda la arquitectura y las prácticas eran sobre aplicaciones móviles y contenido de redes sociales. ¿Y ahora? las cosas están cambiando a mensajes y chat.

¿Qué pasa si la computación cuántica se convierte en la corriente principal? Holy Moly, ahora gran parte de lo que aprendiste en ciencias de la computación e ingeniería de software antes puede ser irrelevante.

Un graduado en ciencias de la computación de Berkeley sobrevivirá a todo esto, porque fueron educados lo suficientemente bien como para aplicar habilidades analíticas y de razonamiento generales para adquirir nuevas habilidades profesionales.

Pero para un niño? Cada cinco años, lo que ha aprendido es una completa pérdida de tiempo, si nunca aprendió habilidades analíticas y de razonamiento más amplias. Es mejor invertir el tiempo de una persona en esto que en aprender ingeniería de software a una edad temprana.

Oh, por último, no nacemos con lógica. Tenemos algunas intuiciones lógicas.

Las inferencias lógicas aún necesitan ser enseñadas. Nuestras intuiciones innatas no son suficientes para comprender la informática y / o la ingeniería de software.

se debe a que las personas que escriben los planes de estudio no son capaces de comprender el papel de la ingeniería de software en la vida en general y no es un campo limitado como la historia o la geografía. La ingeniería de software en su raíz, está en el centro de todo lo que hacemos, y el desarrollo de la lógica en la mente de un niño debe ser primordial para cualquier sistema de aprendizaje. Estoy muy detrás de la enseñanza del latín en las escuelas precisamente por este motivo. para aprender latín correctamente, debes ordenar tu mente y no solo recordar el vocabulario (que no es tan rico como C #), sino que, sobre todo, el niño tiene que dominar un conjunto complejo de reglas que son el corazón de la lengua

La única pregunta que tendría sobre enseñar a los niños a codificar no es si deberíamos, sino sobre qué lenguaje usar y cómo hacerlo lo suficientemente interesante en los primeros años para que los niños quieran comprender los conceptos y no tenerlos forzado sobre ellos.

Creo que hay algunas razones …

¿Tenemos suficientes maestros para hacer esto posible?

Hablando por Australia, y probablemente también por el Reino Unido. No, no lo hacemos, no creo que estemos cerca.

La programación de enseñanza es algo así como enseñar francés, en realidad tienes que saber francés para enseñarlo de manera efectiva. ¿Hay suficientes maestros que entiendan la programación? No.