Saltar al contenido

Cómo escribir publicaciones técnicas que la gente realmente lee

La estructura, la narrativa y las técnicas de optimización que hacen destacar un artículo técnico, atraen lectores y consolidan tu credibilidad.

5 min de lectura
Pantalla de laptop con una publicación técnica bien estructurada, con ejemplos de código y encabezados claros

La mayoría de las publicaciones técnicas mueren en la oscuridad. No porque las ideas sean malas, sino porque la ejecución no respeta el tiempo ni la atención del lector. Los ingenieros son la audiencia más escéptica que existe: cierran tu pestaña en cuanto perciben relleno, imprecisiones o condescendencia.

Escribir contenido técnico que conecte con el lector exige un enfoque distinto al de la documentación o la escritura académica. Requiere una mezcla de precisión, personalidad y una edición implacable que la mayoría de los ingenieros nunca llega a dominar.

Empezar con un problema, no con una definición

La forma más rápida de perder a un lector es abrir con una definición al estilo Wikipedia. "Docker is a containerization platform that..." — nadie que lea tu blog ignora qué es Docker. Empieza con el problema que te llevó a escribir el post.

markdownmarkdown
<!-- ❌ Generic opening that wastes the reader's time -->
# Understanding Docker Volumes
 
Docker is an open-source containerization platform. Volumes are 
a mechanism for persisting data generated by Docker containers.
In this post, we will explore Docker volumes and their use cases.
markdownmarkdown
<!-- ✅ Problem-first opening that hooks the reader -->
# Understanding Docker Volumes
 
Last Tuesday, our staging environment lost three days of test data 
because someone ran `docker-compose down -v` without realizing 
the `-v` flag deletes volumes. This post covers the volume 
patterns that prevent data loss and the gotchas that cause it.

El enfoque de empezar por el problema funciona porque crea un vacío de conocimiento. El lector se pregunta de inmediato: ¿cómo evito eso? Esa curiosidad lo lleva a seguir leyendo el resto del post.

Estructurar para el escaneo rápido

Los lectores técnicos escanean antes de leer. Saltan a los encabezados, buscan bloques de código y deciden en segundos si el post responde su pregunta. Tu estructura debe favorecer ese comportamiento.

tstypescript
// Think of your post structure like a well-designed API
 
// ❌ Flat structure: hard to scan
interface BadPostStructure {
  title: string;
  content: string; // One giant block of text
}
 
// ✅ Scannable structure: readers find what they need
interface GoodPostStructure {
  title: string;           // Clear, specific, searchable
  hook: string;            // 2-3 sentences with the core problem
  sections: {
    heading: string;       // Describes the takeaway, not the topic
    keyPoint: string;      // First paragraph answers "why care?"
    codeExample: string;   // Shows, doesn't just tell
    explanation: string;   // Connects code to concept
  }[];
  conclusion: string;      // Actionable next steps
}

Cada sección debe aportar valor por sí sola. Un lector que salta directo a la sección 4 debería encontrar algo útil sin necesidad de leer las secciones 1 a 3. Así es, de hecho, como la mayoría de la gente consume contenido técnico.

Ejemplos de código que enseñan

Los bloques de código son la parte más leída de cualquier post técnico. No basta con que sean sintácticamente correctos: también deben ser pedagógicamente efectivos.

tstypescript
// ❌ Code example that assumes too much context
const result = await prisma.user.findMany({
  where: { role: { in: roles } },
  include: { posts: { where: { published: true } } },
  orderBy: { createdAt: "desc" },
  take: limit,
  skip: offset,
});
tstypescript
// ✅ Code example with progressive disclosure
// Step 1: Basic query - find users by role
const users = await prisma.user.findMany({
  where: {
    role: { in: ["admin", "editor"] },
  },
});
 
// Step 2: Include related data (only published posts)
const usersWithPosts = await prisma.user.findMany({
  where: {
    role: { in: ["admin", "editor"] },
  },
  include: {
    posts: {
      where: { published: true },  // Filter at relation level
    },
  },
});
 
// Step 3: Add pagination and sorting
const paginatedUsers = await prisma.user.findMany({
  where: {
    role: { in: ["admin", "editor"] },
  },
  include: {
    posts: {
      where: { published: true },
    },
  },
  orderBy: { createdAt: "desc" },  // Newest first
  take: 20,                         // Page size
  skip: 0,                          // Offset for pagination
});

La divulgación progresiva permite que el lector siga tu razonamiento paso a paso. Cada paso se construye sobre el anterior, y quien ya entendió el paso 1 puede saltar directo al paso 3 sin perderse.

Mostrar primero la forma incorrecta

Las comparaciones de antes/después son la herramienta didáctica más efectiva en la escritura técnica. El ejemplo "incorrecto" crea un punto de referencia que hace que el ejemplo "correcto" resulte inmediatamente claro.

tstypescript
// Structure your comparisons for maximum contrast
 
interface CodeComparison {
  context: string;        // What situation triggers this pattern?
  bad: {
    code: string;
    whyItsBad: string;    // Name the specific problem
  };
  good: {
    code: string;
    whyItsBetter: string; // Name the specific improvement
  };
  nuance?: string;        // When might the "bad" way be acceptable?
}
 
