paint-brush
Lo que aprendí usando ChatGPT como mentor de programaciónpor@zawistowski
5,163 lecturas
5,163 lecturas

Lo que aprendí usando ChatGPT como mentor de programación

por Wojciech Zawistowski22m2023/05/08
Read on Terminal Reader

Demasiado Largo; Para Leer

Nada acelera tu crecimiento como un mentor experimentado. ¿Puede ChatGPT servir como un sustituto razonable? Soy un desarrollador con más de 20 años de experiencia y lo puse a prueba.
featured image - Lo que aprendí usando ChatGPT como mentor de programación
Wojciech Zawistowski HackerNoon profile picture
0-item
1-item

Nada acelerará su crecimiento como un mentor experimentado. Sin embargo, encontrar uno puede ser un desafío y su disponibilidad suele ser limitada.


Por otro lado, los agentes de IA como ChatGPT están disponibles las 24 horas del día, los 7 días de la semana y también parecen estar bastante bien informados. ¿Podría tal agente servir como un sustituto razonable de un mentor humano real?


Lo que me interesa particularmente son más consejos "meta": los pequeños consejos y trucos, adquiridos solo a través de una amplia experiencia, que lo ayudarán a crecer y madurar como desarrollador , no solo a generar o explicar código.


Como alguien con más de 20 años de experiencia, que ha sido mentor de varios desarrolladores junior, tengo curiosidad por saber qué tan sólido, completo y práctico sería para un principiante el consejo de ChatGPT.


¡Hagámoslo para una prueba de manejo rápida!

TL;DR.

Si tiene curiosidad acerca de la calidad de los consejos de ChatGPT pero no quiere pasar por toda la discusión y mi comentario detallado paso a paso, no dude en pasar directamente a la última sección.

Una breve leyenda.

💬 Mis indicaciones.


🤖 ChatGPT responde.


🤔 Mis pensamientos/comentarios.

La puesta en marcha.

💬 Actúa como un desarrollador de software profesional experimentado con más de 10 años de experiencia. Imagine que está asesorando a un colega más joven, con menos de 2 o 3 años de experiencia. Te estaré haciendo diferentes preguntas relacionadas con la carrera de programación y desarrollo de software. Les preguntaré como este desarrollador más joven. Respóndelas de la manera que me sea más útil para convertirme en un mejor desarrollador y crecer profesionalmente.


🤖 ¡Claro, estoy aquí para ayudarte! No dude en hacer cualquier pregunta que tenga sobre la programación o su carrera de desarrollo de software, y haré todo lo posible para guiarlo en función de mi experiencia.


🤔 Hasta ahora, muy bien. ¡Empecemos!


La pregunta del "millón de dólares": 10 trucos para convertirse en un mejor desarrollador.

💬 Comparta 10 trucos que son rápidos y fáciles de implementar y que me ayudarán de inmediato a convertirme en un mejor desarrollador.


🤖 ¡Por supuesto! Aquí hay 10 trucos que puedes implementar rápidamente para mejorar tus habilidades como desarrollador:


  1. Usar métodos abreviados de teclado : aprenda y use IDE o métodos abreviados de teclado específicos del editor para navegar y manipular el código más rápido. Le ahorrará tiempo y aumentará su productividad.


  2. Siga la Técnica Pomodoro : divida su trabajo en intervalos pequeños y manejables (generalmente 25 minutos) seguidos de un breve descanso. Esta técnica puede ayudarlo a mantenerse enfocado y mantener un ritmo de trabajo constante.


  3. Control de versiones maestro : siéntase cómodo con Git u otro sistema de control de versiones. Esto lo ayudará a realizar un seguimiento de los cambios en su código, colaborar con otros y volver a las versiones anteriores cuando sea necesario.


  4. Automatice tareas repetitivas : use scripts o herramientas para automatizar tareas mundanas como el formato de código, el cambio de nombre de archivos o el andamiaje de proyectos. Esto le ahorrará tiempo y reducirá las posibilidades de error humano.


  5. Lea y escriba código limpio : adopte un estilo de codificación limpio que sea fácil de leer y comprender. Siga las prácticas recomendadas para las convenciones de nomenclatura, la sangría y la estructura del código. Esto hará que su código sea más fácil de mantener y reducirá el tiempo dedicado a la depuración.


  6. Comenta tu código : escribe comentarios significativos para explicar el propósito y la funcionalidad de tu código. Esto facilitará que otros entiendan su código y que usted recuerde su proceso de pensamiento cuando vuelva a revisar el código más adelante.


  7. Busque revisiones de código : Pida a sus colegas o mentores que revisen su código con regularidad. Esto le ayudará a identificar áreas de mejora y aprender de su experiencia.


  8. Manténgase curioso : explore constantemente nuevos lenguajes, marcos y herramientas. Esto lo ayudará a mantenerse actualizado con las últimas tendencias de la industria y a ampliar su conjunto de habilidades.


  9. Divida los problemas en partes más pequeñas : cuando se enfrente a un problema complejo, divídalo en tareas más pequeñas y manejables. Esto te ayudará a mantener la concentración y evitará que te sientas abrumado.


  10. Cuídate : Prioriza tu bienestar físico y mental. Haga ejercicio regularmente, duerma lo suficiente y tome descansos cuando sea necesario. Una mente y un cuerpo sanos te ayudarán a ser más productivo y centrado en tu trabajo.


