Volver al blog

La forma más rápida de aprender Go en 2026

La Go Developer Survey de 2025 encuestó a 5.379 desarrolladores de Go en activo. Esta es la hoja de ruta basada en lo que de verdad construyen, cómo despliegan y dónde se atascan.

La forma más rápida de aprender Go en 2026

La mayoría de las hojas de ruta para desarrolladores de Go se basan en intuiciones. Enumeran todos los frameworks con los que alguien ha publicado alguna vez un package main y lo llaman plan de aprendizaje. Esta parte de otro sitio: a finales de 2025, 5.379 desarrolladores de Go en activo le contaron al equipo de Go para qué usan Go en realidad, cómo lo despliegan y con qué tropiezan. La hoja de ruta que sigue se apoya en esos datos.

Si empiezas con Go en 2026, lee esto antes de pasarte tres semanas con Gin.

Resumen rápido

  • Sáltate el contenido de «introducción a la programación». Abre el Tour of Go y practica con la toolchain (go run, go build, go mod) hasta que puedas compilar y ejecutar un programa de Go desde la terminal sin pensarlo.
  • Lee Effective Go pronto. El 33 % de los encuestados dice que «garantizar que nuestro código Go siga las buenas prácticas y el estilo idiomático» es su principal frustración, por delante de cualquier funcionalidad que eche en falta.
  • Construye los dos tipos de proyecto que publican de verdad entre el 73 % y el 74 % de los desarrolladores de Go en activo: herramientas de línea de comandos y servicios API/RPC.
  • Aprende net/http y la biblioteca estándar antes que cualquier framework. Si más adelante un proyecto necesita uno, puedes añadirlo entonces.
  • Después, concurrencia: goroutines, channels y la cancelación con context. Escribe tests sobre la marcha.
  • El equipo de Go no publica ninguna hoja de ruta «oficial», así que desconfía un poco de quien diga tener una. Esta guía se apoya en la encuesta, la documentación de Go y los diseñadores del lenguaje.
  • ¿Quieres el recorrido completo? La hoja de ruta interactiva de LevelUpGo te lleva desde el hello world hasta aplicaciones en producción.
flowchart LR
    A["Stage 1<br/>Toolchain + Tour of Go"] --> B["Stage 2<br/>Effective Go + Idioms"] --> C["Stage 3<br/>Concurrency"]
    D["Stage 4<br/>CLI + HTTP service"] --> E["Stage 5<br/>Testing + Standard library"] --> F["Stage 6<br/>Frameworks (only when needed)"]

Las seis etapas de la hoja de ruta, con los frameworks al final.

Lo que 5.379 desarrolladores de Go le contaron al equipo de Go en 2025

El equipo de Go hace una encuesta a desarrolladores cada año. Los resultados de 2025, publicados en enero de 2026, reunieron 7.070 respuestas, de las cuales 5.379 superaron la depuración de datos. El 87 % de los encuestados son desarrolladores profesionales y el 82 % usa Go en su trabajo principal. (fuente)

Estas cifras de la encuesta deciden el orden de todo lo que viene a continuación:

SeñalValorQué significa
Tipo de proyecto principalHerramientas de línea de comandos (74 %)Si te saltas el capítulo de CLI, te saltas ¾ de lo que construyen los desarrolladores de Go en activo.
Segundo tipo de proyectoServicios API/RPC (73 %)Casi empatado con las CLI. Entre los dos cubren la mayor parte del trabajo con Go.
Destino de despliegueContenedores Linux (96 %)Tu código se va a ejecutar en Linux, así que aprende docker build pronto.
Frustración principalEstilo idiomático / buenas prácticas (33 %)Hay más gente atascada en «qué es lo idiomático» que en cualquier funcionalidad que falte.
Cuota de editoresVS Code 37 %, GoLand 28 %Cualquiera de los dos sirve. Elige uno y vuelve a escribir código.
xychart-beta
    title "What Go developers build, 2025 survey"
    x-axis ["CLIs", "API services", "Libraries", "Cloud infra", "ML tools"]
    y-axis "Percent of respondents" 0 --> 100
    bar [74, 73, 49, 33, 11]

Las CLI y los servicios API van en cabeza con mucha diferencia. Construye al menos uno de cada tipo antes de elegir un framework.

Etapa 1: la toolchain y tu primer programa

La secuencia oficial «Getting Started» del equipo de Go es corta a propósito: instalar Go, ejecutar un hello world, entender el comando go y escribir un módulo. (fuente)

