9 feb. 2014

Diez consejos para ser un buen programador



1 – El Datasheet del microcontrolador
Una de las mayores razones de confusión y de complicaciones al desarrollar un proyecto es la falta de información del microcontrolador que se desea utilizar. Las hojas de datos son los documentos más importantes que debemos acopiar al momento de decidirnos e inclinarnos por un determinado tipo de microcontrolador.
Por ejemplo, si en tu diseño vas a utilizar un PIC 16F877A, debes imprimir, leer y recurrir a sus hojas como si fuese El Libro de la Verdad Absoluta. Todas las respuestas están allí. Todo lo que necesitas saber está allí. No te permitas iniciar un desarrollo sin haber leído las hojas de datos del microcontrolador que utilizarás. Un registro mal “seteado” y nada funcionará. Desde la configuración inicial del dispositivo (fuses), pasando por los registros de los ADC(Analog to Digital Converter) o los módulos CCP que te permiten obtener señales PWM, hasta la mismísima configuración del reloj o clock del sistema. Todo está allí.
2 – Piensa en tus objetivos, sueña con ellos.
¿Qué deseas lograr con tu desarrollo? Pensar en la idea final nos suele llevar a visualizar en la mente el proyecto terminado y consolidado en un prototipo funcionando a la perfección. ¿Qué componentes adicionales necesitaría? ¡Ah! ¿Tengo esos componentes? Luego de que ya hayas dado vuelta todos los estantes y cajones buscando ese material que te faltaba, comienza a anotar los que te hagan falta, los que no tengas. No abuses de tu memoria para recordar todo lo que necesitas comprar en la tienda; coloca en ella tu desarrollo y utilízala como un microcontrolador: optimiza este recurso y utilízalo sólo para ampliar y perfeccionar tu proyecto. Los materiales que hacen falta no deben ocupar espacio en tu mente; haz un listado minucioso y detallado para no hacer dos viajes y listo.
3 – No quieras correr antes de empezar a caminar
Uno de los errores más comunes de los que recién se inician es querer obtener más de lo que pueden llegar a comprender. No intentes hacer como primer trabajo un cartel luminoso de LEDs para venderlo en los estadios de fútbol y volverte millonario la semana próxima. Ni siquiera pretendas construir y empuñar el sable láser deObi-Wan Kenobi y ser la envidia del colegio. ¡No, no!

Si no tienes noción de la complejidad del proyecto que emprenderás es porque no has leído o interpretado el punto anterior. Las frustraciones provocadas por los fracasos en los primeros intentos aniquilan la confianza en nosotros mismos y arruina toda la diversión que significa construir y materializar nuestros sueños mientras vamos aprendiendo. SIEMPRE comienza con lo más elemental y, a medida que los éxitos comiencen a llegar, puedes ir agregando complejidad a los diseños. Además, cualquier programador experimentado te dirá que su primer trabajo fue escribir “Hola Mundo” en un display o un LED titilando como unabalizaQuien diga que no, te miente cobardemente.
Comienza a caminar comprendiendo los conceptos básicos y la terminología técnica y desarrolla pequeños proyectos de luces,motores o pantallas LCD. Luego, comienza a hacer un poco de jogging y trote liviano con algo más complejo como letreros de luces y pequeños controles de los que se utilizan en industrias. La domótica y la mecatrónica son dos campos muy interesantes y amplios como para sumar buena experiencia. Si no salteas ninguno de los pasos, muy pronto estarás corriendo grandes competencias a la par de los profesionales.
4 – Corta la pizza en porciones, no la comas entera
Por más simple que sea un proyecto, siempre es bueno dividir en bloques o pasos la tarea a realizar. Silbar y comer maní son cosas muy habituales y sencillas de hacer, pero concretarlas al unísono no es algo fácil. Organízate y prepárate a trabajar por partes. Primero ESTO, luego ESTO OTRO y al final AQUELLO. Intentar hacer todo a la vez o en forma desordenada sin un patrón de acción puede ocasionarte errores al momento de construir el proyecto. Por ejemplo, si decides incorporar un Puente H para mover un motor, contrólalo antes de conectarlo al microcontrolador. Es decir, conéctalo y pruébalo en forma independiente para saber que el mismo funciona. Así con todos los bloques en los que puedas sub-dividir tu proyecto.

