Fuente: búsqueda e inteligencia de código universal

La cantidad de código en el mundo se está disparando. A medida que el software se convierte en el impulsor fundamental de la innovación en casi todas las industrias, los desarrolladores de software se enfrentan a bases de código más grandes e interdependientes. La mayoría de las organizaciones establecen nuevos récords para el tamaño de su base de código todos los días.

En este mundo, las herramientas de desarrollo tradicionales, como los editores y los IDE, se quedan cortas. Fueron diseñados para desarrolladores individuales que trabajan en piezas de código individuales, en lugar de para equipos de software que desarrollan grandes bases de código a escala. En las organizaciones de software modernas, la búsqueda en bases de código masivas, la comprensión de códigos desconocidos y el intercambio de conocimientos institucionales se convierten en preocupaciones de primer orden. Los equipos de software necesitan una herramienta que habilite esta inteligencia de código universal.

La búsqueda de código debe ser universal para ser eficaz: debe abarcar todos los idiomas, todos los repositorios, todos los hosts de código y todos los archivos de configuración. La búsqueda que está limitada solo a Python o solo a GitHub es como Google indexando solo sitios web construidos con Ruby on Rails o Apache HTTP Server, algo que no es un principio para los equipos de desarrollo que trabajan en el universo moderno del código.

Empresas de tecnología líderes como Uber, Lyft y Yelp están utilizando Sourcegraph para disputar este universo de código. Empresas como Google y Facebook han gastado cientos de millones de dólares para crear herramientas internas similares a Sourcegraph. GitLab, la compañía de alojamiento de código y devops, anunció recientemente una asociación con Sourcegraph para integrar de forma nativa algunas de las características de Sourcegraph en la interfaz de usuario de GitLab.

Principales razones para usar Sourcegraph

Sourcegraph es una plataforma de desarrollo diseñada para abordar los problemas que enfrentan los equipos de software modernos. Sourcegraph aborda los puntos críticos de dolor que sienten los ingenieros de software y los líderes de ingeniería.

Para los desarrolladores individuales, estas son las principales razones para usar Sourcegraph:

  1. Mantén el flujo, evita la muerte mediante mil cambios de contexto
  2. Encuentra la aguja en el pajar del código base
  3. Haga que las revisiones de código sean rápidas, minuciosas y menos dolorosas, no más TL; DR
  4. Aprenda con el ejemplo en lugar de una documentación deficiente o inexistente
  5. Realice grandes refactores y cambios de código manejables
  6. Comparta y discuta el código fácilmente, especialmente con colegas remotos
  7. Es de código abierto

Y estas son las razones más comunes por las que los líderes de ingeniería introducen Sourcegraph en su organización:

  1. Impulsa la productividad del día a día del equipo
  2. Fomentar el intercambio de conocimientos
  3. Impulsar la adopción de nuevas herramientas en toda la organización
  4. Acelere la incorporación de nuevos ingenieros
  5. Reducir el tiempo de respuesta a incidentes
  6. Mantener y difundir los estándares de calidad del código.
  7. Cree mejores herramientas de desarrollo internas con la API de código como datos
  8. Es fácil de implementar y escala con su equipo y base de código.

Mantente en el flujo

La productividad de la programación a menudo muere debido a miles de cambios de contexto. Un escenario familiar es aquel en el que un desarrollador está en medio de implementar una función o corregir un error, pero de repente necesita saltar a una parte diferente del código base. Quizás necesiten buscar una función de biblioteca determinada o descubrir cómo usarla. Quizás un colega tiene una pregunta sobre algún otro código. Ahora, el desarrollador tiene que abrir esos archivos en su IDE y, al hacerlo, destruir su estado de trabajo actual, que tendrá que ser recuperado y reconstruido dolorosamente más tarde.

Estas interrupciones son destructivas porque sacan al desarrollador del estado de flujo y el impacto negativo en la productividad es significativo. La interfaz de exploración y búsqueda de código basada en navegador de Sourcegraph permite al desarrollador mantener su estado de editor mientras explora otras partes del código. Esta preservación del estado de trabajo hace que los cambios de contexto sean mucho menos costosos, lo que permite a los desarrolladores individuales hacer más con menos molestias.

Sourcegraph

Encuentra las agujas en el pajar

Una tarea común en la ingeniería de software del día a día es buscar una cadena o patrón específico en el código. Esto podría ser un mensaje de error que aparece en los registros de producción, un anti-patrón que debería eliminarse o simplemente una cadena única que el desarrollador asocia con un punto de interés particular en el código fuente.

Sourcegraph

Encontrar estas agujas suele ser doloroso. Los IDE tienen capacidades de búsqueda, pero el código en cuestión puede existir fuera de lo que ha abierto el IDE. Las herramientas de línea de comandos tampoco tienen acceso a código fuera del sistema de archivos local y pueden resultar engorrosas de usar. Los hosts de código buscan solo en el código que alojan y, a menudo, la búsqueda es lenta o de baja calidad. La búsqueda de código debe ser universal para que sea eficaz.

