Aprender un nuevo lenguaje de programación o un framework puede a veces convertirse en un reto de mucha dificultad. El enfoque tradicional nos dice que debemos leer la documentación oficial, donde se explican todos los conceptos y donde podemos ver ejemplos sencillos. Por lo general esto es suficiente, pero hay algo de suma importancia que en la mayoría de casos no encontraremos en dicha documentación: ejemplos avanzados aplicados en proyectos de la vida real.
Al momento de toparse con un problema que no está contemplado dentro de la documentación, la mayoría de nosotros buscamos la solución en StackOverflow o buscamos en Google de mil maneras posibles hasta encontrar alguna pista. Sin embargo, suele ocurrir que, por ejemplo, la versión del lenguaje o framework en cuestión es demasiado reciente como para encontrar casos similares en StackOverflow, o que las búsquedas de Google arrojen pocos / ningún resultado a cada pregunta que se nos venga a la cabeza.
Casi con toda seguridad, te ha ocurrido que has estado atascado en un problema y te has dicho a ti mismo:
"¡Sé que alguien debe haber resuelto esto antes! ¿Por qué no hay ninguna solución en StackOverflow a este problema?"
Tienes razón, probablemente alguien en algún lugar del mundo ya lo ha resuelto. Y también es muy probable que dicha solución haya sido subida ya a GitHub. Ahora, solamente es cuestión de encontrarla. Motivados por la necesidad, los programadores tendemos más a resolver los problemas por nosotros mismos en lugar de preguntar a gente al azar en Internet.
Buscando código en GitHub
El buscador de GitHub es un medio que nos proporciona alternativas para consultar repos de varias maneras. Una de ellas es el buscador de código. Esta es una funcionalidad extremadamente poderosa. Cada línea de código escrita por cualquier persona puede ser encontrada con simples consultas. Lo "bueno" de GitHub es que los repos privados no son gratuitos, por lo que hay muchos proyectos implícitamente compartidos al público por personas que sólo quieren hacer una copia de seguridad de su código. ¡Esta es una mina de oro de información!
Ejemplos
A continuación algunos ejemplos donde muestro que el buscador de código de GitHub puede sernos de muchísima utilidad:
Aprendiendo una nueva API
Hace poco tuve la necesidad de usar Akka Streams para leer un enorme archivo y pasar resultados a otro archivo al instante. La documentación respecto a este tema es buena pero breve y debería tener más ejemplos.
Pero el buscador avanzado de GitHub vino al rescate. Después de unos cuantos clics encontré un pedazo impresionante de código que toma el archivo CSV, lo modifica y lo vuelca en otro archivo. ¡Justo lo que necesitaba!
Buscando proyectos que utilicen tecnologías de tu interés
Supongamos que deseas aprender Spring MVC, Hibernate y hacer testing con Spock. Puedes ir a la documentación de cada biblioteca, y aprenderlos uno por uno... o simplemente buscar un proyecto que los integre a todos ellos.
La mayoría de las plataformas tienen algún tipo de herramienta de administración de dependencias. En el caso de Java usualmente es Maven, que almacena todas la información de dependencias en el archivo pom.xml.
Por lo tanto, puedes utilizar palabras clave y nombres de archivo para encontrar los proyectos que te interesan:
spring hibernate spock filename:pom.xml
Este método también es genial si estás buscando proyectos en los que quieres contribuir.
Integrando servicios externos
¿Estás buscando una forma rápida de integrarte con la API de GitHub usando tu lenguaje favorito? No hay problema, solamente busca los repos con la url de la API y filtra por lenguaje:
api.github.com language:scala
Configuraciones
Tampoco sería mala idea poder echar un vistazo a los archivos de configuración de proyectos grandes de la vida real, ¿verdad? Esto podría ser extremadamente útil, especialmente en el caso de utilizar frameworks con relativamente poca madurez.
Echemos un vistazo a cómo configurar el clúster akka. Dicha configuración debe contener la palabra clave ClusterActorRefProvider y residir en un archivo con extensión .conf (por lo general es application.conf):
ClusterActorRefProvider extension:conf
Conclusiones
El buscador de GitHub aún es muy poco valorado, pero ya hemos visto que es una herramienta extremadamente poderosa para aprender acerca de nuevas APIs, solucionar problemas y encontrar repos que te puedan interesar. Ésta es una manera genial de empezar rápidamente con nuevos frameworks, ¡encontrar fragmentos de código similares a lo que deseas programar nunca había sido tan fácil! También te hace sentir menos solo con los problemas que se te presentan, es muy probable que alguien ya los haya resuelto antes. De la misma manera, descubrir proyectos interesantes con este motor de búsqueda es sólo cuestión de minutos.
Vía | Jakub Dziworski
Imagen | GitHub