5 – No sólo la fuerza te guiará, deja que el Sr. Spock también lo haga.
Tus inspiraciones serán una avalancha de imágenes y pequeños trailers en tu imaginación, pero en el teclado deberás actuar de manera puramente lógica. El número uno, nos guste o no, está antes que el dos. Primero el cero, luego el uno, después el dos, el tres y así en adelante. Siempre es así y nunca cambia esa realidad, a pesar de las paradojas de Ariel Palazzesi. Los programas funcionan así. Obtenemos la variable A y la transformamos en B; le sumamos C y el resultado se muestra en el paso D, y así se encadenan los procesos individuales que desembocan en el resultado final del programa.Nada es al azar, ni porque se le ocurra a Max FerzzolaLos programas siguen un razonamiento lógico y, por lo tanto, los microcontroladores también. Si tu mente se acostumbra a razonar de esta manera, programar será un juego de niños para ti.
6 – El pseudo-código también es lógico.
Te puede parecer arcaico, poco profesional y hasta una pérdida de tiempo, pero escribir en un papel todos los pasos que seguirá tu programa puede ser una ayuda muy importante mientras vas redondeando la idea final.
Por ejemplo:
  • Necesito una variable (A) que contenga un valor 20 al iniciar.
  • También otra (B) que valga 18 en el mismo momento.
  • Después las sumo y coloco el resultado en una tercera variable que se llamará C.
  • Las muestro en el display.
En un programa en lenguaje BASIC eso resulta ser:
A = 20
B = 18
C = A+B
Print at 1,1, Dec C
Escribir la secuencia de acciones que queremos que nuestro programa realice nos permitirá modelarlo a nuestro gusto y requerimiento, además de optimizarlo.
Cuando lo aprendes en la escuela, te lo enseñan como Diagrama de Flujo y puede que con el tiempo te olvides de él, pero cuando lo aprendes por ti mismo, razonando los pasos a seguir, no lo olvidas nunca.

Algo que puede parecer muy intrascendente, pero que es de vital importancia, es “comentar” cada línea de código que escribamos. Aunque creamos que es inútil, si no lo haces, terminarás arrancándote los cabellos una semana después al no darte cuenta qué es lo que quisiste colocar allí o por qué llegaste a ese lugar dentro del programa. Que hoy los comentarios te ocupen 10 renglones por cada línea de código significará que el próximo mes te ahorres 10 horas de trabajo intentando descubrir qué intentaste hacer allí.
7 -Organiza y guarda estructuras pre-armadas.
A medida que vayas utilizando un microcontrolador en particular (siempre seleccionamos uno “preferido”) y comiences a utilizarlo reiteradamente, te resultará cómodo tener a mano una estructura estandarizada de conexiones y bloques de programas. Es decir, si acostumbras a utilizar un microcontrolador X, si siempre utilizas la misma frecuencia de cristal oscilador, si siempre utilizas el mismo tipo de LCD, y si además también conectas siempre tus desarrollos a un ordenador a través de un puerto RS-232, tendrás siempre un gran bloque de programa que se repite diseño tras diseño.
Cuando comienzas a darte cuenta que muchos de tus diseños repiten pasos o bloques, allí empiezas a armar tus “templates” que son plantillas pre-armadas de cosas que se reiteran habitualmente. Consérvalas y organízalas en lugares prácticos y de fácil acceso. Te servirán para ahorrar mucho tiempo al momento de iniciar el diseño de un nuevo proyecto. Aprovecha el trabajo que ya tienes hecho y que sabes que funciona. 
8 – No preguntar hasta agotar las posibilidades de conocimiento.
En la mayoría de los foros o grupos de correo que aglutinan a miles de entusiastas de los microcontroladores sería muy fácil registrarse gratis, realizar consultas y, una vez que nos brindan las respuestas, seguir adelante. Además, en esos lugares siempre hay gente bien dispuesta a brindar ayuda. Trata de no hacerlo hasta el final de tus posibilidades. Lee las hojas de datos de los materiales que te están complicando el diseño, busca dentro de los foros, utiliza Google, lee algún libro relacionado al tema, busca hasta el cansancio en la ayuda del programa (Help) y, como último recurso, pregunta a otros.
Si ante el menor inconveniente acudes a otras personas para que te resuelvan los problemas, nunca aprenderás lo suficiente. Además, cuando te den la solución a tu problema, no sabrás entender que dicha solución sólo la pudiste obtener allí porque no tienes idea de lo que buscas. Todos siempre necesitamos una ayuda hasta en la tontería más insignificante, pero la comodidad y la holgazanería de que otros te hagan el trabajo no es un buen negocio para un programador. Por último, si pides ayuda, demuestra haber hecho tus intentos de solución contando lo que has realizado y los resultados que has obtenido. Si no haces nada, y sólo te limitas a pegar el enunciado que te han dado tus profesores, no esperes que alguien te ayude.