Recuerde, convertirse en un mejor desarrollador es un proceso continuo y requiere tiempo y dedicación. Pero al implementar estos trucos, puede acelerar su crecimiento y mejorar continuamente sus habilidades.


🤔 La lista parece sólida en su mayoría, aunque algo aleatoria y no particularmente innovadora. Sin embargo, le pedí a ChatGPT consejos para principiantes, por lo que las respuestas relativamente obvias son comprensibles.


Algunos de estos consejos no parecen tan rápidos y fáciles de implementar (lo cual fue parte de mi aviso). Algunos otros son un poco vagos y requieren más explicación, pero dado que ChatGPT está diseñado para usarse de forma iterativa, profundizando más y más con preguntas de seguimiento, supongo que está bien. Hay un par de puntos con los que no estoy completamente de acuerdo, pero los veo más como una cuestión de opinión que como algo incorrecto. En general, ¡no está mal!


Profundicemos un poco más en cada sugerencia:


  1. Use atajos de teclado : Consejo sólido. Rápido y fácil de implementar, y sin duda aumentará su productividad. Una cosa que me sorprende es ¿por qué solo atajos de teclado simples? Utilizar funciones más avanzadas como inteligencia de código, fragmentos, formateadores automáticos, generadores de código y asistentes de IA como GitHub Copilot (o el mismo ChatGPT) sería igualmente fácil de comenzar a usar y proporcionaría un impulso mucho mayor.


  1. Sigue la Técnica Pomodoro : Buenos consejos. Definitivamente deberías probarlo. Si nunca antes ha oído hablar de Pomodoro, es posible que tenga que buscarlo en Google o hacerle una pregunta de seguimiento a ChatGPT, pero por lo demás es bastante sencillo y se explica por sí mismo.


  1. Control de versiones maestras : Buen consejo, pero definitivamente no es un truco. Incluso la palabra "maestro" muestra claramente que no es una solución rápida y fácil. También diría que el control de versiones es una parte integral de su pila tecnológica principal, similar a su lenguaje de programación, marco principal o base de datos, en lugar de un "truco" para mejorar su productividad. Pero por lo demás, el consejo es correcto.


  1. Automatice las tareas repetitivas : un consejo sólido, pero nuevamente, necesita más exploración. Es un nivel demasiado alto para implementarlo de inmediato.


  1. Leer y escribir código limpio : leer mucho código limpio (o código en general) es un consejo fantástico y fácil de implementar. La única parte complicada es cómo saber, como principiante, qué código está limpio y dónde encontrarlo. Esto nuevamente requiere una investigación más profunda. Sin embargo, escribir código limpio es un asunto completamente diferente. Es parte de un dominio de por vida de su oficio, y se escriben libros enteros sobre el tema. Deberías estudiarlo absolutamente, pero al igual que con el control de versiones, está muy lejos de ser un truco.


  1. Comenta tu código : este es el primer consejo que encuentro discutible (aunque, como dije antes, no porque sea obviamente incorrecto sino por preferencias personales). Hay dos posturas con respecto a los comentarios: comentar mucho frente a hacer un código que se explique por sí mismo y que no necesite comentarios (a menos que necesite explicar el propósito comercial detrás de su código). Estoy fuertemente en el segundo campo, por lo que la autoridad "escribir comentarios" de ChatGPT no resuena conmigo. Por otro lado, también dice escribir comentarios significativos y explicar el propósito de su código, con lo que estoy muy de acuerdo. Pero también dice que expliques la funcionalidad de tu código, lo cual considero una mala práctica y una pérdida de tiempo. Entonces, tengo sentimientos encontrados en este caso.


  1. Busque revisiones de código : este consejo es lo más sólido y fácil de aplicar posible. Absolutamente debe buscar revisiones de código tanto como sea posible, especialmente como principiante.


  1. Mantente curioso : este es el segundo consejo que encuentro algo discutible. Explorar nuevos lenguajes, marcos y herramientas es un buen consejo en general (aunque diría que "constantemente" - huele a desarrollo impulsado por palabras de moda), pero puede que no sea la mejor estrategia para un principiante con solo un año o dos de experiencia. Como junior, debe concentrarse más en construir una base sólida de mejores prácticas y principios y aprenderlos en profundidad, lo cual es más fácil cuando se enfoca en dominar una sola pila por un tiempo. Pero, francamente, estoy bromeando aquí, y no llamaría a este consejo incorrecto.


  1. Divida los problemas en partes más pequeñas : un consejo sólido, pero nuevamente, es de un nivel demasiado alto. Desglosar los problemas de manera efectiva no es trivial. Para implementar esto en la práctica, se requeriría un mayor desglose.


  1. Cuídate : Muy buenos y aplicables consejos. De hecho, es bueno que ChatGPT haya incluido consejos como este, que no están directamente relacionados con las habilidades tecnológicas.


