2 puntos por GN⁺ 2024-08-13 | 1 comentarios | Compartir por WhatsApp

Go es mi martillo, todo es un clavo

Introducción

  • Markus es un desarrollador que trabaja solo y un creador de productos digitales
  • Trabaja por su cuenta, sin equipo, y busca una forma de trabajo flexible
  • Evita stacks tecnológicos complejos y se enfoca en aportar valor a los clientes

Por qué eligió Go

Razón 1: Go puede hacer casi de todo

  • Go es simple, fácil de leer y consistente
  • Puede usarse para muchos propósitos, como CLI, infraestructura en la nube, servidores HTTP y trabajo de redes
  • También es posible desarrollar con Go juegos para Nintendo Switch, apps GUI y sintetizadores de texto para terminal

Razón 2: Menos cambio de contexto

  • Usar varios lenguajes de programación dificulta cambiar de una sintaxis a otra
  • Si se usa un solo lenguaje, se pueden evitar esos problemas
  • Es más fácil gestionar varios elementos como el lenguaje, el compilador, el IDE, la toolchain y la comunidad

Razón 3: Conocimiento profundo

  • Al enfocarse en un solo lenguaje, se puede construir un conocimiento más profundo
  • Concentrarse en un solo lenguaje es más productivo que manejar varios
  • Esto ayuda a reducir la complejidad del desarrollo de software

Conclusión

  • Markus está llevando adelante con éxito diversos proyectos usando Go
  • Está aumentando su productividad gracias a un conocimiento profundo de Go
  • Con Go puede resolver distintos desafíos

Resumen de GN⁺

  • Markus, como desarrollador independiente, eligió Go para reducir la complejidad y aumentar la productividad
  • Go puede usarse para muchos fines y, por ser simple y consistente, es fácil de gestionar
  • Enfocarse en un solo lenguaje permite construir conocimiento profundo y puede ser más eficiente que trabajar con varios
  • Con Go es posible llevar adelante con éxito proyectos diversos, y eso también puede ser útil para otros desarrolladores

1 comentarios

 
GN⁺ 2024-08-13
Opiniones de Hacker News
  • Tengo experiencia trabajando en una empresa que procesaba datos financieros usando Go

    • Me incomodaba que mis colegas usaran Go para tareas puntuales, como agregar archivos CSV o actualizar bases de datos
    • Me costaba confiar al ver a colegas implementar algoritmos básicos por su cuenta en lugar de usar Pandas
    • Me parecía una pérdida de tiempo para la empresa y daba la impresión de ser un asunto de orgullo para demostrar que Go era suficiente
  • Mucha gente subestima el costo de aprender bien un lenguaje

    • Toma de 2 a 4 años llegar a un nivel en el que puedas decir que "conoces" un lenguaje
    • Toma de 8 a 10 años entender el lenguaje, el compilador, el runtime, la biblioteca estándar y las formas idiomáticas de usarlo
    • Durante ese tiempo, puedes hacer evolucionar la forma de usar el lenguaje y capacitar rápidamente a principiantes
  • Creo que Go sirve para casi cualquier trabajo

    • Soy muy productivo cuando uso Go
    • Si un proyecto supera las 100 líneas, me parece mejor que Python
    • Ventajas de Go:
      • El lenguaje es muy simple
      • La biblioteca principal está bien diseñada
      • Con la toolchain y la biblioteca principal se puede resolver la mayoría de los trabajos
  • Creo que Go no es adecuado para proyectos personales

    • El código es verboso y hasta las tareas simples requieren escribir mucho código
    • Le faltan enums adecuados, union types, seguridad frente a null y otras cosas
    • Por esas razones, no me divierte usarlo en proyectos personales
  • Prefiero Typescript y Rust

    • Deno y Typescript son herramientas más versátiles que Go
    • Typescript es más seguro y ergonómico, pero un poco más lento
    • Rust es más seguro y más rápido, pero difícil de aprender
    • Ventajas de Typescript:
      • Seguridad frente a null
      • Genéricos ampliamente soportados
      • Tipos unión discriminados
      • Concurrencia segura
      • Métodos de colecciones/iteradores
    • Ventajas de Go:
      • Es más eficiente en tamaño y uso de memoria
      • El GC de Go es mejor que V8
      • Es más rápido en trabajos limitados por CPU
      • Biblioteca estándar más grande
  • He usado Go y Typescript, pero prefiero Kotlin/JVM

    • Aunque está la dicotomía de Gradle/Maven y la ansiedad por el sistema de build, estoy muy satisfecho con las características del lenguaje y el runtime
  • Creo que Go es una herramienta para todo

    • Todo es simple y fácil de usar
    • Se puede compilar y desplegar con comandos sencillos sin depender de muchas herramientas externas
    • Otros lenguajes también tienen ventajas, pero ninguno es tan simple y sin complicaciones como Go
  • Me gusta Go, pero no lo amo

    • Me parece que el sistema de herramientas es un desastre
    • Los módulos de Go se sienten incompletos
    • Los genéricos todavía son primitivos
    • Siento que el ecosistema está inacabado
  • Me gustan la mayoría de los aspectos de Go, pero como alguien que escribe mucho código numérico, la falta de operator overloading es una desventaja

    • Sigo usando Python y C++
    • Rust es atractivo como reemplazo de C++, pero tiene demasiadas reglas para reemplazar a Python
  • La vida es demasiado corta como para volverse realmente bueno en más de una cosa, así que hay que elegir con cuidado

    • Razones por las que elegí Go:
      • Biblioteca estándar increíble
      • Fácil de leer y escribir
      • Compilación en un único binario estático
      • No se necesitan contenedores
      • Se puede usar en cualquier parte (desarrollo web, apps de escritorio, desarrollo de juegos, embebidos, etc.)