Poder leer y modificar código ajeno es importantísimo para un desarrollador, entonces ¿por qué no usar proyectos de código abierto practicar?
Nadie necesita ver tu versión: podés usarlo como un laboratorio personal. Tampoco es necesario hacer grandes cambios: poder hacer correr el código, cambiar un color o mensaje o agregar una nueva validación son interesantes como ejercicio.
Un proyecto interesante es “Conduit”, una aplicación que imita a Medium.com en distintas versiones, desarrolladas con múltiples lenguajes y frameworks. Acá puede verse su documentación.
También podríamos encontrar algún repositorio interesante en la lista “Awesome First Pull Request Opportunities” que, aunque apunta más a quienes buscan contribuir con su código a un proyecto (es decir, enviar el código para que forme parte del repositorio), los que se listan ahí suelen ser proyectos bien organizados y con buena documentación para poder entenderlos.
Click aquí para una versión accesible de la infografía (apta para lectores electrónicos)
Cómo practicar con proyectos reales
Los proyectos de código abierto son una opción para practicar con proyectos reales: podemos leer el código fuente y modificarlo localmente (sin enviar nuestros cambios) para aprender. github.com es el mejor aliado para buscar repositorios.
La práctica no es solo escribir código: también es leer, entender y modificar código ajeno.
CÓMO ELEGIR UN BUEN PROYECTO:
- “README” claro (qué hace, cómo instalar y usar)
- Carpetas ordenadas: src/, tests/, etc.
- Código con estilo consistente.
- Documentación suficiente.
QUÉ BUSCAR EN GITHUB:
- Repositorios “en tendencia” (github.com/trending)
- Filtrar por lenguaje o tecnología (language:python)
- Proyectos relevantes (forks:>10 o stars:100..1000)
- Nivel inicial (label:good-first-issue, label:beginner)
- Actualizados recientemente (pushed:>2024-01-01)
- Temáticas “reales” (ecommerce, chat-app, forum)
CONSEJOS PARA PRACTICAR:
- Leer: tratar de entender cómo se estructura el proyecto.
- Reimplementar: seleccionar una funcionalidad pequeña para reescribir.
- Modificar: cambiar funcionalidad, arreglar bugs, agregar algo nuevo.
- Debug: agregar “prints” o usar un depurador para seguir la ejecución.
- Testear: incluso si el proyecto no tiene tests, agregar algunos.