Muy bien, repasamos todos los consejos. No está mal, no está nada mal. Sin embargo, no todos ellos son de aplicación inmediata. Profundicemos en algunos para ver qué tan cerca podemos llegar al núcleo

Métodos abreviados de teclado: profundizando más.

💬 Profundicemos en el consejo "Usar métodos abreviados de teclado". ¿Puede explicarme un poco si debo aprender todos los atajos posibles o si hay alguna categoría particular de atajos en la que deba concentrarme?


🤖 ¡Ciertamente! Cuando se trata de atajos de teclado, la clave es concentrarse en aprender los que tendrán el impacto más significativo en su productividad y eficiencia. No necesita aprender todos los atajos disponibles, sino priorizar los que le ahorrarán más tiempo y ayudarán a agilizar su flujo de trabajo.


Aquí hay algunas categorías de atajos de teclado para enfocarse:


  1. Accesos directos de navegación : estos accesos directos lo ayudan a navegar rápidamente a través de su código, saltar entre archivos o pestañas y encontrar símbolos específicos o instancias de una palabra clave. Los ejemplos incluyen "Ir a definición", "Ir a línea" y "Buscar todas las referencias".


  2. Atajos de edición : estos atajos lo ayudan a manipular el código cortando, copiando, pegando y formateando texto. Los ejemplos incluyen "Duplicar línea", "Mover línea arriba/abajo" y "Alternar comentario".


  3. Atajos de refactorización : la refactorización es una parte esencial para mantener un código limpio y eficiente. Los accesos directos que lo ayudan a refactorizar el código rápidamente pueden ahorrarle mucho tiempo. Los ejemplos incluyen "Renombrar símbolo", "Extraer método" y "Cambiar firma".


  4. Atajos de depuración : la depuración es una parte crucial del proceso de desarrollo. Los accesos directos que lo ayudan a administrar los puntos de interrupción, recorrer el código e inspeccionar variables pueden optimizar sus sesiones de depuración. Los ejemplos incluyen "Alternar punto de interrupción", "Pasar por encima" y "Pasar a".


  5. Accesos directos específicos de IDE : su IDE o editor de código puede tener características o herramientas únicas a las que se puede acceder a través de accesos directos. Familiarícese con estos atajos para aprovechar al máximo su entorno de desarrollo elegido.


Tenga en cuenta que las combinaciones de teclas reales para estos accesos directos pueden variar según el IDE o el editor de código que esté utilizando. Consulte la configuración o la documentación de su editor para descubrir y personalizar estos accesos directos según sus preferencias.


Cuando aprenda atajos, comience por concentrarse en unos pocos a la vez. A medida que se sienta más cómodo con ellos, incorpore gradualmente más atajos en su flujo de trabajo diario. Con el tiempo, el uso de estos atajos se convertirá en algo natural y notará una mejora significativa en su productividad y eficiencia.


🤔 ¡Esa es una gran categorización! Estoy impresionado. También me gustan los ejemplos concretos para cada categoría. Este nivel de asesoramiento ya es procesable: puede buscar fácilmente "Accesos directos de navegación" o "Ir a definición" en la documentación de su IDE. Además, las categorías están bien elegidas. Son realmente los que le darán un impulso significativo a su productividad.


