Entrevistas

Peter McKee, Jefe de Relaciones con Desarrolladores en Sonar – Serie de Entrevistas

mm
Añade Unite.AI a tus fuentes preferidas en Google

Peter McKee es el Jefe de Relaciones con Desarrolladores en Sonar, una plataforma que resuelve el desafío de un billón de dólares de código malo. Sonar equipa a los desarrolladores y organizaciones para lograr sistemáticamente un estado de Código Limpio, de modo que todo el código sea apto para el desarrollo y la producción. Al aplicar la metodología de Sonar de Código Limpio a medida que se codifica, las organizaciones minimizan el riesgo, reducen la deuda técnica y obtienen más valor de su software de manera predecible y sostenible.

¿Qué te atrajo inicialmente a la informática?

Siempre estuve interesado en las computadoras desde muy joven. Incluso cuando estaba siguiendo otra carrera, me sentí atraído constantemente por las computadoras y la programación. En un momento, mi padre estaba dirigiendo una empresa de acero en Virginia y habían perdido su grupo de consultores. Como yo había aprendido a programar cuando era más joven, me invitó a trabajar y construir sistemas para él. No sabía, sinceramente, qué estaba haciendo al 100% al principio, pero aprendí de los libros y haciendo el trabajo en el puesto, y me convertí en autodidacta. Eso continuó impulsando mi interés en la codificación y las computadoras, y realmente consolidó mi interés en la informática.

¿Podrías explicar cómo definirías qué es el Código Limpio y por qué es tan importante?

Se ha dicho durante años que el software comerá el mundo, y diría que ahora es oficial: el mundo está construido sobre software y todas las empresas son efectivamente empresas de software. En la base de un buen software está el código de calidad, ya que el código está en el núcleo de todo el software y dicta su comportamiento y rendimiento. Es por eso que el Código Limpio —código que es coherente, intencional, adaptable y responsable— es tan importante. El código que es limpio es fácil de entender y cambiar, opera suavemente en tiempo de ejecución y no contiene deuda técnica, lo que lo hace apto para su propósito. El Código Limpio es el estándar que las organizaciones deben adoptar para garantizar que su software siga siendo un activo —y no una pasiva— y es el principal impulsor del éxito empresarial de hoy en día.

El Código Limpio beneficia a los equipos y organizaciones de todos los tamaños y niveles de madurez, y aumenta el valor del software como resultado. Algunos beneficios específicos son que:

  • Mejora las habilidades de desarrollo — Los desarrolladores pueden detectar, entender y resolver problemas a medida que codifican, al mismo tiempo que aprenden las mejores prácticas.
  • Aumenta la eficiencia y la productividad — Reduciendo el trabajo continuo y los ciclos de retroalimentación largos, lo que resulta en una mayor productividad.
  • Reduce el riesgo reputacional y empresarial — El Código Limpio garantiza menos riesgos de seguridad al permitir que los equipos aborden proactivamente los problemas antes de que lleguen a la producción.
  • Reduce la deuda técnica a nivel de código — El Código Limpio aborda gradualmente la deuda de la base de código sin necesidad de una revisión masiva y una interrupción de la aplicación.
  • Aumenta la velocidad de desarrollo de software — Los estándares y flujos de Código Limpio mejoran la velocidad de DevOps, lo que promueve un tiempo de llegada al mercado más rápido.

¿Podrías discutir la importancia de la coherencia y la estructura en el código, y qué ejemplos hay de código coherente y limpio?

La calidad del código coherente es algo que todos los gerentes o directores técnicos buscan mantener. La coherencia es crucial cuando se trata de la calidad del código porque la coherencia conduce a la previsibilidad. Está escrito de una manera uniforme y convencional —todo el código tiene un aspecto similar y sigue un patrón regular, incluso con múltiples contribuyentes en diferentes momentos. El código coherente está formateado, convencional e identificable. Cuando se adoptan estándares de codificación coherentes, los desarrolladores se vuelven más eficientes y pueden cumplir con sus expectativas de entrega con velocidad y precisión.

¿Podrías discutir la importancia del código que puede manejar condiciones inesperadas, y por qué esto no debe pasarse por alto?