Antes que nada, familiarízate con tres cosas:

  1. El comando go. go run, go build, go install, go fmt, go test, go mod. No hace falta que memorices las opciones, pero sí deberías saber qué comando usar en cada momento.
  2. Módulos. go mod init <name> crea go.mod, y al añadir imports se actualiza go.sum por ti. Existen los workspaces multimódulo, pero tardarás un tiempo en necesitarlos.
  3. A Tour of Go. Lo escribió Russ Cox, y el equipo de Go lo recomienda como primer recurso interactivo. Haz todos los ejercicios.

Un primer programa tiene este aspecto:

example.gogo
package main

import "fmt"

func main() {
    fmt.Println("hello, go")
}

Ejecútalo sin compilar antes:

example.gogo
$ go run main.go
hello, go

No tienes que configurar un pipeline de compilación antes de poder ejecutar algo. La mayoría de los programas pequeños en Go se mantienen así de simples.

Etapa 2: Effective Go (el paso que la mayoría de las hojas de ruta se salta)

Effective Go se cita constantemente, pero poca gente lo lee al principio. El equipo de Go lo llama una «lectura obligada para cualquier programador nuevo en Go», y está gratis en la web oficial.

El 33 % de los desarrolladores de Go en activo señala «garantizar que nuestro código Go siga las buenas prácticas y el estilo idiomático de Go» como su mayor frustración. Eso supera a «faltan funcionalidades en el lenguaje» (28 %) y a «módulos fiables» (26 %). La sintaxis es lo fácil. Lo difícil es escribir código que otros desarrolladores de Go lean y reconozcan como Go normal.

Léelo después del Tour y antes de cualquier framework. En unas 50 páginas densas trata nombres, manejo de errores, interfaces, concurrencia y formato.

Este es el tipo de cosas que enseña, la forma estándar de manejar un error:

example.gogo
file, err := os.Open(path)
if err != nil {
    return fmt.Errorf("open %s: %w", path, err)
}
defer file.Close()

El error se comprueba en el acto. Envolverlo con %w mantiene la cadena intacta, así que quien llama todavía puede inspeccionarlo con errors.Is y errors.As. La limpieza va en un defer en lugar de en un bloque finally.

Verás este patrón en cualquier código Go que abras. Quien se salta Effective Go suele acabar reinventándolo, y mal. En nuestro curso Go Idioms & Naming practicas estos patrones de forma interactiva, pero el documento original es gratis y es la fuente de referencia.

Etapa 3: la concurrencia tal como la usa el código Go real

La concurrencia es esa característica de Go que la gente aprende por aprenderla y luego usa mal. Se asienta mejor si la aprendes a través de las piezas que usa el código Go real: goroutines, channels y context.

Como mínimo necesitas estas tres:

  • Las goroutines se lanzan con go someFunc(). No son hilos del sistema operativo. El runtime las planifica sobre un pequeño pool de hilos.
  • Los channels son las tuberías tipadas a través de las que se coordinan las goroutines. make(chan T) para uno sin búfer, make(chan T, n) para uno con búfer.
  • context.Context es la forma de cancelar trabajo que cruza los límites de una función o de una goroutine. Hoy en día, las API bloqueantes de la biblioteca estándar reciben un context.

La combinación más habitual reparte el trabajo entre goroutines, recoge los resultados en un channel y se detiene antes si el context se cancela.

sequenceDiagram
    participant Caller
    participant Main as fetchAll
    participant G as Worker goroutines
    participant Ch as Results channel
    Caller->>Main: ctx, urls
    Main->>G: spawn one goroutine per URL
    G->>Ch: send result
    Caller-->>Main: ctx cancel signal
    Ch->>Main: collect via select
    Main->>Caller: results

Repartir, recoger y detenerse al cancelar. Los servidores Go usan esta forma internamente.

example.gogo
func fetchAll(ctx context.Context, urls []string) []result {
    out := make(chan result, len(urls))
    for _, u := range urls {
        go func(u string) {
            out <- fetch(ctx, u)
        }(u)
    }
    results := make([]result, 0, len(urls))
    for range urls {
        select {
        case r := <-out:
            results = append(results, r)
        case <-ctx.Done():
            return results
        }
    }
    return results
}

El select sobre ctx.Done() es lo que permite que la función termine limpiamente cuando quien llama cancela. net/http y database/sql hacen lo mismo internamente.

Cuando hacer select sobre un context te salga de forma natural, dominarás la parte de la concurrencia de la que depende el código Go del día a día. Concurrency Fundamentals cubre el resto del modelo de forma interactiva.

Etapa 4: construye una CLI y un servicio HTTP

Son los dos tipos de proyecto que publican entre el 73 % y el 74 % de los desarrolladores de Go en activo. (fuente) Construye una de cada antes de tocar un framework.

Una CLI. El paquete flag forma parte de la biblioteca estándar, y muchas CLI que ya usas (kubectl, docker, terraform, gh) están escritas en Go. Una mínima tiene este aspecto:

example.gogo
package main