Solo hay una cosa que todavía me falta: los impulsores de productividad más sustanciales, como la finalización automática o los fragmentos de código. No quiero preguntar sobre ellos explícitamente, ya que estoy fingiendo no saber que existen. Sin embargo, doblemos un poco las reglas:


💬 Dijiste que debería aprender atajos "para navegar y manipular el código más rápido", que "la clave es concentrarme en aprender los que tendrán el impacto más significativo en tu productividad y eficiencia" y "priorizar los que ahorrarle más tiempo y ayudar a agilizar su flujo de trabajo". ¿Existen otras herramientas o funciones del IDE, además de los métodos abreviados de teclado, que puedan ayudarme a lograr estos objetivos?


🤖 ¡Absolutamente! Además de los métodos abreviados de teclado, existen muchas otras herramientas y características de IDE que pueden ayudarlo a aumentar su productividad y eficiencia. Éstos son algunos de ellos:


  1. Fragmentos de código y plantillas : muchos IDE y editores admiten fragmentos de código o plantillas que pueden generar estructuras de código de uso común o código repetitivo con solo unas pocas pulsaciones de teclas. Estos pueden ahorrarle tiempo y ayudar a mantener la coherencia en su código.


  2. Finalización automática e IntelliSense : los IDE modernos y los editores de código a menudo brindan finalización de código inteligente, lo que sugiere finalizaciones para variables, métodos o palabras clave según el contexto actual. Esto puede acelerar su proceso de codificación y reducir la posibilidad de errores tipográficos o de sintaxis.


  3. Depuración integrada : las herramientas de depuración integradas en su IDE le permiten establecer puntos de interrupción, revisar su código e inspeccionar variables sin salir de su entorno de desarrollo. Esta experiencia de depuración perfecta puede ayudarlo a encontrar y solucionar problemas de manera más eficiente.


  4. Integración de control de versiones : muchos IDE ofrecen soporte integrado para sistemas de control de versiones como Git. Esta integración puede simplificar las tareas comunes de control de versiones, como confirmar cambios, crear ramas y resolver conflictos, todo dentro de su IDE.


  5. Análisis de código y linting : las herramientas de análisis de código y linting en tiempo real pueden ayudarlo a identificar posibles problemas, como errores de sintaxis, variables no utilizadas o infracciones de estilo de código, mientras escribe su código. Esto puede ahorrarle tiempo en la depuración y garantizar que su código cumpla con las mejores prácticas.


  6. Herramientas de refactorización : algunos IDE tienen herramientas integradas que pueden refactorizar automáticamente su código, como extraer métodos, cambiar el nombre de las variables o cambiar las firmas de los métodos. Estas herramientas pueden ayudarlo a mantener un código limpio y eficiente sin esfuerzo manual.


  7. Gestión de tareas y proyectos : muchos IDE y editores tienen funciones que le permiten gestionar tareas, crear listas de tareas pendientes y realizar un seguimiento del progreso de sus proyectos. Esto puede ayudarlo a mantenerse organizado y priorizar su trabajo de manera más efectiva.


  8. Personalización : la mayoría de los IDE y editores ofrecen un alto nivel de personalización, incluidos temas, complementos y opciones de configuración. Adaptar su entorno de desarrollo a sus preferencias puede ayudarlo a trabajar de manera más cómoda y eficiente.


  9. Terminal integrado : tener un terminal integrado dentro de su IDE puede ahorrarle tiempo al permitirle ejecutar comandos, construir su proyecto o interactuar con el control de versiones sin cambiar entre ventanas.


Estas herramientas y características pueden mejorar significativamente su experiencia de codificación, haciéndolo más eficiente y productivo. Tómese el tiempo para explorar las capacidades de su IDE o editor de código, y no dude en probar nuevas herramientas o complementos que puedan mejorar su flujo de trabajo.


🤔 ¡Ahora hablamos! La lista no es del todo exhaustiva (por ejemplo, no tiene formateadores automáticos de código y, sorprendentemente, todavía no tiene asistentes de inteligencia artificial: ¿ChatGPT no es consciente de sus propias capacidades? ¿O es demasiado humilde?) pero es sólida y lo suficientemente amplia como para ser realmente útil para un desarrollador principiante. Además, ahora que conoce la riqueza de las herramientas de desarrollo modernas, puede profundizar gradualmente más.