Los desarrolladores siempre están tratando de anticipar y prepararse para ocurrencias inesperadas durante el diseño y el proceso de desarrollo, pero esto no se puede prevenir en todos los casos. Los estados inesperados pueden surgir debido a un uso no intencional o ataques intencionados. Estos estados inesperados pueden introducir involuntariamente vulnerabilidades de seguridad que los atacantes pueden explotar. Es por eso que los desarrolladores deben esforzarse por mejorar constantemente la calidad y la estabilidad de su código y probar condiciones inesperadas. Al seguir un enfoque de Código Limpio a medida que se codifica, los equipos pueden acelerar mejor las nuevas funciones, evitar costos de rework innecesarios y fomentar el crecimiento y la retención del talento. El Código Limpio promueve la seguridad, la mantenibilidad y la confiabilidad, y puede permitir que los desarrolladores anticipen y manejen estados inesperados de manera más efectiva y vuelvan a poner el software en funcionamiento más rápido.

¿Podrías discutir los beneficios de utilizar la inteligencia artificial generativa para la generación de código?

Incorporar la inteligencia artificial en el ciclo de vida del desarrollo de software tiene sus beneficios, como permitir que los desarrolladores trabajen de manera más eficiente. De hecho, la investigación de GitHub encontró que los desarrolladores pueden completar tareas más del 50% más rápido utilizando la inteligencia artificial. La inteligencia artificial generativa también puede generar código más rápido, y a su vez, puede quitar la carga de tareas más tediosas y rutinarias —como la documentación o la generación de fragmentos de código— de su plato, para que puedan concentrarse en trabajo de mayor valor y resolver problemas más complejos. Sin embargo, es fundamental que el código generado se verifique contra los estándares de Código Limpio para garantizar que el código sea seguro, confiable y mantenible.

¿Cuáles son algunos de los posibles inconvenientes y riesgos del código generado?

Mientras que la inteligencia artificial puede liberar el tiempo de los desarrolladores para trabajar en proyectos de mayor valor y aumentar la productividad, no está exenta de riesgos. Es por eso que la demanda de desarrolladores no desaparecerá en la era de la inteligencia artificial. Debido a que las herramientas de inteligencia artificial generativa pueden generar una gran cantidad de código rápidamente, existe el potencial de errores. Algunos inconvenientes específicos son:

  • Responsabilidad: El código generado por la inteligencia artificial reduce la capacidad de responsabilizar a las personas por el código creado, lo que puede hacer que resolver o abordar problemas sea más difícil.
  • Vulnerabilidades: Debido a que se basa en gran medida en información de código abierto, no hay garantía de que el código producido sea seguro o limpio. Puede haber errores o problemas de seguridad que pueden poner en riesgo a los negocios.
  • Calidad: La inteligencia artificial no verifica la calidad, y solo porque se genera a partir de la inteligencia artificial no significa que sea eficiente o de alta calidad.
  • Falta de contexto: Perder el elemento humano naturalmente significa que se pierde el contexto de un problema o proyecto. El código generado por la inteligencia artificial debe revisarse para garantizar que esté haciendo el trabajo completo.

Cuando los desarrolladores siguen un enfoque de Código Limpio a medida que codifican —tanto el código humano como el generado por la inteligencia artificial—, pueden garantizar que el código sea apto para el desarrollo y la producción y cumpla con los estándares requeridos por su organización.

¿Cuáles son algunas otras variables que deben considerarse en el código apto para la producción?

Los desarrolladores que escriben código que se adhiere a los principios de Código Limpio pueden estar seguros de que su código es apto para el desarrollo y la producción, lo que significa que el código sigue ciertas características:

  • Coherente: El código debe ser coherente y seguir un estilo común. Incluso si el código es trabajado por varios desarrolladores diferentes con el tiempo, debe tener un aspecto similar y adherirse a patrones establecidos previamente.
  • Intencional: El código intencional debe leerse como si se hubiera escrito con atención y cuidado para transmitir su propósito; solo debe tener una interpretación disponible.
  • Adaptable: El código adaptable está segmentado y organizado de una manera que lo hace más fácil de administrar y ver las relaciones entre cada línea de código. Esto hace que el código esté estructurado para una evolución fácil y segura.
  • Responsable: El código, y sus desarrolladores, deben ser conscientes de sus obligaciones éticas con respecto a los datos y su posible influencia en las normas sociales. El código no debe presentar un riesgo continuo de dañar involuntariamente a terceros.

¿Podrías discutir algunas de las diversas ofertas de Sonar y cómo ayuda a los codificadores a construir código responsable, seguro y de alta calidad de manera rápida y sistemática?

