[Use the Source, Luke] Cosas que hacer para aprender a programar.

Hace algún tiempo varios usuarios del sitio, me han contactado para que cree una sección dedicada a la programación, específicamente en Python, lenguaje que utilizo para hacer todas mis chapuzas. Quizás no sea la persona más indicada para esto, ya que aún me considero padawan, uno de mis maestros Jedi es @dhunter, así que contaremos también con su ayuda.

He decidido crear esta sección y llamarla [Use the Source, Luke] parafraseando la famosa sentencia de Stars Wars, Use the Force, Luke.

Cuando somos neófitos, en este interesante mundo de la programación, muy pocas veces nos sentamos a pensar como debemos comenzar el proceso de aprendizaje. Agarramos un libraco, que nos envió Fulanito(generalmente llamado “Aprenda tal_lenguaje como si estuviera en primero”) y comenzamos a dar trompicones a diestra y siniestra.

En este primer post, pues les daré los consejos que Jamis(unos de los dioses de mi Olimpo) de 37signals.com, encuentra fundamentales para un método de aprendizaje. Aclaro que hay miles de formas de comenzar a programar, este es solo una vía. Aterricé los consejos a mis experiencias personales:

  1. Escoge un proyecto: personalmente cuando comencé a utilizar Django en octubre del 2010, pues acababa de graduarme, y al entrar a mi actual centro de trabajo(DMS Holguín), me propusieron hacer una app web para el Programa Materno Infantil(http://dps.hlg.sld.cu/pami/login, disponible solo desde Infomed). A muy duras penas logré echarlo a andar, tropecé con muchas dificultades, ya que aprender un paradigma nuevo de ver las cosas no es asunto de un día. A lo que me refiero, no importa la envergadura de tu proyecto, da igual si es una calculadora que un sistema de gestión contable, la idea es comenzar con un proyecto en mente. Ah, no trates de hacer el aprendizaje de forma académica, has tu proyecto “real”, o sea, trata de resolverte un problema.

  2. Haz todo lo que puedas: en otras palabras, adelanta hasta donde llegues en conocimiento. Adelanta en tu proyecto hasta que llegues a un dead-end y en ese punto te sea necesario pedir ayuda. Y para la ayuda, pues las que tenemos, la lista de gutl-l, el foro, etc etc. Evita las respuestas como RTFM, o sea, trata de hacer las preguntas concisas, no del tipo “estoy haciendo un nuevo desktop environment, quien me ayuda?”. Recuerda que no serás la primera persona en tener dudas, así que lee bien antes de preguntar.

  3. Divide y vencerás: si tu proyecto se torna muy grande, pues “slice and dice”, o sea, pícalo en trozos más pequeños, así en vez de tener un gran problema, tendrás varios pequeños problemas, y te podrás enfocar con más facilidad en ellos.

  4. Busca retroalimentación: una vez que tengas una solución o una maqueta de tu proyecto, pues dala a conocer, a amigos o personas que sepas que pueden darte una valoración del mismo. Hace un tiempo ya, le envié parte de mi código a un amigo, este me reprochó que mi código python era completamente ilegible. Pues desde ese día me preocupo más por la legibilidad de mi código.

Y nada, pues si aún no has tirado código, y lo tienes en mente, no esperes más. Ah, aprender un lenguaje no es cosa de una noche, incluso la mayoría de las veces se tornará difícil, pero eso no quiere decir que no sea provechoso e incluso entretenido. Mi consejo para los neófitos: HTML, es algo que puedes poner en cualquier editor de texto, abrir con un navegador y voilá!, ya está funcionando. No sé ustedes, pero para mí el mayor misterio y a la vez mágico, es ver como esas líneas chapurreadas en mi Geany, se convierten en software. Entonces, cuando empiezas?

Saludos.

Referencias:

http://37signals.com/svn/posts/

¿Te resultó interesante? Compártelo ...



Ozkar

Publicado por Ozkar

http://codeshard.github.io/ » Forma parte de GUTL desde el 6 diciembre, 2011. Soy uno ahí, no seas como yo...

Este artículo tiene 30 comentarios

  1. ¿Jedi yo si todavía no logro sacar la nave del pantano…? Yoda solo dice: “Do. Or do not. There is no try.”.

    Nada en serio una frase para pensar de Yoda sería esta:

    “Siempre ha de haber dos, ni más ni menos. Un maestro, y un aprendiz”

    Y es que donde quiera que leo sobre aprender el arte de la programación dicen que de los libros puedes aprender una parte pero otra irremplazable es en directo con un tutor curtido por el fragor de mil batallas (o proyectos de software en este caso).

  2. @Ozcar muy bien, me estoy animando a aprender python contigo a ver si dejo java y mono, aunque quisiera entrar un poco en el mundo de QT, nada que voy para python siempre que sigas siendo nuestro sensei, 😉 Salu2

    • Claro, pensaremos hacerlo lom más abarcador posible. Aunque mi poca experiencia me dice que C no es precisamente un lenguaje muy «atractivo» para empezar. No obstante, no se preocupe, que incluiremos también algo de él.

      • C es bueno para entender como funcionan los recursos, stack, heap, buffer overflow… ya Python y Ruby funcionan como abstracciones a todo esto, pero como programadores es muy provechoso conocer todo el proceso, una vista completa te hace pensar en grande, yo mientras más leo me doy cuenta que no se nada de ingeniería informática, tantas horas perdidas en la universidad dando asignaturas de relleno en vez de cosas útiles de verdad, comparen el pograma de clases del MIT o de Stanford.

        PD: En febrero me hice el loco y me apunté a un curso online de BD que oferta Stanford…. que nivel, no dan BD dan teoría relacional, conjuntos, álgebra relacional… nada que tuve que retirarme antes que me diera algo porque no pude seguir el ritmo, demasiadas lagunas matemáticas.

      • En efecto C no es el más apropiado para aprender a programar, yo comencé y actualmente sigo aprendiendo C#, hasta ahora me va bien , pero bien creo que debería haber comenzado con otros como Python o Java….

  3. Realmente me gustaría que publicaran en la wiki manualitos de Qt, python, etc para principiantes, yo tengo unos cuantos pero no todo el mundo posee acceso al más allá

        • Nunca he tocado VB, pyqt es mi herramienta goto para GUI.

          Ya que estamos hablando de ponermos serios en cuestiones de desarrollo… ¿Qué tan realizable es un redmine o gforge nacional?

        • Pero me surge la duda, tienes algún proyecto de prueba para ver como se trabaja. Es que acabo de ver un paquete curioso en mi repo:

          gambas2-gb-qt – The Gambas Qt GUI component

          • No, lo que tengo de gambas son unos cuantos manualillos y algunas pruebas de conceptos para ver que tanto me servia lo que aprendi de vb …. perdon por las referencias a hasefroch, el lado oscuro se hace sentir a veces 😉

  4. Muy buen articulo, yo hace un tiempo que estoy con el python, a veces no le puedo emplear mucho de mi tiempo, pero bueno, aqui vamos siempre, es verdad, es mejor enfocarse en algo especifico y productivo que no solo en una idea vana para aprender…

    Salu2…
    Dervys Perez Reyes

  5. Buena esa; yo también soy programador de python; y mi intención es usar el pygame; para hacer mi propia versión de galaga.

    • Python es un lenguaje interpretado por lo que no necesitas compilarlo, que pasa el interprete crea los archivos .pyc cuando ejecutas un módulo de python para que la próxima ejecución del mismo módulo sea más rápida pero solo eso no es necesario compilar.
      saLudos

  6. claro, si es que el lenguaje ensamblador se compila.
    no se de lenguaje ensamblador.

    • @Enmanuel, el lenguaje ensamblador no se compila, se ensambla, primero para darte una respuesta tendrias que decir si quieres trabajar en Win o en Linux, con respecto a ensamblador en Win existe debug que aunque es limitado para aprender esta bien, pero… para que vas a aprender ensamblador, piensas hacer un driver o algo por el estilo, si no es asi, te recomiendo C++ , python o java que son lenguajes de alto nivel los cuales puedes aprovechar mas y hacer mas cosillas. Con respecto a tu pregunta de python para utilizarlo necesitas instalar el interprete del python (python es un lenguaje interpretado no compilado como el c, c++, java) y luego programar y ya.Salu2

  7. claro, si es que el lenguaje ensamblador se compila.
    no se de lenguaje ensamblador.
    se que es rara la estructura.

    • Web2Py es un microframework, como bottle, o silex en php, o sinatra en ruby. Son frameworks sin muchas decisiones tomadas como rails, django o symfony.

      Un microframework python digno de ver es Flask, he leído solo cosas buenas de él. E creador es Armin Ronacher (Jinja, Sphinx, Werkzeug).

  8. Muy buen artículo. Muchas veces he probado algo parecido a lo sugerido y me ha dado grandes resultados, sobre todo los pasos 3 y 4. Sin ellos realmente estás gastando neuronas por gusto.

    + 10

    Salu2

  9. Hola para todos:
    Soy usuario de Win2_XP. Ya se pusieron serios. Bien, quiesiera aprender con ustedes algo de programación, además de mis pequeñas incursiones por Visual Basic y HTML. Quisiera de ser posible que alguien me diera referencias del lenguaje conocido por LUA y ponerme en contancto con los programadores de Script de nuestra comunidad.

Los comentarios están cerrados.