Control de versiones: llegar a consejos prácticos y breves.

💬 Uno de los consejos que me diste fue "Control de versiones maestro". ¿Pero es realmente un truco rápido y fácil? Me parece un proceso largo para dominar completamente el control de versiones. ¿Hay algún consejo rápido relacionado con el control de versiones que pueda implementarse de inmediato?


🤖 Tienes razón en que dominar el control de versiones puede ser un proceso más largo, pero hay algunos consejos rápidos y mejores prácticas que puedes implementar de inmediato para hacer un uso más efectivo de los sistemas de control de versiones como Git. Aquí hay algunos:


  1. Comprometerse con frecuencia y en unidades pequeñas : realice compromisos pequeños y enfocados que contengan un solo cambio lógico. Esto facilita la comprensión del historial del proyecto, la localización de problemas y la reversión de cambios si es necesario.


  2. Escriba mensajes de confirmación descriptivos : cuando confirme cambios, escriba mensajes de confirmación claros y concisos que describan los cambios y su propósito. Esto lo ayuda a usted y a su equipo a comprender el historial del proyecto y facilita la búsqueda de cambios específicos más adelante.


  3. Use ramas : cree ramas para nuevas funciones, correcciones de errores o experimentos. Esto mantiene estable su rama principal y le permite trabajar en múltiples tareas en paralelo sin afectar la base de código principal.


  4. Fusionar regularmente : fusione los cambios de la rama principal en sus ramas de características regularmente para mantenerlos actualizados y minimizar los conflictos de fusión cuando sea el momento de integrar sus cambios.


  5. Tire antes de empujar : antes de enviar sus cambios al repositorio remoto, siempre extraiga los últimos cambios del remoto para asegurarse de que su repositorio local esté actualizado. Esto puede ayudar a prevenir conflictos y garantizar una experiencia de colaboración más fluida.


  6. Aceptar .gitignore : use un archivo .gitignore para excluir archivos que no necesitan seguimiento, como archivos temporales, artefactos de compilación o archivos específicos de IDE. Esto mantiene su repositorio limpio y enfocado en el código esencial.


Estos consejos rápidos pueden ayudarlo a hacer un uso más efectivo de los sistemas de control de versiones y optimizar su flujo de trabajo. Si bien es posible que no lo conviertan en un maestro del control de versiones de la noche a la mañana, pueden servir como una base sólida para que pueda desarrollar a medida que continúa aprendiendo y refinando sus habilidades.


🤔 Bastante resbaladiza. Si bien estos consejos no lo llevarán a dominar completamente el control de versiones, ahora son más prácticos y, en general, son bastante decentes, considerando que son consejos para principiantes.


Algunos puntos siguen siendo un poco vagos, por ejemplo, "Usar sucursales". Las estrategias de bifurcación de control de versiones son un tema amplio y complejo, y este punto en particular no es muy procesable sin una mayor exploración. Sin embargo, es un único valor atípico y al menos proporciona un punto de partida claro para una investigación más profunda.


En general, ¡no está mal!

Leer código limpio: eliminar la ambigüedad.

💬 Me diste un consejo para "Leer código limpio". Pero, ¿cómo sabré, como principiante, qué código está limpio? ¿Cómo reconocerlo? ¿Y dónde encontrar dicho código para leer?


🤖 Como principiante, puede ser un desafío reconocer el código limpio a primera vista. Sin embargo, con la práctica y la exposición a un código bien escrito, comenzará a desarrollar una comprensión de lo que constituye un código limpio. Aquí hay algunas pautas generales y características del código limpio:


  1. Legibilidad : el código limpio es fácil de leer y comprender. Tiene una estructura clara, variables significativas y nombres de funciones, y una sangría adecuada. También sigue convenciones de nomenclatura y pautas de estilo consistentes.


  2. Modularidad : el código limpio se organiza en funciones o métodos pequeños y enfocados que realizan una sola tarea. Cada módulo debe tener una sola responsabilidad y el código debe dividirse en componentes lógicos.


  3. Mantenibilidad : el código limpio es fácil de modificar, ampliar y refactorizar. Evita la duplicación de código (principio DRY) y sigue las mejores prácticas para minimizar las posibilidades de introducir errores cuando se realizan cambios.


  4. Documentación y comentarios : el código limpio está bien documentado con comentarios que explican el propósito y la funcionalidad del código. Los comentarios deben ser concisos y solo proporcionar información que no sea inmediatamente evidente al leer el código en sí.


  5. Eficiencia : el código limpio es eficiente en términos de rendimiento y uso de recursos. Evita la complejidad innecesaria y los algoritmos y las estructuras de datos utilizados son adecuados para el problema en cuestión.


