Programar no es solamente escribir código

Muchas personas que comienzan a programar lo encuentran muy difícil. Tal vez lo que ocurre es que están tan concentrados en el lenguaje de programación que se olvidan de lo importante…

Hay mucha literatura sobre las fases de la programación, pero a efectos prácticos, cuando te pones a hacer tus primeros programas, necesitas ser consciente de estos cuatro pasos fundamentales:

PASO 1) Entender bien el problema

PASO 2) Diseñar un método para resolverlo (algoritmo)

PASO 3) Escribir el programa en un lenguaje concreto

PASO 4) Depuración y pruebas

Esta sencilla idea de los 4 pasos puede asustar. Puede parecer que tanta fase significa un proceso largo y costoso. Tal vez por eso muchos estudiantes intentan saltarse el paso 1 y 2 para acabar antes.  Pero el efecto acaba siendo el contrario… ¿no te lo crees? sigue leyendo…

Repasa la lista de los 4 pasos y observa cómo cada paso depende del anterior.

Como cada paso depende del anterior, los errores en los primeros se arrastran a los siguientes, y la situación empeora:

-Si no dedicas suficiente esfuerzo a entender bien el problema (paso 1), es probable que el programa no haga lo que tiene que hacer, y todo esfuerzo posterior será inútil.

-Una vez tengas claro el problema (paso 1), si no dedicas el tiempo necesario a buscar un buen algoritmo (paso 2), te complicarás la vida. Tal vez el programa compile, pero no funcionará a la primera, ni a la segunda, ni a la tercera… y entrarás en un largo proceso de depuración y pruebas. En el caso mejor, si consigues hacerlo funcionar, habrás perdido más tiempo del que supuestamente “ahorraste” al principio.

-Puede que el programa acabe funcionando “a martillazos”, a base de prueba y error, pero eso se nota… será un programa complicado, poco eficiente, y difícil de entender y defender. Ni siquiera estarás muy seguro de que el programa funcione con según qué datos de entrada. Lo peor es que con tanto tiempo ocupado en la desagradable tarea de “probar y probar”, el proceso de programación te parecerá difícil, pesado y engorroso. En resumen, odiarás programar…

¿Te sientes identificado? Sigue leyendo

Si odias programar es porque el problema te domina a ti. ¿Cómo puedes cambiar la situación?

Este cuadro está pensado para ayudarte. Échale un vistazo, te puede servir para ser consciente de cómo programas, a qué le dedicas más tiempo y cómo te organizas. Tal vez te facilite el trabajo:

FaseObjetivoHerramientas útilesHabilidades a AdquirirConsejos
1) Analizar el problemaTener una idea clara de qué hay que hacerLectura / escucha atenta. Petición de aclaraciones si es necesario.       División del problema en un esquema simple: entradas, proceso y resultados. Lectura/escucha comprensiva. Cuando leas el enunciado no presupongas nada. Relájate y concéntrate en leer y entender lo que significa exactamente. Normalmente no basta con leer por encima y tener una idea aproximada de lo que te piden. Lee el detalle. Entiéndelo completamente. Preguntas a hacerte: ¿Cuál es la entrada? ¿qué hay que sacar? ¿qué hay que hacer? ¿Cómo paso de las entradas a los resultados? 
2) Diseñar un método para resolver el problema (algoritmo)Tener una idea clara de cómo va a hacer nuestro programa lo que tiene que hacer. Es decir, obtener un método (algoritmo) que haga lo que hay que hacer, de la forma más sencilla y eficiente posible. Pseudocódigo, diagrama de flujo.Ser capaz de descubrir el método más sencillo y eficiente posible que resuelva el problema. Conocer las piezas del “puzzle” con las que contamos para componer un algoritmo (variables, condiciones, bucles,…) y saber componer una solución con ellas. Tú sabes resolver problemas, lo haces continuamente. La única diferencia cuando programas es que tienes que dividir el método de resolución en pasos pequeños, en instrucciones simples que pueda entender un ordenador. Preguntas a hacerte: ¿cómo se soluciona? ¿Qué pasos hay que dar? ¿Cuál es la forma más sencilla y eficiente? Mejora y simplifica tu algoritmo y te ahorrarás trabajo después. Si no te sale “de cabeza”, dibújalo. El diagrama de flujo y el pseudocódigo se inventaron para ayudar al programador. 
3) Escribir el problema en un lenguaje de programaciónTraducir el algoritmo a un lenguaje de programación El programa tiene que ser lo más sencillo y legible posible.Entornos de desarrollo,  Compiladores. Guías de estilo.Conocimiento de un lenguaje de programación, Conocimiento de las reglas que hacen más legible un programa. En programación “avanzada”, conocimiento profundo de las particularidades del lenguaje para hacer un uso eficiente.Intenta que el algoritmo (paso 2) esté completamente claro y simplificado antes de comenzar a escribir código. Cuando conozcas las instrucciones del lenguaje, este paso tiene que ser breve y limitarse a ser una traducción de tu algoritmo. El trabajo debe centrarse más en los pasos 1 y 2. El algoritmo es lo importante, es “la idea que quieres expresar”. El lenguaje de programación que uses es sólo un vehículo más de expresión de tu algoritmo, como lo son los diagramas de flujo o el pseudocódigo. Conoce el lenguaje: Sintaxis, estructuras de datos, instrucciones … Domina las instrucciones condicionales. Estudia y aplica la guía de estilo. Haz tu programa agradable de leer y entender, con un uso adecuado del estilo y de los comentarios. Usa las estructuras y las instrucciones más adecuadas. Normalmente la forma más sencilla y legible de hacerlo será la mejor. 
4) Depuración y pruebasAsegurar el buen funcionamiento del programaHerramientas y métodos de depuración del entorno de desarrolloBuena selección de juegos de prueba. Si se encuentran errores, habilidad deductiva para enfocar la búsqueda hacia la causa.Intenta poner a prueba tu programa con valores normales y también con valores que creas que puedan dar problemas. Aprende a usar el depurador. Intenta como reto que en esta fase todo funcione a la primera. Pasa el esfuerzo a la fase 1 y 2. Importante: La depuración y pruebas no debe de ser “una forma de programar” –por prueba y error-, sino la forma de comprobar que va bien.