Con Sourcegraph, los desarrolladores tienen una búsqueda de código que abarca todo su universo de código, con soporte completo para expresiones regulares y coincidencia de patrones más avanzada como la sintaxis Comby. El motor de búsqueda de Sourcegraph está optimizado para el código fuente, por lo que es increíblemente rápido. También fue diseñado desde cero para escalar a grandes bases de código y organizaciones. Algunas organizaciones tienen cientos de miles de repositorios, y Sourcegraph los pone todos al alcance de todos los desarrolladores.

Una sintaxis de búsqueda potente y expresiva permite al usuario filtrar los resultados por archivo, idioma, repositorio y una miríada de otros atributos. Sourcegraph también es consciente de la semántica del código y permite buscar símbolos directamente.

Sourcegraph

Aprender con el ejemplo

"¿Cómo uso esto?" es una pregunta que los desarrolladores hacen decenas de veces al día. La mayoría de las veces, la mejor documentación es un ejemplo de uso. La función de búsqueda de referencias globales de Sourcegraph permite a un desarrollador buscar ejemplos de uso en todo el universo de código, incluso si el ejemplo de uso ideal existe en otro repositorio. Esto es especialmente útil en bases de código antiguas, desconocidas o mal documentadas.

Haga revisiones de código rápidas y completas

Una broma común sobre la revisión de código dice que si envía un conjunto de cambios de 10 líneas, obtendrá 10 comentarios, pero si envía un conjunto de cambios de mil líneas, no recibirá comentarios y una aprobación automática.

Las revisiones de código de calidad a menudo son dolorosas y lentas, porque las herramientas tradicionales carecen de muchas características esenciales para ayudar al revisor a comprender rápidamente los cambios de código. Sourcegraph agrega información sobre herramientas y navegación de código similar a IDE al flujo de trabajo de revisión de código existente de los desarrolladores.

La información sobre herramientas flotante de Sourcegraph permite al revisor echar un vistazo rápidamente a las definiciones de funciones y la documentación sin tener que desplegar el conjunto de cambios en un IDE local. Sin salir de la interfaz de revisión de código, Sourcegraph le permite saltar a una definición para comprender mejor cómo funciona un fragmento de código referenciado.

Sourcegraph

Sourcegraph integra estas funciones de navegación de código directamente en la interfaz de usuario de herramientas de revisión de código populares como GitHub Pull Requests, GitLab Merge Requests y Phabricator, por lo que la experiencia del desarrollador mejora sin ningún costo de cambio.

Las mejores revisiones del código reducen los errores, mantienen los estándares de calidad del código y aumentan la difusión del conocimiento institucional en toda la organización de ingeniería.

Sourcegraph Sourcegraph

Hacer que los grandes refactores sean manejables

A medida que las bases de código crecen, los refactores a gran escala se convierten en un cuello de botella inevitable para mejorar la calidad del código e implementar nuevas funciones. Por ejemplo, es posible que la API de una biblioteca compartida deba actualizarse para admitir una nueva función, pero hacerlo puede requerir actualizaciones para docenas o incluso cientos de dependientes posteriores. La cantidad de lugares en el código que deben cambiar como resultado de la actualización de una dependencia compartida puede aumentar fácilmente a miles de puntos distribuidos en diferentes componentes propiedad de diferentes equipos.

Sourcegraph no solo ayuda a los desarrolladores a comprender el impacto de un refactor (al permitirles buscar y descubrir todos los lugares donde se utiliza una función de biblioteca en particular), sino que también proporciona un aparato para ejecutar el refactor y gestionar la campaña de conjuntos de cambios y revisiones de código. Sourcegraph Campaigns es la primera herramienta de este tipo accesible para todas las empresas de software. Al igual que la búsqueda de código de Sourcegraph, Campaigns admite la nueva sintaxis de coincidencia de patrones Comby, que es más fácil de usar y expresiva que las expresiones regulares.

Sourcegraph

Fomente el intercambio de conocimientos en su organización

Los equipos de software modernos colaboran para compartir el conocimiento institucional del código. Pero discutir el código a menudo es difícil por estas razones:

  • No puede compartir hipervínculos a archivos que tiene abiertos en su IDE
  • Las herramientas tradicionales de visualización de código del navegador no tienen una buena navegación de código

Sourcegraph ofrece lo mejor de ambos mundos: navegación de código precisa y precisa en una interfaz web. Esto hace que sea fácil compartir enlaces y que el destinatario comience a explorar y comprender el código vinculado de inmediato, sin la molestia y la fricción de abrirlo en un IDE local.

Sourcegraph

El uso compartido de enlaces de código se vuelve aún más importante para los equipos de ingeniería remota. Los enlaces de Sourcegraph se comparten cientos de veces al día a través del chat, en rastreadores de problemas y en la documentación oficial y wikis. Estos se convierten en conductos esenciales de conocimiento, especialmente cuando es imposible llamar a un colega a su escritorio.