Para encontrar un código limpio para leer y aprender, considere las siguientes fuentes:


  1. Proyectos populares de código abierto : muchos proyectos populares de código abierto en plataformas como GitHub tienen un código de alta calidad que ha sido revisado y refinado por varios colaboradores. Explore proyectos en el lenguaje o marco con el que está trabajando para encontrar ejemplos de código limpio.


  2. Prácticas recomendadas de codificación : busque artículos, libros o cursos sobre prácticas recomendadas de codificación para el lenguaje de programación con el que está trabajando. Estos recursos a menudo brindan ejemplos de código limpio y pautas sobre cómo escribirlo.


  3. Revisiones de código : participe en revisiones de código dentro de su equipo o busque comentarios de desarrolladores o mentores experimentados. Observar sus comentarios y sugerencias puede ayudarlo a aprender a reconocer código limpio y mejorar su propio estilo de codificación.


  4. Desafíos de codificación : sitios web como LeetCode, HackerRank o Codewars ofrecen desafíos de codificación junto con soluciones enviadas por otros usuarios. Revisar estas soluciones puede ayudarlo a aprender diferentes enfoques para la resolución de problemas y exponerlo a ejemplos de código limpios.


Recuerde, reconocer y escribir código limpio es una habilidad que se desarrolla con el tiempo. A medida que lea y escriba más código, se volverá más experto en identificar código limpio y adoptar mejores prácticas en su propio trabajo.


🤔 Esta vez, el resultado es meh en el mejor de los casos.


La primera parte de la respuesta esencialmente establece que puede reconocer el código limpio por el hecho de que se adhiere a principios vagos y de muy alto nivel de ser código limpio (algunos de los cuales, como los comentarios y la eficiencia, son incluso discutibles; por ejemplo, ¿no ¿El código realmente necesita ser eficiente para ser limpio y legible?).


La segunda parte también es impredecible. Participar en revisiones de código es un buen consejo (aunque se podría enfatizar más que no solo debe revisar su código, sino también hacer tantas revisiones como pueda, para aprender del código de desarrolladores más experimentados). Leer libros y artículos sobre las mejores prácticas de codificación es un buen consejo, pero bastante obvio, que no agrega mucho valor. Aprender de proyectos de código abierto y sitios web de desafíos de codificación es un consejo potencialmente fantástico, pero estas fuentes a menudo también contienen código incorrecto, y aún así no resuelve el enigma de cómo un principiante puede reconocer cuál es cuál.


Intentemos profundizar un poco más:


💬 Dijiste que para encontrar un código limpio para leer y aprender, puedo mirar proyectos populares de código abierto, ya que muchos de ellos tienen código de alta calidad. Pero muchos de los proyectos de código abierto también tienen código de baja calidad. ¿Cómo puedo reconocer qué proyecto de código abierto es de alta calidad y cuál no?


🤖 Tienes razón en que no todos los proyectos de código abierto tienen código de alta calidad. Para identificar proyectos de código abierto de alta calidad, puede considerar los siguientes factores:


  1. Popularidad : los proyectos con una gran cantidad de estrellas, bifurcaciones o observadores en plataformas como GitHub generalmente indican que el proyecto está bien considerado por la comunidad. Si bien la popularidad no es una garantía de la calidad del código, puede ser un indicador útil.


  2. Mantenedores y colaboradores activos : los proyectos de alta calidad tienden a tener mantenedores activos y un grupo diverso de colaboradores. Busque proyectos con un historial de confirmaciones regulares, actualizaciones y correcciones de errores. Un buen número de colaboradores y una comunidad activa pueden ser una señal de que la base de código se mejora y refina continuamente.


  3. Documentación clara : los proyectos bien documentados suelen ser una señal de un código base bien mantenido y de alta calidad. Busque proyectos con archivos LÉAME completos, documentación de API y guías de uso.


  4. Revisiones de código y debates : compruebe las solicitudes de incorporación de cambios y los debates de problemas del proyecto. Un proyecto saludable tendrá revisiones de código exhaustivas, comentarios constructivos y discusiones activas sobre mejoras y correcciones de errores.


  5. Cumplimiento de los estándares de codificación : los proyectos de alta calidad suelen seguir los estándares de codificación y las mejores prácticas para el lenguaje de programación o el marco que utilizan. Busque formato consistente, convenciones de nomenclatura y organización de código.


  6. Pruebas automatizadas : los proyectos con un conjunto sólido de pruebas automatizadas indican que los mantenedores se preocupan por la calidad del código y por garantizar que el software funcione como se espera. Busque proyectos con una alta cobertura de prueba y una canalización de integración continua (CI) que ejecute pruebas en cada confirmación o solicitud de extracción.


  7. Dependencias y licencias : Los proyectos de alta calidad deben tener una lista clara de dependencias, junto con sus correspondientes licencias. Esto demuestra que los mantenedores prestan atención a los aspectos legales y operativos del proyecto.