Que no te engañen, todo programador diseña algoritmos:

Cuando un principiante ve a un programador experto, piensa que no es necesario realizar los pasos 1 y 2, porque ve a menudo cómo el programador experto se lanza a programar directamente.

Lo que en realidad ocurre es que el experto ha adquirido destrezas que aplica muy rápidamente y de forma casi inconsciente. Es capaz de entender el problema y pensar en un algoritmo que lo resuelve de forma muy rápida y sin ayuda de papel, lo que le permite lanzarse a implementar ese algoritmo que está en su cabeza, directamente en un programa fuente con un lenguaje de programación que domina. Este proceso es tan veloz, que algunos programadores ni siquiera se dan cuenta del proceso y pueden confundirte cuando te dicen que ellos “no diseñan el algoritmo”. Es como cuando aprendes a conducir: A ellos ya no les hace falta fijarse en detalles como el cambio de marchas o los intermitentes porque no piensan en ello, lo han automatizado. ¿Sabes lo que hacen cuando se les presentan nuevos problemas especialmente difíciles? Cogen papel y lápiz y se hacen un esquema.

Sobre todo al principio, es muy importante entrenarte en las fases 1 y 2. Quizá incluso más que conocer la sintaxis del lenguaje de programación con el que aprendas.

Las fases 1 y 2 son las que te van a permitir programar bien en CUALQUIER LENGUAJE. Esas son las destrezas que te permitirán ser un buen programador en cualquier circunstancia. Lo demás está en los libros de referencia de cada lenguaje y en las normas de estilo de cada organización. Este breve texto está orientado a que cambies el enfoque y te fijes en lo que importa.

En cualquier asignatura de programación, te encontrarás con bastante información sobre la sintaxis de un lenguaje concreto (como C), por eso a veces puede parecer que la sintaxis lo es todo, pero sólo es algo que usas en una parte del proceso de programar, al final.

No te aburras con las pruebas

Te lo aseguro, aunque no te lo creas, las fases 1 y 2 son las más bonitas. Si crees que programar es un proceso aburrido de prueba y error hasta que la cosa funciona, tal vez lo que ocurre es que pierdes demasiado tiempo arreglando lo que tenía que funcionar desde el principio.

Si por el contrario cambias el enfoque e intentas partir de una idea clara y detallada de lo que ha de hacer tu programa, dedicarás un poco más de tiempo a pensar pero el proceso de escribirlo será muy rápido, y cuando funcione la sensación será mucho más agradable, porque no será el producto de un proceso aburrido de prueba y error (tras numerosos disgustos tipo “esto no funciona”), sino que será el producto de tu inteligencia y creatividad, lo que te producirá mucha más satisfacción.

Resumiendo

No intentes “ahorrar tiempo” en los pasos 1 y 2, porque:

         -Puede que ni siquiera consigas hacer lo que en realidad se te pide

         -El tiempo total que dediques a programar aumentará

-El programa que consigas será probablemente más complicado, menos eficiente, y más difícil de leer y por lo tanto de depurar.

         -Dedicarás más tiempo a la parte más desagradable (probar y depurar)

         -No adquirirás las habilidades útiles para cualquier lenguaje

         -Te saltarás la parte más bonita

Este texto no ha pretendido ser teórico o formalista. Sólo intenta ayudarte a cambiar el enfoque y que te fijes en cosas importantes. No te pierdas en la sintaxis.

Para acabar, recuerda que muchas de las habilidades que estás adquiriendo sólo se consiguen con la práctica.

O como dice una frase conocida del mundillo: La única forma de aprender a programar es programando.

Autor: Vicente Muñoz Pijuán

Fecha: Diciembre de 2007

Tutoriales

Aprende o refuerza tus conocimientos con la sección tutoriales. Estos son materiales totalmente GRATIS que te ayudarán a expandir tus conocimientos de diseño gráfico y web en general. Tambien podrás aprender de programación y maquetación de aplicaciones con HTML, CSS y Javascript.

Contratanos

Pide presupuesto sin costo, charla con nosotros acerca de lo que tienes en mente y encontremos juntos la mejor solución. Obtén tu página web, diseño de marcas o lo que necesites y comienza a inundar las redes con el mejor contenido para hacerte conocido cuanto antes en el mundo de la web.