import (
    "flag"
    "fmt"
)

func main() {
    name := flag.String("name", "world", "who to greet")
    flag.Parse()
    fmt.Printf("hello, %s\n", *name)
}
example.gogo
$ go build -o greet . && ./greet --name=patrik
hello, patrik

El resultado es un binario enlazado estáticamente que puedes pasarle a otra persona y funciona. En la mayoría de los demás lenguajes de backend, llegar ahí cuesta más trabajo. El curso Building CLI Apps cubre subcomandos, códigos de salida y formato de la salida.

Un servicio HTTP. net/http también forma parte de la biblioteca estándar, así que no necesitas Gin ni Echo para publicar uno.

example.gogo
package main

import (
    "encoding/json"
    "net/http"
)

func main() {
    http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
        json.NewEncoder(w).Encode(map[string]string{"status": "ok"})
    })
    http.ListenAndServe(":8080", nil)
}

Eso es un servidor HTTP que funciona, sin dependencias. Añádele logging estructurado, un enrutamiento en condiciones (http.ServeMux mejoró mucho en Go 1.22) y tests, y ya tienes un servicio API.

Etapa 5: tests y biblioteca estándar antes que los frameworks

go test viene con Go, y la mayoría de los tests en Go están guiados por tablas (table-driven tests), como este.

example.gogo
func TestAdd(t *testing.T) {
    cases := []struct {
        name     string
        a, b, want int
    }{
        {"zero", 0, 0, 0},
        {"positive", 2, 3, 5},
        {"negative", -1, 1, 0},
    }
    for _, tc := range cases {
        t.Run(tc.name, func(t *testing.T) {
            if got := Add(tc.a, tc.b); got != tc.want {
                t.Errorf("Add(%d, %d) = %d, want %d", tc.a, tc.b, got, tc.want)
            }
        })
    }
}
example.gogo
$ go test -v ./...
=== RUN   TestAdd
=== RUN   TestAdd/zero
=== RUN   TestAdd/positive
=== RUN   TestAdd/negative
PASS

No hace falta ninguna biblioteca de aserciones ni framework de mocks. El tutorial oficial del equipo de Go tiene un capítulo sobre fuzzing (go test -fuzz), y el paquete testing admite benchmarks (go test -bench) de serie. Professional Go Testing cubre los patrones que necesitas cuando tus tests crecen más allá de los ejemplos de juguete.

En la encuesta del segundo semestre de 2024, «mantener estándares de código coherentes» fue el principal reto, con un 58 %. Los tests permiten a un equipo imponer esa coherencia de forma automática en lugar de discutirla en cada revisión.

Otros paquetes de la biblioteca estándar que vale la pena aprender bien, más o menos en este orden:

  • errors, fmt: envolver errores con %w, errors.Is, errors.As.
  • io, os: readers, writers y manejo de archivos.
  • encoding/json: struct tags, encoders y decoders.
  • context: ya visto más arriba.
  • net/http: ya visto más arriba.
  • database/sql: pool de conexiones y sentencias preparadas. Añade pgx o sqlite más adelante.
  • log/slog: logging estructurado, añadido en Go 1.21. Sustituye log por este desde el primer día.

Etapa 6: cuándo (y si conviene) aprender frameworks web

La mayoría de las hojas de ruta publicadas colocan Gin, Echo y Fiber cerca del principio. El propio material de inicio del equipo de Go usa Gin, pero Effective Go y los tutoriales de la biblioteca estándar usan net/http directamente. Aquí el material oficial se contradice de verdad, y nosotros nos quedamos con la biblioteca estándar.

Por qué:

  • net/http está en el runtime. Los frameworks son dependencias que tienes que mantener con cada actualización de Go.
  • La encuesta de 2025 sitúa «módulos de Go fiables» como la tercera frustración (26 %). Elegir un framework suele ser la primera vez que alguien que empieza con Go se topa con este problema.
  • Las mejoras de http.ServeMux en Go 1.22 eliminaron la mayoría de los motivos de enrutamiento por los que la gente elegía Gin. El enrutamiento por método y los parámetros de ruta ya están en la biblioteca estándar.

Aprende un framework cuando un proyecto de verdad lo necesite. Gin y Echo están bien. Fiber se salta net/http por completo y funciona sobre fasthttp, lo que trae sus propios problemas de compatibilidad con el middleware.

Si el encargo es «construir una API JSON para una startup», net/http con chi (un router ligero e idiomático) es una combinación de la que no tendrás que migrar más adelante.

Carrera y salario en Go: lo que dicen los datos (y lo que no)

No existe ningún conjunto de datos público y riguroso que desglose el salario específicamente para Go. El End of Year Pay Report 2025 de Levels.fyi abarca 245.000 datos de 5.000 empresas y no distingue por lenguaje en absoluto. (fuente)