Para comenzar su búsqueda de proyectos de código abierto de alta calidad, puede explorar listas o colecciones seleccionadas, como Awesome Lists en GitHub, que agrega proyectos populares y bien considerados en varios dominios. También puede consultar proyectos mantenidos por organizaciones o desarrolladores de renombre que son bien conocidos en la industria.


Recuerde que incluso los proyectos de alta calidad pueden tener áreas que podrían mejorarse. A medida que adquiera más experiencia, desarrollará una mejor comprensión del código limpio y estará mejor equipado para evaluar la calidad de varios proyectos de código abierto.


🤔 Esta respuesta es decente una vez más. Si bien factores como la popularidad del proyecto o la buena documentación no garantizan necesariamente un código limpio, todos ellos combinados son un proxy decente, probablemente lo mejor que pueda obtener, ya que nunca hay garantías sólidas. Y el consejo de mirar listas seleccionadas, aunque son más un indicador de popularidad que necesariamente de calidad, proporciona un punto de partida razonable. No es exhaustiva, ya que la búsqueda de GitHub, por ejemplo, también es una excelente manera de encontrar proyectos de código abierto populares y activos. Pero teniendo en cuenta que reconocer código limpio es un tema muy subjetivo y difícil, esta respuesta está bastante bien. Podríamos intentar profundizar aún más, pero necesito mantener la longitud de esta publicación bajo control...

Comentando su código - aclarando los aspectos cuestionables.

💬 Uno de los trucos que me diste fue escribir comentarios significativos para explicar el propósito y la funcionalidad de mi código. ¿Puedes dar más detalles sobre esto? ¿Qué comentarios considera significativos? ¿Debería escribir siempre comentarios para todo mi código? ¿Hay alguna buena heurística sobre cuándo y cómo escribir comentarios?


🤖 Escribir comentarios significativos es un aspecto importante de escribir un código limpio y fácil de mantener. Los comentarios significativos deben proporcionar información y contexto adicionales que no son inmediatamente evidentes al leer el código en sí. Aquí hay algunas pautas sobre cuándo y cómo escribir comentarios:


  1. Explique el código complejo o no obvio : si una parte del código es compleja o puede ser difícil de entender para alguien que no esté familiarizado con el proyecto, un comentario puede ayudar a explicar el razonamiento detrás de la implementación o proporcionar una descripción general de alto nivel del algoritmo.


  2. Documente suposiciones y limitaciones : si su código se basa en suposiciones específicas o tiene limitaciones, es importante documentarlas en los comentarios. Esto ayuda a evitar futuros problemas o malentendidos cuando alguien más (o incluso usted) modifique el código más adelante.


  3. Aclare el propósito de las funciones y clases : si bien los nombres de funciones y clases deben ser descriptivos, un breve comentario puede proporcionar contexto adicional sobre el propósito y el comportamiento esperado de una función o clase.


  4. Explique las soluciones alternativas o los trucos : si tuvo que implementar una solución temporal o un truco para abordar un problema o una limitación específicos, documente el razonamiento y los posibles efectos secundarios en un comentario. Esto ayuda a los futuros mantenedores a comprender el propósito de la solución alternativa y considerar posibles mejoras.


  5. Referencia a recursos externos : si su código se basa en un recurso específico, como un trabajo de investigación, un algoritmo o una biblioteca de terceros, incluya un comentario con una referencia a ese recurso. Esto ayuda a proporcionar contexto e información de antecedentes para otras personas que trabajan en el proyecto.


