Cómo Convertirse en un Programador Autodidacta con Python

Quieres convertite en un programador autodidacta exitoso, pero no sabes ¿por donde comenzar o cómo organizarte? ¿Estas indeciso? ¿No sabes qué lenguaje emplear? Continúa leyendo, tal vez nuestros consejos y experiencias te puedan ayudar a lograr tus metas.

En ocasiones sucede que en un determinado momento de nuestra carrera profesional, nos damos cuenta de que lo que realmente nos gusta hacer es programar computadoras. Esto quizás no tiene mucho que ver con lo que estudiamos en la universidad o en cualquier otro nivel de enseñanza, pero es lo que nos gusta hacer realmente. Si estás en este caso, definitivamente puedes convertirte en un excelente programador estudiando por tu cuenta de manera autodidacta, solo necesitas constancia, decisión y muchos deseos de aprender y superarte. Para facilitar el camino que conduce a este objetivo, sin dudas Python es una excelente opción. Python es un lenguaje fácil de aprender, con una sintaxis clara y concisa, con estructuras de datos potentes y versátiles. Python está respaldado por una amistosa y amplia comunidad que además, ha creado magníficos recursos y contenidos para aprender el lenguaje de manera simple y rápida. Todos estos elementos hacen de Python una muy buena opción como primer lenguaje o lenguaje de iniciación. Así que nuestro primer consejo es: si deseas convertirte en un programador autodidacta exitoso, comienza por aprende Python.

Puntos Débiles… pero También Fuertes

Es cierto que una buena formación académica constituye un ventaja significativa en cualquier ámbito del saber, sin embargo, existen incontables ejemplos de personas exitosas en un determinado campo o disciplina de la ciencia o en determinada profesión, que nunca llegaron a la universidad, así que esto no es necesariamente una barrera insalvable. Recordemos que hay graduados de 5 puntos, pero también los hay de 3 puntos. No obstante, debemos ser cuidadosos con algunas de las “debilidades comunes” de los programadores autodidactas:

  • Usualmente no están familiarizados con el vocabulario técnico de la disciplina

  • No tienen una visión completa de la ciencia de la computación

  • No están familiarizados con las técnicas y herramientas disponibles (Algoritmos, estructuras de datos, sistemas operativos, herramientas, buenas prácticas, etc.)

  • No entienden algunos conceptos avanzados por no tener todos los elementos de base necesarios para el análisis y el entendimiento

  • Reinventan constantemente la rueda, por desconocer todo el conocimiento que se ha creado antes de ellos

  • No consiguen una buena organización del código y no siguen las convenciones de estilo.

Estos elementos, aunque no constituyen una lista exhaustiva, ni pueden ser generalizados a la ligera, sí son comunes en muchos programadores autodidactas. Nuestro consejo? No permitirnos caer en el grupo de colegas que reúne estas características u otras igualmente indeseables.

Por otro lado, no todo es malo, los programadores autodidactas también tenemos cosas buenas:

  • Amamos la programación (solo no nos dimos cuenta a tiempo), es lo que realmente nos gusta hacer, nos divierte, nos hace sentir bien, es nuestro hobby, pero es en serio

  • Estamos dispuestos y decididos a aprender y a mejorar continuamente

  • Mostramos un compromiso real con el aprendizaje de la programación

  • Ponemos manos a la obra y sacamos el trabajo, muchas veces a costa de incontables horas de dedicación y estudio

  • El dominio de otros campos de la ciencia (lo que estudiamos realmente) nos da otra visión sobre las ciencias de la computación y puede convertirse en un activo importante en nuestra futura carrera como programadores.

El consejo acá es evidente, aprovechemos y explotemos estos hechos y pa’ lante… como dijera el buen cubano.