// The nuance field is crucial. Absolutism kills credibility.
// "Always use X" is less trustworthy than
// "Use X when Y, but Z might be better for W"

El campo nuance es lo que distingue la buena escritura técnica de la mediocre. Los lectores con experiencia saben que todo patrón implica compromisos. Reconocerlo genera confianza.

SEO sin sacrificar la calidad

Los buscadores generan la mayor parte del tráfico hacia los posts técnicos. Un conocimiento básico de SEO multiplica tu alcance sin comprometer la calidad del contenido.

tstypescript
interface PostSEO {
  title: string;            // Include primary keyword naturally
  metaDescription: string;  // 150-160 chars, promise specific value
  headings: string[];       // Use questions readers actually search
  slug: string;             // Descriptive, hyphenated, permanent
}
 
// ❌ SEO-first title that reads like spam
const bad: PostSEO = {
  title: "Docker Volumes Tutorial 2023 Best Guide Complete",
  metaDescription: "Learn Docker volumes in this complete guide...",
  headings: ["Docker Volumes", "More Docker Volumes", "Docker"],
  slug: "docker-volumes-tutorial-2023",
};
 
// ✅ Reader-first title with natural keyword inclusion
const good: PostSEO = {
  title: "Docker Volume Patterns That Prevent Data Loss",
  metaDescription:
    "Three volume mount strategies that protect stateful " +
    "containers from accidental data deletion, with tested " +
    "docker-compose configurations.",
  headings: [
    "Why Named Volumes Beat Bind Mounts for Production Data",
    "Surviving docker-compose down Without Data Loss",
    "Backup Strategies for Docker Volumes",
    "When Bind Mounts Are Still the Right Choice",
  ],
  slug: "docker-volume-patterns-prevent-data-loss",
};

Los encabezados que responden preguntas concretas posicionan mejor que las etiquetas de tema genéricas. "Why Named Volumes Beat Bind Mounts" apunta a una búsqueda real que "Volume Types" jamás lograría captar.

Editar con la impaciencia del lector en mente

Tu primer borrador te sirve a ti. Tu versión final sirve al lector. El proceso de edición cierra esa brecha eliminando todo lo que no ayude directamente al lector.

tstypescript
interface EditingPass {
  name: string;
  focus: string;
  action: string;
}
 
const editingProcess: EditingPass[] = [
  {
    name: "Structure pass",
    focus: "Can someone scan headings and get the gist?",
    action: "Rewrite headings as takeaways, not topics",
  },
  {
    name: "Fluff pass",
    focus: "Does every sentence add information?",
    action: "Delete sentences that restate what code shows",
  },
  {
    name: "Code pass",
    focus: "Can code blocks run as-is?",
    action: "Test every snippet, add missing imports",
  },
  {
    name: "Accuracy pass",
    focus: "Would an expert find errors?",
    action: "Verify claims, link to primary sources",
  },
  {
    name: "Opening pass",
    focus: "Would I keep reading after paragraph one?",
    action: "Rewrite the opening after finishing the post",
  },
];

La pasada final sobre la apertura va al final porque tu comprensión del post cambia mientras lo escribes. La apertura que planeaste antes de escribir casi nunca es la mejor apertura para el post que terminaste escribiendo.

Construir un ritmo de publicación constante

La constancia importa más que la frecuencia. Un post excelente al mes construye una audiencia más fiel que cuatro posts mediocres a la semana.

tstypescript
interface PublishingStrategy {
  frequency: string;
  qualityBar: string[];
  distributionChannels: string[];
  feedbackLoop: string;
}
 
const strategy: PublishingStrategy = {
  frequency: "Biweekly, same day and time",
  qualityBar: [
    "Would I share this if someone else wrote it?",
    "Does it contain at least one idea I haven't seen elsewhere?",
    "Can readers apply what they learned within a day?",
    "Have I tested every code example?",
  ],
  distributionChannels: [
    "Personal blog (canonical URL)",
    "Dev.to or Hashnode (cross-post with canonical)",
    "Twitter thread summarizing key points",
    "Relevant Discord/Slack communities",
  ],
  feedbackLoop:
    "Track which posts get bookmarked, not just clicked. " +
    "Bookmarks signal genuine value; clicks signal curiosity.",
};

Conclusiones clave

El blogging técnico es una inversión que se acumula a lo largo de tu carrera. Cada post refuerza tu reputación, afina tu comprensión y crea un recurso permanente que puede ayudar a otros desarrolladores durante años. Los posts que realmente conectan comparten rasgos comunes: parten de un problema real, muestran código que de verdad funciona, reconocen sus compromisos con honestidad y respetan el tiempo del lector eliminando cada palabra que no aporte al objetivo de aprendizaje.

No esperes a convertirte en un experto. Los mejores posts técnicos vienen de la persona que acaba de resolver algo, porque todavía recuerda qué fue lo confuso. Escribe el post que te hubiera gustado encontrar cuando estabas atascado, prueba tus ejemplos de código y publícalo.

Wilfredo Rujel

Wilfredo Rujel

Ingeniero de Software Full Stack

Compartir esta publicaciónX