La programación requiere un conjunto de habilidades muy específicas y altamente especializadas. Eso no significa que no pueda adquirir esas habilidades, pero es importante darse cuenta de que el conjunto de habilidades que usaría en casi cualquier tarea del mundo real son, en el mejor de los casos, aproximaciones aproximadas de las habilidades que necesita para ser programador.
Quizás el que sería más fácil obtener de la educación y la experiencia no programada, y posiblemente también la habilidad más importante para ser un buen programador, es este:
Aprende a conceptualizar. No me refiero a aprender a imaginar (la imaginación es genial, incluso en la programación, pero no te ayudará a comprender mejor la programación). Me refiero a algo como los siguientes pasos:
1) Elige un concepto. Para empezar, una simple es la mejor. Digamos, el concepto de ordenar alfabéticamente una lista.
2) Desglosarlo. ¿Cuáles son sus piezas? ¿Qué hay involucrado en el proceso? ¿Cómo lo harías si lo estuvieras haciendo a mano? Podrías llegar a algo como esto:
a) Bien, entonces queremos artículos más bajos en la parte superior, y artículos más altos en la parte inferior.
b) Comenzaré en la parte superior de la lista y trabajaré hacia abajo. De esa manera, los elementos hacia la parte superior siempre se ordenarán. Puedo preocuparme solo de los artículos a continuación.
c) Entonces, para cada ítem, debemos considerar el sub-concepto de estar “fuera de lugar”.
yo. “Fuera de lugar” significa, ya sea: es más alto que el elemento debajo de él, o es más bajo que el elemento encima de él. Podrían ser ambas cosas.
ii. Pero espera. Es la parte * superior * de la lista que está ordenada. Está bien, así que si muevo los artículos a la parte inferior *, los estoy tirando a un vacío sin clasificar. Probablemente no sea necesario o útil. Solo preocupémonos por la relación de un elemento con los elementos que se encuentran arriba.
iii. Bien, estoy revisando los artículos uno a la vez, comenzando en la parte superior. Lo único que importa es si el elemento de arriba tiene un valor * más alto *. Si es así, deberíamos mover este elemento por encima de ese elemento.
iv. Por lo tanto, un elemento está “fuera de lugar” si se encuentra debajo de un elemento de mayor valor. Si está fuera de lugar, deberíamos subirlo.
d) Bueno, esto tiene sentido ahora. Todo lo que tengo que hacer es trabajar en la lista, mover cada elemento tantas veces como sea necesario hasta que ya no esté fuera de lugar; es decir, hasta que el elemento anterior no sea más alto en valor. Cuando termine eso, entonces la lista se ordenará.
¡Genial! Has conceptualizado el problema. Ahora regrese a la parte superior de la lista y traduzca cada hecho conceptual en un código equivalente (eso es solo una cuestión de saber la sintaxis, en realidad). Escribe ese código. Pruébalo. Debería funcionar (después de solucionar errores menores).
Si el proceso de conceptualización anterior no tiene ningún sentido para usted, no importa cuánto lo intente, no se castigue. No significa que no seas inteligente. Simplemente significa que los conceptos básicos de la programación son incompatibles con la forma en que funciona tu mente. Significa que eres una de las muchas personas que simplemente son incapaces de programar; Es probable que seas capaz de muchas otras cosas asombrosas, pero no es eso, al igual que algunas personas simplemente no son capaces de escribir música.
Si * tiene * sentido para ti, entonces, ¡buenas noticias! Puedes programar. No me necesitas a mí ni a nadie más para enseñarte. Todo lo que necesita hacer es realizar el proceso anterior muchas veces, involucrando conceptos cada vez más complicados, hasta que pueda hacerlo automáticamente sin pensarlo. Buena suerte 🙂
(Nota: si eres bueno en la programación, también serás bueno en filosofía, y viceversa. Las habilidades involucradas son casi idénticas).