Consejos Generales

  • Escribe y lee muchísimo código, +código, +código, +código, cuanto más, mejor. La librería estándar de Python está llena de módulos escritos en Python que incluyen código de alta calidad. Si esto no es suficiente, puedes descargarte PyPy, una implementación de Python escrita en Python y tendrás acceso a todo el código Python que puedas imaginar

  • Lee mucho… para lo cual deberás aprender Inglés, este es el idioma de la programación/computación y de casi todo lo demás, así que es imprescindible aprenderlo para tener éxito y alcanzar tus metas

  • Luego de haber aprendido los fundamentos y de tener una visión general de la programación, identifica las áreas de desempeño que realmente disfrutas y concentrate en ellas. Está bien explorar varias áreas para poder hacerte una mejor idea de lo que quieres y con lo que mejor te sientes, pero decide…

  • Concéntrate, concéntrate, concéntrate

  • Continúa leyendo… deberás dedicar incontables horas de tu tiempo a estudiar, aprender y sobre todo a practicar, practicar, practicar…

  • Mantente al día en tu áreas de desempeño seleccionadas. Explora la red para encontrar nuevos artículos, tutoriales, libros, cursos; léelos todos y pon en práctica tus conocimientos

  • Identifica a los expertos en tus áreas de desempeño y sigue sus publicaciones, posts, conferencias, libros y artículos. Lee sus blogs, perfiles en redes sociales y sitios personales, y aprovecha de ellos todo el conocimiento que hagan público

  • Continúa leyendo…

  • Revisa los cursos que encuentres en línea (Udemy, Coursera, Udacity, Khan Academy, CodeAcademy, etc.), valora los que te convienen e interesan y ve a por ellos

  • Evita saltar de un tema a otro sin antes haberlo dominado completamente. Llega hasta el detalle más pequeño y preciso

  • Rétate a ti mismo, encuentra retos en la red y proponte realizarlos. Edabit es un buen lugar para comenzar

  • Continúa leyendo…

  • Participa en comunidades y foros para programadores, StackOverflow es un excelente lugar para comenzar. Crea tu perfil y comienza a participar, verás que al mismo tiempo que aprendes, podrás ayudar a otros a aprender

  • Crea tus propios proyectos Open Source y gestiónalos en GitHub o cualquier otra plataforma en línea. Llena tu perfil en GitHub con proyectos nuevos, sin importar el tamaño o los problemas que estos resuelvan; eso sí, asegúrate de que el código tenga calidad y que cumpla con los estándares y convenciones generalmente aceptados por la Comunidad Python, como el PEP 8, por ejemplo. Si logras que alguno de tus proyectos sea usado por muchas personas, obtendrás estrellas en GitHub, lo cual también es muy bueno para ti

  • Contribuye al desarrollo de proyectos Open Source cuando no estés trabajando en los tuyos propios. Trata de que sean proyectos con reconocimiento e impacto en la Comunidad Python, esto sumará prestigio y puntos a tu reputación de programador

  • Crea y mantén tu propio blog, donde escribas artículos técnicos sobre programación. Escribir sobre algo ayuda increíblemente a fijar contenidos y te obligará investigar, a experimentar, a estar seguro de lo que escribes antes de publicarlo. Si no tienes tiempo para mantener tu propio blog, puedes optar por escribir artículos para el blog de alguien más. De hecho, en Python Scouts estaríamos muy satisfecho si decides participar y aportar conocimiento a nuestro Blog

  • Continúa leyendo…

  • Crea una aplicación tipo ToDo (Planificación de tareas) o AddressBook (Libreta de Direcciones), con cada framework que desees aprender. Tu proyecto de prueba siempre puede ser este tipo de aplicación, pues en ella tendrás que lidiar con funcionalidades para: Crear, Leer, Actualizar y Eliminar (CRUD por sus siglas en Inglés) datos. Con esto estarás preparado para enfrentar proyectos más complejos en el futuro

  • Trata de que tus proyectos cubran todo el espectro del proceso de desarrollo, comenzando por la identificación de requerimientos, el diseño, y terminando en la distribución o despliegue hasta el usuario final, sin pasar por alto la retro-alimentación proveniente de este

  • Selecciona cuidadosamente tus herramientas y domínalas a la perfección, consigue ser prolífico y productivo con ellas. Acomoda y organiza tu entorno de trabajo, evita pasar trabajo para trabajar

  • Otra vez: Continúa leyendo…

  • Ten paciencia y no te desanimes, este es un camino largo, es una carrera de toda la vida, de estudio diario y constante, de perseverancia. Recuerda que siempre habrá algo nuevo que aprender, nuevos conceptos, nuevos frameworks, nuevas librerías, nuevos algoritmos… Si pierdes la constancia, tus conocimientos dejarán de estar al día

  • Nunca pienses que ya eres un experto, si lo haces, la inercia te sorprenderá y tendrás que comenzar de nuevo. No te acomodes, sigue aprendiendo

  • Continúa leyendo…