A través de nuestros analistas de la industria, Sonar identifica problemas de codificación de manera integral y recomienda soluciones con ciclos de retroalimentación cortos mientras educa al desarrollador en contexto, lo que permite en última instancia que las organizaciones construyan código responsable, seguro y de alta calidad de manera rápida y sistemática. Los elementos básicos de la solución de Sonar son SonarLint, SonarQube (autogestionado; de código abierto), y SonarCloud (SaaS), con una cobertura extensa que admite más de 30 lenguajes de programación, marcos y infraestructuras, 11 IDE, y más de 5.000 reglas de codificación y lenguaje específicas.

SonarLint, una extensión de IDE, proporciona la primera línea de comprobaciones para encontrar problemas en tiempo real desde el momento en que se escribe el código. Atrapa una gran parte de los problemas de antemano y ayuda a los desarrolladores a descubrir y solucionar errores como un corrector ortográfico para el código. SonarQube y SonarCloud, las herramientas de revisión de código de análisis estático de Sonar, inspeccionan y analizan continuamente la base de código, con la integración de SonarLint. Utilizando puertas de calidad para determinar si el código cumple con los estándares definidos de calidad, seguridad y confiabilidad para la producción, SonarQube y SonarCloud inspeccionan el código en busca de errores, vulnerabilidades, puntos calientes de seguridad y olores de código.

Al emparejar nuestro conjunto de soluciones con nuestra metodología de Código Limpio a medida que se codifica —un enfoque que sigue estándares establecidos para mantener el código nuevo, agregado o editado limpio—, los desarrolladores y las organizaciones pueden entregar Código Limpio y remediar el código existente de manera orgánica, para que puedan centrarse en nuevos proyectos innovadores que impulsan el valor empresarial.

¿Cómo ayuda Sonar a garantizar que el código sea compatible y cumpla con los estándares de la industria?

Sonar ayuda a los desarrolladores a obtener retroalimentación inmediata y contextualizada, resaltando los problemas donde se encuentran en la base de código, dentro del flujo de trabajo de desarrollo basado en años de experiencia en analizador de lenguaje. Los desarrolladores obtienen acceso a explicaciones claras de por qué ocurre un problema y cómo solucionarlo rápidamente, así como recursos adicionales para un aprendizaje más profundo. Tenemos educación integrada en todo el flujo de trabajo, desde el IDE hasta la integración continua/despliegue continuo. Por ejemplo, Sonar tiene reglas específicas de MISRA C++ 2023 disponibles en SonarLint para ayudar a los equipos a crear código que esté mejor preparado para la certificación eventual. Ofrece orientación de codificación, explicando el por qué detrás de un problema marcado, y cómo solucionarlo, para garantizar que el código que se escribe sea compatible con MISRA.

¿Cuál es tu visión para cómo la inteligencia artificial transformará la codificación en el futuro?

Creo que la inteligencia artificial seguirá brindando un gran valor para abordar el agotamiento de los desarrolladores. Mientras no creo que la inteligencia artificial pueda descargar el pensamiento y el toque humano de los desarrolladores, creo que incluso dentro de unos meses veremos un conjunto completamente nuevo de GPT —por no mencionar lo que parecerá dentro de unos años. No creo que los tecnólogos o los desarrolladores desaparezcan, pero la forma en que realizan su trabajo diario cambiará sin duda. La forma en que los desarrolladores utilizan la inteligencia artificial será tan simple y común como buscar algo en Google (GOOGL ) como un atajo. Hay mucho que explorar sobre el uso de la inteligencia artificial, pero debemos considerar el elemento humano en primer lugar para verificar los inconvenientes de la inteligencia artificial. Hay un potencial transformador para el desarrollo de software, pero no debemos dejar que se ejecute sin controles —especialmente cuando los negocios digitales de hoy dependen del software que los sustenta.

Gracias por la gran entrevista, los lectores que deseen aprender más pueden visitar Sonar.

Antoine es un líder visionario y socio fundador de Unite.AI, impulsado por una pasión inquebrantable por dar forma y promover el futuro de la IA y la robótica. Como empresario serial, cree que la IA será tan disruptiva para la sociedad como la electricidad, y a menudo se le escucha hablando con entusiasmo sobre el potencial de las tecnologías disruptivas y la AGI.

Como futurista, está dedicado a explorar cómo estas innovaciones darán forma a nuestro mundo. Además, es el fundador de Securities.io, una plataforma enfocada en invertir en tecnologías de vanguardia que están redefiniendo el futuro y remodelando sectores enteros.