Es de código abierto

Sourcegraph es un software de código abierto. El rastreador de problemas es público y el equipo responde muy bien a los informes de errores y las solicitudes de funciones. Los desarrolladores de software modernos deberían favorecer las herramientas abiertas por las mismas razones por las que favorecen las bibliotecas de código abierto: el conocimiento fundamental sobre el que se construyen su software y su equipo debe estar abierto a todos, para que todos puedan entender cómo funciona y todos puedan ayudar a mejorarlo.

Aumente la productividad general de su equipo

¿Cómo se retrasa un año un proyecto de software? Un día a la vez. Sourcegraph ayuda a su equipo a adelantarse a los plazos al agilizar las tareas diarias. Permite a los desarrolladores minimizar el impacto de los cambios de contexto, mantenerse en el flujo, hacer revisiones de código más rápidas y encontrar la respuesta a preguntas como "¿Cómo se usa esto?" que se preguntan decenas de veces al día. Estos aumentos de eficiencia se acumulan rápidamente. 

Impulsar la adopción de nuevas herramientas en toda la organización

La mayoría de los usuarios de Sourcegraph lo utilizan varias veces al día, pero muchas herramientas de desarrollo se utilizan con mucha menos frecuencia. Impulsar la adopción de nuevas herramientas puede ser un desafío para los CIO y directores de productividad de desarrolladores.

Monitores de observabilidad y rendimiento, rastreadores de aplicaciones distribuidos, analizadores de cobertura de código: todas estas herramientas pueden no ser fácilmente detectables o accesibles por todos los miembros de su equipo.

Sourcegraph

La API de extensión de Sourcegraph permite que las herramientas de terceros agreguen anotaciones en la interfaz de usuario web de Sourcegraph y en la interfaz de usuario de hosts de código como GitHub y GitLab. Existen extensiones para herramientas populares listas para usar como Codecov, Datadog y Sentry, y los equipos de herramientas de desarrollo interno también pueden crear extensiones privadas para herramientas internas.

Acelere la incorporación de nuevos ingenieros

Puede ser difícil incorporar nuevos ingenieros, especialmente si la organización de ingeniería o la base de código es grande. Sourcegraph reduce el tiempo entre la fecha de inicio y la primera confirmación al permitir una comprensión más rápida del código existente. Los nuevos empleados a menudo pasan la mayor parte de su tiempo saltando por partes desconocidas del código base para construir un modelo mental del código de la organización. La navegación de código universal de Sourcegraph les permite explorar toda la base de código con un cambio de contexto mínimo, y la capacidad de compartir enlaces les permite hacer preguntas específicas que no hacen perder el tiempo a los ingenieros superiores.

Reducir el tiempo de respuesta a incidentes

Cada minuto cuenta cuando se responde a un incidente de producción. La búsqueda de código de Sourcegraph reduce el tiempo que lleva causar la raíz de un problema al facilitar la localización de mensajes de error en el código fuente. A menudo, el mensaje de error se origina en una dependencia ascendente y, por lo tanto, es difícil de encontrar utilizando un IDE o una herramienta de búsqueda de línea de comandos. Sourcegraph indexa todo el código relevante para su organización y hace que los mensajes de error se puedan encontrar instantáneamente.

La API de extensión de Sourcegraph también permite la integración de herramientas de devops en Sourcegraph. Por ejemplo, la extensión Sentry muestra la cantidad de alertas de producción que está generando una línea particular de código de instrumentación. Esto proporciona un valioso conocimiento contextual al depurar incidentes.

Sourcegraph

Mantener y difundir los estándares de calidad del código.

Sourcegraph permite a las organizaciones mantener y difundir los estándares de calidad del código a través de algunos vectores:

  • La revisión de código eficiente pero completa, con navegación de código de Sourcegraph e información sobre herramientas, evita que se fusione el código de mala calidad.
  • Los verificadores de calidad de código automatizados (por ejemplo, Codecov) se pueden integrar en la revisión de código a través de la API de extensión de Sourcegraph. Sourcegraph agrega estas anotaciones a la herramienta de revisión de código existente.
  • El uso compartido de enlaces de código y la navegación de código en el navegador permiten a los desarrolladores hacer referencia a ejemplos de patrones que se deben emular y que se deben desalentar los antipatrones.

Exponga su base de código como un conjunto de datos a través de API

Sourcegraph expone una potente API GraphQL. Los equipos de herramientas de desarrollo internos utilizan la API para crear herramientas internas que aprovechen las capacidades de Sourcegraph, como la búsqueda de código universal, la navegación de código y las estadísticas de código. Los tokens de acceso permiten que las herramientas confiables se autentiquen en Sourcegraph de forma segura. Sourcegraph se envía con un explorador de API interactivo, que facilita el aprendizaje y la experimentación con la API.

Sourcegraph