9 – La frustración es el enemigo a vencer.
Trata de no abandonar los proyectos porque algo no funcionó como esperabas. Descubre en esas oportunidades un reto o un desafío antes que un fracaso. Siempre es bueno mantenerse tranquilo y calmo a pesar de que nuestros circuitos echen humo por los cuatro costados. Todo error que se busca, al encontrarlo y solucionarlo, es un aprendizaje que queda grabado. Puede sonar muy extraño pero la asimilación del conocimiento es directamente proporcional al daño provocado. Es decir, cuanto más grave y más caras sean las roturas, mayores serán los aprendizajes de saber qué es lo que NO se debe hacer y por qué suceden algunas cosas.
No fue Dios el culpable de que algo no nos funcionara, sino que somos nosotros los que hemos metido mal algún cable. Un buen paseo, una buena caminata y al día siguiente retomar el trabajo es una de las mejores formas de vencer la frustración. Por eso, siempre hay que revisar, revisar, revisar y volver a revisar todas las conexiones antes de conectar la energía al circuito. Nada debe dejarse librado al azar y mucho menos restarle importancia creyendo que hemos hecho bien las cosas. Todos somos humanos y podemos cometer el error más infantil que puedas imaginar. No olvides que muchas veces una parte del éxito es una sumatoria de aprendizajes brindados por los fracasos.

10 – Google es el mejor amigo del hombre (programador)
Si lo que buscas no está en Google, es porque no existe y eres un pionero en la materia. Toneladas de material que puede ayudarte está allí en Google esperándote para poner en marcha tu proyecto. En castellano, en inglés o en arameo antiguo, lo que necesites estará en texto, imágenes y video. Nunca dejes de consultar en Google antes de preguntar tus dudas a otros.

Reacciones:

6 comentarios:

  1. excelente artículo! muy probablemente muchos programadores profesionales o hasta por hobbie como yo ya conocemos algunos de estos consejos y los descubrimos a puros golpes. Esto de programar te enseña cosas útiles para la vida, te acostumbras a estrujar tus posibilidades

    ResponderEliminar
  2. muy interesante este articulo y felicito por publicarlo!


    saludos.

    ResponderEliminar
  3. Nos alegramos que os haya gustado el articulo. Esperamos que, además, estos consejos os hayan podido servir para mejorar.

    ResponderEliminar
  4. Que sea inutil para ti, que quizás tienes más conocimientos de programación, no significa que no pueda ser de ayuda para alguien.

    ResponderEliminar
  5. Sabes para mi no es inútil, es muy importante para mi haber leído este articulo, me enseño cosas que serán el eslabón para mi vida, este articulo fue la luz para iluminar mi camino, Dios te bendiga.
    GRACIAS

    ResponderEliminar