Temas a Incluir en tu Agenda de Estudio

Aunque lo primero es aprender Python como lenguaje, su sintaxis, sus estructuras gramaticales y lexicográficas; la programación demanda de conocimientos mucho más amplios y abarcadores. No puedes decir que eres programador solo porque hayas aprendido uno o varios lenguajes de programación. La programación es mucho más que los lenguajes, los lenguajes son solo una vía o herramienta para materializar la programación. Con esto en mente, recomendamos revisar y estudiar los temas siguientes:

  • Seudo-Código

  • Diagramas de Flujo

  • Lenguaje Unificado de Modelado (UML por sus siglas en Inglés)

  • Sintaxis y estructura lexicográfica del lenguaje Python

  • Convenciones de Estilo (PEP 8) y las herramientas disponibles para Python (Pylint, Flakes, pep8, etc.)

  • Algoritmos y estructuras de datos, y cómo implementarlos en Python

  • Lógica booleana, cómo funciona en Python

  • Patrones de Diseño y su implementación en Python

  • Programación Orientada a Objetos y sus particularidades en Python (Objetos, encapsulación, herencia, clases, polimorfismo, meta-clases, clases abstractas, etc.)

  • Diseño Orientado a Objetos, y los llamados principios SOLID (Single Responsibility + Open-Closed + Liskov Substitution + Interface Segregation + Dependency Inversion)

  • Programación Funcional y las herramientas disponibles en Python para implementarla (funciones como objetos, el módulo functools de la librería estándar, funciones integradas, etc.)

  • Diseño de Interfaces Gráficas de Usuario (GUI por sus siglas en Inglés), framework disponibles en Python (Tkinter, PyQt, PyGTK, wxPython, Kivy, etc.)

  • Pruebas Unitarias y Desarrollo Guiado por Pruebas, así como las herramientas de automatización de pruebas disponibles en Python (unittest, pytest, nose, etc.)

  • Diseño de Bases de Datos relacionales, normalización

  • Lenguaje Estructurado de Consultas (SQL por sus siglas en Inglés)

  • Control de Versiones (Git, Mercurial, Subversion, etc.)

  • Integración Continua

  • Metodologías de desarrollo, tanto tradicionales como ágiles

  • Machine Learning, Big Data e Inteligencia Artificial

  • Fundamentos de Hardware.

La lista anterior no pretende, para nada, ser exhaustiva, solo recoge algunos temas básicos que debemos tener en agenda, los que faltan, te irán llegando con la experiencia y la práctica. Esta lista tampoco sigue un orden estricto de aprendizaje, el orden depende en gran medida, de tus intereses y necesidades personales y profesionales. De todos modos, esperamos te sea de provecho y te sirva de guía en tu formación autodidacta. Suerte con eso…

Por el momento esto es todo, si este artículo te resultó interesante y/o útil, compártelo para que otros también puedan acceder a él. Déjanos tus comentarios y podremos mejorar y ampliar nuestros contenidos.

Gracias de antemano,

lpozo

13 comentarios

