No hay base para la teoría de las 10.000 horas. En lo que respecta a la programación de computadoras, muchas personas pueden desarrollar una habilidad perfectamente utilizable (a nivel comercial) dentro de las 40 horas. Una sola semana de trabajo equivalente.
Lo que necesita para desarrollar software: un bolígrafo, papel, papel cuadriculado si desea hacer que el programa sea gráfico, un PC 386SX con 5 megabytes de RAM, un compilador o intérprete, un libro sobre cómo funciona la sintaxis del lenguaje de programación. Trabajos, y un manual de referencia detallando los comandos.
De estos, el lápiz y el papel son, con mucho, los más importantes.
Primero, escriba lo que quiere que el programa haga, paso a paso. Luego da cada paso y redúcelos a pasos más simples. Marque cualquier paso que sea opcional, debe realizarse cero o más veces, debe realizarse una o más veces. Repita esto hasta que cada paso sea conceptualmente trivial.
- ¿Qué habilidad debo aprender para hacer millones en seis meses?
- ¿Por qué sería bueno aprender a programar?
- ¿Hasta qué punto el saber cómo programar en MATLAB lo ayuda a aprender otros lenguajes de programación?
- Cómo aprender la teoría del ajedrez.
- Quiero cambiar mi tecnología. ¿Cuál es el mejor para aprender y conseguir un trabajo muy pronto?
Esto se conoce como un diagrama estructurado de Jackson, pero no se dibuja de esa manera. Es una de las herramientas más básicas de programación. No es útil para todo, pero si quieres comenzar, es uno de los mejores lugares para comenzar.
Un diagrama estructurado de Jackson se puede volver a escribir como un diagrama de flujo, la siguiente herramienta básica en la programación. Un diagrama de flujo tiene cuadros donde haces cosas, diamantes donde tomas decisiones. Siga los pasos, las opciones y los bucles dibujados como diamantes, y obtendrá su diagrama de flujo. El propósito de esto es ayudarlo a comprender lo que hará el programa. El 99% de la programación es entender el problema, solo el 1% tiene algo que ver con la programación en sí.
Ahora tiene la lógica del programa en dos formas relativamente fáciles de leer. Usando los dos libros, el primero para aprender la sintaxis real que necesita y el segundo para aprender las instrucciones para producir efectos específicos, puede convertir estos diagramas y su comprensión en una pieza de código que puede compilar. Cada cuadro, en cualquier diagrama, será un bloque de código que probablemente tenga solo dos o tres instrucciones, por lo que no debería ser difícil.
Notarás que no he mencionado las GUIs todavía. Su programa no debe preocuparse por cómo los usuarios ingresan información u obtienen información, ya que esto no altera la lógica del programa, el núcleo de su funcionamiento. Debe buscar en algún lugar para obtener datos y debe colocar los datos en otro lugar. Lo que le sucede no es la preocupación del programa.
Ahora usa el papel cuadriculado para diseñar su GUI, si lo desea. Cada pantalla debe ser extraída. Escriba un segundo programa, utilizando un método similar al primero, que maneja únicamente la GUI. Debe dibujar las pantallas, llenarlas con datos, permitir que los usuarios ingresen datos, etc., pero no hacer nada con esa información.
Ahora estás listo para completar tu obra maestra. Probablemente la solución más sencilla es simplemente cortar y pegar el contenido de la GUI en el programa más grande, pero también puede usar archivos, tuberías u otros canales de comunicación. Todo lo que necesita es asegurarse de que la entrada de la GUI se conecta a la entrada principal del programa, y la salida de la GUI se conecta a la salida del programa principal.
Eso es. Básicamente, eso es todo lo que ocurre, ya sea que estés escribiendo World of Warcraft, un servidor web, un reproductor de MP3 o un núcleo de sistema operativo. Se trata de hacer bloques pequeños de bloques grandes y luego unir los bloques grandes de varias maneras. No son 10.000 horas, ni siquiera cerca.
Haga un pequeño programa al día durante una semana, pida que el primer día ordene los números en orden, el segundo día que lea un archivo y lo convierta en HTML simplista antes de volver a escribirlo, el tercer día que lea las tarjetas de recetas de los archivos y los imprima. un buen diseño en la pantalla, y así sucesivamente. Para el final de la semana, tendrás un conocimiento sólido de la programación.
Para un curso extendido, pasar una segunda semana con estructuras de datos. Primer día, desarrollar una pila. Segundo día, desarrollar una cola. Tercer día, un árbol. Cuarto día, una gráfica, y así sucesivamente. Ahora eres un maestro de los bloques de construcción clave que te ahorrarán tiempo y esfuerzo.
Para un curso aún más extendido, tenga la tercera semana de subprocesos y comunicaciones. Primer día, construyendo hilos y comunicándonos a través de semáforos y mutexes. Segundo día, construyendo programas independientes que puedan hablar vía sockets. Tercer día, mapas de memoria compartida y System V IPC. Cuarto día, escribiendo un servidor que puede generar hilos cuando se realiza una nueva conexión. Quinto día, comunicación asíncrona, etc. Ahora ya sabe lo suficiente como para volver a escribir todo el servidor web Apache con una sola mano o para desarrollar su propio supercomputador de pila de PC.
Así que la programación básica que puede aprender en 40 horas, el procesamiento súper avanzado tomará 120 horas. Estos son los máximos. Cualquier persona con una onza de sentido común debería tomar mucho menos.