Aquí hay algunos consejos sobre cómo escribir comentarios efectivos:


  1. Sea conciso : los comentarios deben ser breves y directos. Evite escribir párrafos largos o repetir información que ya está clara en el código.


  2. Mantenga los comentarios actualizados : asegúrese de que sus comentarios sigan siendo relevantes a medida que su código evoluciona. Actualice los comentarios cuando modifique el código, para que reflejen con precisión el estado actual del código.


  3. Evite decir lo obvio : Absténgase de escribir comentarios que simplemente reformulen lo que hace el código. Concéntrese en proporcionar contexto, justificación o explicaciones que no sean inmediatamente obvias a partir del código en sí.


No necesita escribir comentarios para cada línea o bloque de código. En cambio, concéntrese en comentar dónde agrega valor y ayuda a mejorar la comprensión del código. Tenga en cuenta que el código bien escrito debe explicarse por sí mismo en su mayor parte, así que priorice escribir un código claro y expresivo, usando comentarios para complementar cuando sea necesario.


🤔 Esta es una muy buena respuesta. Si bien el consejo inicial era ambiguo y dejaba espacio para la interpretación que podría conducir a comentarios excesivos, esta elaboración lo aclara bien y es 100% acertado. Así es exactamente como aconsejaría abordar la redacción de comentarios.

Conclusión.

Hubo algunos pequeños errores aquí y allá, pero en general los resultados son sorprendentemente buenos.


Algunas respuestas eran demasiado obvias, otras eran una cuestión de opinión, pero ninguna de ellas estaba claramente equivocada y muchas de ellas eran realmente buenas y procesables. También me gustó la amplitud y variedad de consejos, ¡incluso incluía un punto sobre el cuidado de la salud!


Las respuestas iniciales son superficiales: no aportan mucho valor sin profundizar al menos algunos niveles a través de preguntas de seguimiento. Pero si te acostumbras a este flujo, va bastante bien. No se siente abrumado con un montón de información por adelantado, sino que puede explorar gradualmente, profundizando solo en los temas que le interesan o que no entiende. Incluso diría que se parece más a trabajar con un mentor humano real que, por ejemplo, a leer un libro o ver un curso.


Hay un poco más de carga sobre usted cuando trabaja con ChatGPT en comparación con un mentor humano real. Un ser humano puede captar más señales de su tono de voz, expresiones faciales y lenguaje corporal, y puede dirigir la discusión de manera más proactiva en respuesta a su comportamiento. Sin embargo, cuando trabaja con ChatGPT, las únicas señales que puede captar son sus preguntas directas, por lo que la calidad de la experiencia depende únicamente de su capacidad para formular preguntas claras, no de la experiencia o la inteligencia emocional de su mentor. Dicho esto, aprender a hacer preguntas adecuadas no es demasiado difícil y, si lo hace, aún puede obtener mucho valor de su interacción.


Para un principiante, la parte más complicada puede ser averiguar qué preguntar exactamente para pasar de respuestas superficiales a respuestas más profundas. Si no tiene una experiencia profunda en un área determinada, a menudo está lejos de ser obvio. Sin embargo, esto se puede mitigar aprendiendo a hacer preguntas más generales de "profundización", como "¿Por qué ha elegido esta respuesta?", "¿Puede dar más detalles?", "¿Es esta respuesta realmente la mejor?", " ¿Es esta la única buena respuesta?", "¿Cuáles son los pros y los contras?", "¿Cuáles serían las alternativas?", "¿Existen más técnicas similares?", etc. Ser bueno haciendo preguntas como estas también lo beneficiará en su trabajo diario: al aclarar los requisitos, hacer una lluvia de ideas con sus compañeros de equipo o incluso cuando trabaje con un mentor humano real, por lo que es un entrenamiento que vale la pena en sí mismo.


En resumen, por lo que puedo observar en una prueba tan limitada, sin duda lo recomendaría .


No es un sustituto completo de un mentor humano real, pero si no tiene acceso a uno, definitivamente debería probar ChatGPT. E incluso si tiene un mentor, vale la pena aprovechar ambos, ya que ChatGPT está mucho más disponible. Puede comenzar con ChatGPT (y usarlo con más frecuencia) y luego pedirle a su mentor real que evalúe sus respuestas, las amplíe o profundice en áreas más complicadas mientras se apega a ChatGPT para los casos más sencillos.


También puede ser beneficioso comenzar con una descripción general de alto nivel de lo que hay que aprender en un área determinada, para comprender la disposición general del terreno, y luego usar ChatGPT para profundizar en los temas seleccionados. Hay muchos buenos recursos que brindan una descripción general de este tipo, como roadmap.sh o la guía que estoy escribiendo .