Ir al formulario de comentarios

    • cepaj en 28 mayo, 2018 a las 5:59 pm

    Men, este definitivamente ha sido uno de los mejores posts que he leído de python tanto en cubava como en internet en general. un saludos y agradecimiento por esmerarte en esto y te he de preguntar 2 cosas !!!
    # 1 –> Si tienes ese libro de lógica booleana en python te agradeceria q me lo copiaras y otra es….
    # 2 –> Veo que pusiste un tema del machine learning, big data e innovation….. por casualidad sigues a el chema alonso (HACKER & CDO de TELEFÓNICA ESPAÑA) Quiero decirte q cuando me refiero a hacker….. en el mejor sentido de la palabra ok ???
    #-……bueno, en realidad son 3 preguntas jejeje aunque me haya equivocado….. veo q fuiste el programador principal y el creador de videomorph (de verdad, no x nada pero me gustó mucho), en una escala de 0 a 10 que tan bueno te consideras y dime si estás en condiciones (con tus conocimientos) de crear algún proyecto en Python con machine learning (en plan, lector de voz) y por qué no subes algún tuto de esto ???
    @lpozo saludos de un compañero (aunque no nos conozcamos personalmente) pero sabes que todos de la comunidad python somos hermanos jejejeje xD:)

    1. Gracia, ojalá que te sirvan los consejos que pongo en este post. En cuanto a tus preguntas.
      1. No tengo ese libro de lógica booleana, pero hay varios libros sobre Python que tratan el tema de una forma u otra. Es posible que en algún momento escriba algo sobre esto.
      2. De Machine Learning tengo varios materiales muy buenos, también de IA. Y… no, definitivamente no sigo al Chema Alonso, pero podría buscar a ver si me interesa. La Seguridad no es mi fuerte, aunque debo admitir que es un mundo apasionante.
      En efecto, he sido el programador principal de VideMorph desde hace algún tiempo, pero el creador del proyecto es Ozkar Garcell.
      En la escala del 0 al 10 creo que debo tener como un 4 jeje, en serio, creo que me falta mucho por aprender, pero lleva tiempo y estoy en eso. Este post lo hice para mi mismo como dijera Lindoro…
      En cuanto a lo de crear un proyecto Python con ML es posible que pudiera hacerlo, pero tendría que aprender muchísimo de ese tema que por cierto es bien amplio y abarcador. Con esto se puede hacer de todo, pero no es fácil, menos cuando tu conexión no es buena.
      Quién sabe, a lo mejor algún día nos conocemos en algún evento sobre Python o sobre Hacking o en un FLISOL…
      un saludo,
      lpozo

    • cepaj en 28 mayo, 2018 a las 7:46 pm

    ADEMÁS DEL FLISOL, CONOCES ALGUNA OTRA ACTIVIDAD DEDICADA AL SOFTWARE LIBRE Y LA PROGRAMACIÓN EN CUBA QUE SE LLEVE A CABO X TODO EL PAÍS ????? OIGAME SI USTED TIENE 4 YO TENGO UN -2 PORQUE YO HE APRENDIDO UN MONTÓN DE PYTHON, PERO TODAVÍA TENGO Q SEGUIR ESTUDIANDO Y NO SOY CAPAZ DE CREAR ALGO COMO VIDEO MORPH ??? JEJEJE, TODAVÍA SOY UN NOOB, PERO BUENO TAMBIÉN TENGO Q ESTUDIAR FÍSICA Y MATEMÁTICAS POR LO DE IPVCE, ASÍ Q YA DEBES DE IMAGINAR QUE EDAD TENGO, PIENSO COGER CIBERNÉTICA EN 12.

    VALES AHORA Q ME ACUERDO NECESITARÉ UN FAVOR TUYO CON ESTE EJERCICIO SACADO DEL LIBRO ALGORITMOS Y PROGRAMACION I CON PYTHON:

    Ejercicio 4.3. Dados tres puntos en el plano expresados como coordenadas (x, y) informar cuál
    es el que se encuentra más lejos del centro de coordenadas.

    TE AGRADECERÍA SI ME AYUDARAS CON EL CÓDIGO Q EN REALIDAD NO SÉ DE QUÉ MANERA EXPRESARLO, VISTE LO Q TE DIGO TODAVÍA ME FALTA UN MUNDO X APRENDER PARA SABER LO Q TU, Y DE AHÍ EL CAMINO SOLO SIGUE EMPEZANDO JAJA UN SALUDOS Y GRACIAS

    1. Bueno, el año pasado se realizó en La Habana el CubaConf, dedicado a las tecnologías de la Información. También se han realizado algunos MeetUps, incluidos de Python, pero te imaginarás que el SWL no es muy usado en Cuba y tampoco tiene demasiada promoción por acá, sin embargo existe una comunidad de la cual soy miembro hace años. Puedes encontrar más información por acá: https://gutl.jovenclub.cu
      En cuanto a tu ejercicio… veremos cómo puedo ayudarte con eso…
      saludos,
      lpozo

        • cepaj en 31 mayo, 2018 a las 6:13 pm

        no te preocupes, lo que pasa fue que me equivoque de ejercicio, ese ya lo resolvi hace rato, es muy facil, despues te pongo el que es

        1. Ok, revisa el mail… te envié algunas cosas.

    • Ocl@y en 29 mayo, 2018 a las 7:14 am

    Libros que me he leido “Python para todos” para comenzar me ayudó muchísimo y ya cuando tienes un poco más de dominio “Fluent Python” ambos me parecen que están en la lista de “must read”…A por cierto si tienen internet y andan buscando un lugar para aprender pueden pasarse por PythonDev (https://pythondev.slack.com), es una comunidad de Python en Slack con mucha gente coordial y profesional que están dispuestos a ayudar a cualquiera en temas básicos o avanzados.@lpozo gracias por difundir estos temas sobre python en la red nacional, cuando me vaya para Holguín (todavía en la UCI) me gustaría apoyarlos en FLISOL o en lo que sea y quien sabe a lo mejor sacamos algo interesante… Saludos colegas..

    1. En mi opinión hay varios libros que se pueden catalogar como “Must read”. Learning Python, Programming Python, Python Cookbook, Python in a Nutshell, Fluent Python, Core Python Programming, Dive into Python, The Python 3 Standard Library by Example, y un largo etc. Después hay libros específicos para cada tema.
      Tomo nota de tu sugerencia sobre la comunidad en Slack.
      Te agradezco por seguir el Blog, es poco lo que hacemos aún para difundir el conocimiento en torno a Python, espero que otros se nos sumen e ir dándole forma a una Comunidad Cubana de Python con lo poco que tenemos.
      Serás bienvenido a los FLISOL por acá por Holguín, siempre hacen falta personas que ayuden y aporten en ellos. Ya nos veremos.
      saludos,
      lpozo

    • dcruz en 31 mayo, 2018 a las 6:20 pm

    Genial post! me lo llevo para la casa! 😉 ¿Para poder compartir un artículo hay que ser pro en Python? jajaja

    1. Que bueno que te interesó, ojalá te sea útil.
      No necesariamente hay que ser pro. yo no me considero muy pro. pero trato de aportar lo que puedo, claro, siempre siendo muy cuidadoso en no tener errores de “contenido” como decían en la primaria.
      saludos,
      lpozo

      • mikeward en 1 junio, 2018 a las 3:38 pm

      dcruz para ser pro en Python primero ahy q ser pro en Java, en php y en blogs de cubava 🙂 Jjejej,

      muy buen post, realmente no me gusta Python pero lo estoy usando bastante, mira q te hace la vida facil, siempre e dicho q como primer lenguaje de prog. para estudiantes no creo q sea el mejor, pero si los profesores actualmente es el q estan enseñando (secundarias-pre..) por algo será..

      1. Tantas mirada no pueden estar equivocadas. Con Python puedes hacer casi todo lo que puedes hacer con Java y de PHP ni hablar. Claro está, cada lenguaje tiene ventajas sobre el otros, para el campo de aplicación específico. Sobre Python siempre se ha dicho que es lento, pero sin embargo es mucho más productivo que Java o que C. En cuanto a facilidad para aprenderlo, la diferencia es significativa, es por eso que se recomienda como primer lenguaje y muchos centros educacionales de todos los niveles lo están comenzando a asumir. Es flexible, simple, claro, muy English-like, en fin… Ahora bien, para programar un SO por ejemplo, evidentemente a nadie se le ocurriría usar Python, aunque siempre hay locos por ahí. En fin, para aprender, desde cero, de forma autodidacta (y en la universidad también, por qué no), te aseguro que con Python sufrirás menos que con Java o con C/C++. Y finalmente, y lo más importante, no podemo recomendar Java en un blog dedicado a Python, jajaja.
        Saludos y gracias por tu comentrio,
        lpozo
        PD: Ojo, no pretendemos crear una discusión infinita sobre este tema (Java vs Python), Python es solo nuestra propuesta, si prefieres Java, be my guest… Me encantaría ver un Blog en Cubava dedicado a Java…

        • dcruz en 4 junio, 2018 a las 2:34 pm

        @Mikeward: ¿Qué!!! no mijo no! Python es mas “manejable” que PHP y Java por mucho, de hecho te ahorras muchas líneas de código para hacer una misma tarea. Las experiencias que he tenido con Python (bien pocas la verdad jaja) han sido con Django y la verdad es que es mágico. Claro, a parte del Head First Python jo jo.

Los comentarios han sido desactivados.