Esto es lo que sí existe:

  • La Developer Survey 2025 de Stack Overflow sitúa el uso de Go en el 16,4 % del total de encuestados y en el 17,4 % de los desarrolladores profesionales, en el puesto 13 entre los lenguajes de programación. (fuente)
  • El salario de «Go Developer» en EE. UU. que declaran los propios usuarios de Glassdoor, consultado en abril de 2026, tiene una media de 133.673 USD, con el percentil 25 en 105.368 USD y el 75 en 171.400 USD. Son datos autodeclarados, así que tómalos como menos fiables que los datos de nóminas.
  • La Go Developer Survey 2025 muestra que el 75 % de los encuestados tiene 6 años o más de experiencia profesional como desarrollador. La mayoría de los desarrolladores de Go ya tenían una carrera en backend antes de Go, y ser «desarrollador de Go» rara vez es el primer empleo de nadie.

Así que Go no es un lenguaje que aprendes en un bootcamp para que te contraten seis semanas después. Se usa mucho en empresas que pagan bien (Google, Cloudflare, Uber y Datadog tienen mucho Go en producción), y es una segunda habilidad muy valiosa sobre una base de experiencia en backend. Nuestra comparación honesta de Go vs Rust para backend analiza cómo se comparan ambos a la hora de conseguir trabajo.

Para la hoja de ruta, eso significa que no deberías planificar en función de los salarios. Hazte bueno construyendo cosas, y las oportunidades de trabajo llegarán después.

Una advertencia: el equipo de Go no tiene hoja de ruta oficial

El equipo de Go publica el Tour of Go, Effective Go, la especificación del lenguaje, el índice de documentación y la encuesta a desarrolladores. Nada de eso es una hoja de ruta. Lo más parecido a algo oficial es la página go.dev/learn, que agrupa los recursos en nivel principiante, intermedio y avanzado.

Toda «hoja de ruta para desarrolladores de Go» que encuentres en internet la ha escrito la comunidad, incluida esta. El repositorio de hoja de ruta de Alikhll en GitHub, con 18,4k estrellas, todavía dice «in 2021» en su README. El itinerario de Go de roadmap.sh es bueno, pero comercial. Las hojas de ruta de Medium se copian casi todas unas a otras.

Así que desconfía de la etiqueta. El camino que se sostiene es el Tour oficial, luego Effective Go, luego CLI y servicios HTTP, con la concurrencia aprendida en cargas de trabajo reales y los tests escritos sobre la marcha. Los frameworks van al final.

Preguntas frecuentes

¿Cuánto se tarda en ser desarrollador de Go?

Si ya trabajas en backend con otro lenguaje, tres meses de práctica constante bastan para publicar Go en producción. Si partes de cero, cuenta con 9 a 12 meses, y ten en cuenta que buena parte de ese tiempo lo dedicarás a entender cómo funcionan los sistemas más que a aprender sintaxis.

¿Necesito un título en informática para ser desarrollador de Go?

No. La encuesta de 2025 no mide la titulación como criterio de contratación, y el peso de Go en puestos de DevOps y platform engineering hace que muchos desarrolladores de Go hayan llegado desde operaciones o de forma autodidacta.

¿Debería aprender Gin/Echo/Fiber si estoy empezando?

No como primer paso. Construye un servicio con net/http de principio a fin para entender el enrutamiento, el middleware y el ciclo de vida de una petición. Añade un framework más adelante si tu proyecto de verdad saldría ganando con uno.

¿Cuál es la mejor forma de practicar Go después del Tour?

Construye las dos cosas que publican los desarrolladores de Go en activo: una CLI y un servicio HTTP. Luego añade tests y un Dockerfile. Con eso cubres cerca del 80 % del día a día de un puesto junior de Go.

¿Sigue habiendo demanda de Go en 2026?

Sí. La encuesta de Stack Overflow de 2025 sitúa el uso de Go en el 17,4 % entre desarrolladores profesionales, 2 puntos porcentuales más que en 2024. La Go Developer Survey muestra un 91 % de satisfacción (un 63 % «muy satisfechos») por séptimo año consecutivo.

Por dónde seguir

Si quieres un recorrido interactivo que siga las etapas anteriores, el curso Go Fundamentals de LevelUpGo cubre en orden la toolchain, el estilo idiomático, la concurrencia, la biblioteca estándar y los tests. El plan gratuito cubre lo básico. Pro desbloquea los cursos de proyectos, donde construyes las CLI y los servicios HTTP que recomienda esta hoja de ruta.

Escribe Go como un ingeniero sénior

Lecciones interactivas en tu navegador. Las primeras son gratis.

Prueba una lección gratisO crea una cuenta gratuita