Saltar al contenido
Threads

Hilos que empezaron como tweets y terminaron siendo ensayos.

Conversaciones técnicas con opinion honesta. Análisis de arquitectura, herramientas, carreras y todo lo que aprendemos construyendo software.

Thread #1Frontend6 tweets

Por qué dejé de usar React Query (y cuándo deberías hacerlo tú también)

Un thread honesto sobre los límites de React Query y cuándo SWR o TanStack Query no son la respuesta.

Reactdata-fetchingarquitectura

Por qué escribí este thread

Los threads técnicos con opinión personal fuerte son los que más engagement generan. Midudev usa este patrón constantemente: plantear una posición controversial pero fundamentada.

1
softw.engineer@softwengineer

Dejé de usar React Query en mi último proyecto después de 3 años usándolo a diario. No porque sea mala librería. Es excelente. Pero el equipo se estaba complicando por razones que nada tienen que ver con el fetching de datos. Te explico qué pasó 🧵

2
softw.engineer@softwengineer

El problema: React Query te resuelve el fetching + caching + sincronización. Pero en apps con mucho estado derivado, acabas con una mezcla de useQuery + useReducer + useMemo que es difícil de razonar. No es culpa de RQ. Es que el patrón no escalaba.

3
softw.engineer@softwengineer

¿Cuándo usarlo sin dudar? • APIs REST con muchos endpoints • Datos que cambian con frecuencia • Equipos que recién arrancan con React • SSR que necesita cache compartida Ahí React Query brilla. Es la mejor herramienta para ese job.

4
softw.engineer@softwengineer

¿Cuándo reconsiderar? • Estado local complejo que no viene del server • Mucha lógica de derivación (no de fetching)• GraphQL (mejor usar Apollo/urql que ya cachean) • Apps pequeñas donde el overhead de RQ no se justifica

5
softw.engineer@softwengineer

En mi caso, migré a SWR + Zustand. SWR para lo simple (fetching GET), Zustand para el estado de UI. El bundle bajó 40KB. El código es más legible. El equipo lo entiende más rápido. No es mejor ni peor. Es lo que funcionó para este proyecto.

6
softw.engineer@softwengineer

Moraleja: la mejor arquitectura no es la que más features tiene. Es la que tu equipo puede mantener el lunes a las 9am cuando algo se rompe. Eso es engineering real.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #2TypeScript9 tweets

7 trucos de TypeScript que ojalá conocieras antes

Patrones avanzados de TypeScript que reducen bugs y hacen tu código más expresivo.

TypeScripttipsproductividad

Por qué escribí este thread

El formato lista numerada con tips accionables es uno de los formatos más guardados/bookmarking en X. Es contenido evergreen que genera bookmarks.

1
softw.engineer@softwengineer

7 trucos de TypeScript que ojalá conocieras antes (probablemente llevas años programando sin ellos) Te van a ahorrar horas de debugging 🧵

2
softw.engineer@softwengineer

1️⃣ `satisfies` operator const config = { api: '/api', timeout: 5000 } as const satisfies Config TypeScript verifica que tu objeto cumple el tipo PERO preserva los literales. Antes tenías que elegir entre `as Config` (perdías info) o nada (sin validación). Ahora tienes ambas.

3
softw.engineer@softwengineer

2️⃣ Type predicates para guards reutilizables function isError(x: unknown): x is Error { return x instanceof Error } El `x is Error` le dice al compilador que dentro del if, x es Error. Sin casts manuales. Sin `any`. Puro type safety.

4
softw.engineer@softwengineer

3️⃣ Utility type: Omit por valor, no por key type StringKeys<T> = { [K in keyof T as T[K] extends string ? K : never]: T[K] } Extrae solo las keys cuyos valores son strings. Útil para formularios dinámicos.

5
softw.engineer@softwengineer

4️⃣ `const` type parameters function first<T const>(arr: readonly T[]): T | undefined { return arr[0] } El `const` previene que TypeScript ensanche el tipo. Si pasas `['a', 'b']`, T es `'a' | 'b'`, no `string`.

6
softw.engineer@softwengineer

5️⃣ Discriminated unions con `never` type Result = | { status: 'ok'; data: string } | { status: 'error'; error: Error } | { status: 'loading' } En un switch con exhaustive check, TypeScript te avisa si olvidaste un caso. Tu código es literalmente imposible de romper.

7
softw.engineer@softwengineer

6️⃣ Template literal types type Endpoint = `/${string}` function fetch<T>(url: Endpoint): Promise<T> TypeScript valida que el string empiece con /. Tiny pero poderoso.

8
softw.engineer@softwengineer

7️⃣ `in` operator como type guard function hasProp<K extends string>(x: object, k: K): x is Record<K, unknown> { return k in x } Type narrowing dinámico. Útil con APIs que devuelven objetos con props opcionales.

9
softw.engineer@softwengineer

Bonus: si usas TypeScript todos los días y no conocías `satisfies`, estás escribiendo código 30% más frágil de lo necesario. La diferencia entre un senior TS y uno mid no es que sepa más cosas. Es que usa las herramientas correctas para el contexto correcto.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #3DevOps9 tweets

Docker sin miedo: del caos al deploy en 7 tweets

Una guía directa para entender Docker sin la teoría innecesaria que abunda en los tutoriales.

DockerDevOpsdeploytutorial

Por qué escribí este thread

Docker tiene una curva de aprendizaje que intimida. Un thread que lo simplifica paso a paso, sin tecnicismos, tiene alto valor educativo y de retweet.

1
softw.engineer@softwengineer

Docker sin miedo: del caos al deploy en 7 tweets Sin tutoriales de 40 minutos. Sin teoría que no vas a usar. Solo lo que necesitas para empezar a correr tu app 🧵

2
softw.engineer@softwengineer

1. ¿Qué es Docker realmente? Es una caja sellada con tu app + todo lo que necesita para funcionar. Tu app funciona en tu máquina? Funciona en producción. Fin del 'works on my machine'.

3
softw.engineer@softwengineer

2. Los 3 comandos que necesitas docker build -t miapp . # construye la caja docker run -p 3000:3000 miapp # arranca la caja docker ps # ve qué cajas están corriendo Eso es el 80% de lo que vas a usar día a día.

4
softw.engineer@softwengineer

3. El Dockerfile mínimo viable FROM node:20-slim WORKDIR /app COPY package*.json ./ RUN npm ci --production COPY . . CMD ["node", "server.js"] 7 líneas. Tu app empaquetada. No necesitas nada más para empezar.

5
softw.engineer@softwengineer

4. Docker Compose para no volverte loco version: '3' services: web: build: . ports: ['3000:3000'] db: image: postgres:16 Un archivo. Dos servicios. `docker compose up` y todo funciona junto.

6
softw.engineer@softwengineer

5. El truco del .dockerignore node_modules .git .env *.md Si no pones .dockerignore, Docker copia todo tu node_modules al contexto de build. Cada build tarda 30 segundos más. Pequeño cambio, gran impacto.

7
softw.engineer@softwengineer

6. Multi-stage builds para imágenes pequeñas FROM node:20 AS build COPY . . RUN npm ci && npm run build FROM node:20-slim COPY --from=build /app/dist ./dist CMD ["node", "dist/server.js"] Tu imagen pasa de 1.2GB a 180MB. Mismo resultado.

8
softw.engineer@softwengineer

7. La regla de oro No aprendas Docker memorizando comandos. Aprende Docker haciendo deploy de algo real. Toma cualquier app que tengas, hazle un Dockerfile, súbelo a Fly.io o Railway. La teoría se olvida. La práctica se queda.

9
softw.engineer@softwengineer

Docker no es complicado. Es intimidante porque hay demasiado ruido alrededor. La realidad: necesitas ~7 conceptos y 5 comandos para el 90% de los casos. El resto lo aprendes cuando lo necesitas.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #4CSS9 tweets

CSS que no conocías y debería estar usando en 2026

Funciones modernas de CSS que eliminan la necesidad de JavaScript y librerías enteras.

CSSfrontendmoderntips

Por qué escribí este thread

El contenido CSS siempre tiene engagement alto entre frontend devs. El ángulo de 'reemplazar JS con CSS puro' es particularmente viral.

1
softw.engineer@softwengineer

CSS que probablemente no conocías y deberías estar usando en 2026 Propiedades que eliminan librerías enteras de JavaScript 🧵

2
softw.engineer@softwengineer

1️⃣ `:has()` — el selector del padre .card:has(img) { padding: 0; } Estiliza un elemento según sus hijos. Antes necesitabas JS. Ahora es CSS puro. Soporte global: 92%+. Úsalo.

3
softw.engineer@softwengineer

2️⃣ `container queries` .card-container { container-type: inline-size; } @container (min-width: 400px) { .card { display: grid; } } Tus componentes responden a su contenedor, no al viewport. Responsive design de verdad.

4
softw.engineer@softwengineer

3️⃣ `text-wrap: balance` h1 { text-wrap: balance; } Balancea el texto en múltiples líneas automáticamente. Tus titulares se ven como un diseñador los pensó. Sin JS.

5
softw.engineer@softwengineer

4️⃣ CSS nesting nativo .card { padding: 1rem; & .title { font-size: 1.5rem; } &:hover { background: #f5f5f5; } } Adiós Sass. El nesting es nativo en todos los browsers modernos.

6
softw.engineer@softwengineer

5️⃣ `subgrid` .grid { display: grid; grid-template-columns: 1fr 2fr; } .item { display: grid; grid-template-columns: subgrid; } Los hijos pueden heredar el grid del padre. Grids perfectos sin math.

7
softw.engineer@softwengineer

6️⃣ `accent-color` input[type=checkbox] { accent-color: #3E45EB; } Colorea checkboxes, radios y range sliders nativos. Sin CSS hack. Sin librería.

8
softw.engineer@softwengineer

7️⃣ `scroll-snap` .gallery { scroll-snap-type: x mandatory; } .item { scroll-snap-align: start; } Carruseles con scroll snap nativo. Sin JS. Sin librería. Touch-friendly por defecto.

9
softw.engineer@softwengineer

El CSS de 2026 hace cosas que en 2020 requerían React, una librería de animación y 200 líneas de JS. Si sigues usando jQuery o JS para cosas que CSS ya resuelve, estás escribiendo código innecesario.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #5Backend8 tweets

PostgreSQL vs MongoDB en 2026: la respuesta honesta

Un análisis sin fanboyism sobre cuándo elegir cada base de datos, con datos reales.

PostgreSQLMongoDBbases-de-datosarquitectura

Por qué escribí este thread

Los debates de bases de datos generan discusión y engagement. Un thread equilibrado con conclusión clara tiene alto valor de bookmark.

1
softw.engineer@softwengineer

PostgreSQL vs MongoDB en 2026: la respuesta honesta (sin fanboyism) He usado ambos en producción. Esto es lo que aprendí 🧵

2
softw.engineer@softwengineer

El mito: 'MongoDB es mejor para datos no estructurados' La realidad: PostgreSQL tiene JSONB desde hace 10 años. Puedes hacer queries GIN indexadas sobre JSON, validar schemas, y hacer joins con tablas relacionales. Postgres es mejor MongoDB que MongoDB.

3
softw.engineer@softwengineer

¿Cuándo MongoDB tiene sentido REAL? • Eventos con schema que cambia constantemente • IoT con millones de writes/segundo • Documentos jerárquicos muy profundos (>3 niveles de nesting) • Cuando tu equipo ya lo conoce bien Fuera de eso, Postgres probablemente es mejor opción.

4
softw.engineer@softwengineer

Cosas que PostgreSQL hace mejor de lo que la gente cree: ✅ JSON (JSONB + GIN indexes) ✅ Full-text search (mejor que Mongo) ✅ Arrays y operaciones nativas ✅ Geospatial (PostGIS es bestial) ✅ Pub/Sub (LISTEN/NOTIFY) ✅ Time series (con TimescaleDB)

5
softw.engineer@softwengineer

Cosas que MongoDB hace mejor: ✅ Horizontal scaling (sharding es más simple) ✅ Schema flexibility real (sin migrations) ✅ Aggregation pipeline (más expresivo que SQL a veces) ✅ Replica sets más fáciles de configurar No es que Mongo sea malo. Es que la mayoría de apps no necesitan lo que Mongo ofrece.

6
softw.engineer@softwengineer

Mi framework de decisión: 1. ¿Necesitas joins complejos? → Postgres 2. ¿Tienes schema estable? → Postgres 3. ¿Tu equipo conoce SQL? → Postgres 4. ¿Necesitas escalar a petabytes horizontalmente? → Considera Mongo 5. ¿No estás seguro? → Postgres El 80% de las apps caen en 1-5.

7
softw.engineer@softwengineer

Un dato que sorprende: el stack más popular en 2026 para startups no es Mongo+Node. Es Postgres+Prisma+Next.js. La gente votó con sus repos. Y Postgres ganó.

8
softw.engineer@softwengineer

Moraleja: no elijas tu base de datos por lo que leíste en un blog de 2015. El landscape cambió. PostgreSQL de 2026 es un motor diferente al de 2018. Si no lo has mirado últimamente, míralo.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #6Carreras8 tweets

Trabajo remoto vs presencial: lo que nadie te dice

Una reflexión honesta sobre la realidad del trabajo remoto basada en experiencia real.

remotetrabajocarrerasproductividad

Por qué escribí este thread

Este es un tema candente que genera debate. Los threads con perspectiva personal y experiencia real son los que más engagement generan.

1
softw.engineer@softwengineer

Trabajo remoto vs presencial: lo que nadie te dice después de 3 años haciéndolo No es lo que lees en LinkedIn 🧵

2
softw.engineer@softwengineer

Mito #1: 'El remoto es más productivo' La verdad: depende totalmente de ti. Si te distraes fácil, la oficina es mejor. Si tienes disciplina, el remoto te da horas que no sabías que tenías. No hay respuesta universal. Hay que ser honesto con uno mismo.

3
softw.engineer@softwengineer

Mito #2: 'El remoto aísla' Parcialmente cierto. Pero la oficina también aísla de forma diferente: small talk obligatorio, reuniones innecesarias, interrupciones constantes. La conexión real requiere intención, sin importar dónde estés.

4
softw.engineer@softwengineer

Lo que SÍ cambia con el remoto: ✅ Recuperas 1-3 horas de commute diarias ✅ Controlas tu ambiente (ruido, temperatura, comida) ✅ Puedes ver a tu familia al mediodía ❌ La línea trabajo/vida se difumina ❌ Tienes que sobrecomunicar todo ❌ El onboarding es más difícil

5
softw.engineer@softwengineer

Lo que la gente no menciona: el remoto recompensa a los proactive y castiga a los que esperan instrucciones. En la oficina, alguien te dice qué hacer. En remoto, tienes que averiguarlo. Si no eres autónomo, vas a sufrir.

6
softw.engineer@softwengineer

El mayor error que vi en equipos remotos: tratar de replicar la oficina online. Reuniones de 1 hora que pudieron ser un mensaje. Stand-ups diarios que pudieron ser async. Calendarios llenos que no dejan tiempo para pensar. El remoto no es la oficina en Zoom. Es otra cosa.

7
softw.engineer@softwengineer

Si tuviera que dar un consejo a alguien empezando remoto: 1. Documenta todo (si no está escrito, no existe) 2. Sobrcomunica tu progreso 3. Crea rutinas de cierre de jornada 4. Sal de casa aunque sea 20 minutos 5. Invierte en tu setup (silla, monitor, audio) Lo simple funciona.

8
softw.engineer@softwengineer

El trabajo remoto no es mejor ni peor que el presencial. Es diferente. Y como toda herramienta, funciona mejor cuando entiendes sus trade-offs y diseñas tu vida alrededor de ellos. No hay modelo perfecto. Hay el modelo que funciona para ti.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #7Frontend9 tweets

Next.js App Router: lo que aprendí después de migrar 3 apps

Lecciones reales de migración de Pages Router a App Router, con los errores que cometí.

Next.jsReactmigraciónSSR

Por qué escribí este thread

Next.js App Router es uno de los temas más discutidos. Las experiencias de migración reales con errores y soluciones son muy valoradas.

1
softw.engineer@softwengineer

Migré 3 apps de Pages Router a App Router en Next.js. Esto es lo que aprendí (y los errores que cometí para que tú no los cometas) 🧵

2
softw.engineer@softwengineer

Lección 1: No migres todo de golpe Migrar Pages → App Router no es un refactor. Es una re-arquitectura. Server Components, data fetching, caching, metadata. Todo cambia. Migra una página a la vez. Aprende. Luego la siguiente.

3
softw.engineer@softwengineer

Lección 2: 'use client' es tu mejor amigo y peor enemigo Es fácil poner 'use client' en todo para que funcione. Pero eso mata el punto de Server Components. Meta: mínimo 70% de tus componentes deberían ser Server Components. Si tienes más de 30% client, algo estás haciendo mal.

4
softw.engineer@softwengineer

Lección 3: El caching te va a sorprender App Router cachea agresivamente. fetch() se cachea por default. Las navigaciones se cachean. Esto es increíble para performance. Pero durante el desarrollo te va a confundir cuando los datos no se actualicen. export const dynamic = 'force-dynamic' es tu救救命稻草.

5
softw.engineer@softwengineer

Lección 4: Layouts vs Templates Layouts persisten entre navegaciones (state se mantiene). Templates se re-renderizan en cada navegación (state se resetea). La mayoría usa Layouts siempre. Pero a veces quieres Templates para reset de estado.

6
softw.engineer@softwengineer

Lección 5: Error boundaries son obligatorios En Pages Router, un error rompía la página. En App Router, un error en un Server Component puede romper toda la app. Agrega error.tsx en cada route segment. No es opcional.

7
softw.engineer@softwengineer

Lección 6: Loading UI cambia la experiencia loading.tsx no es decorativo. Es funcional. Muestra un skeleton inmediatamente mientras el Server Component carga datos. La app se siente instantánea.

8
softw.engineer@softwengineer

Lección 7: Metadata API es lo mejor del App Router Antes: next-seo + configuración manual. Ahora: export const metadata. Tipado. Autocompletado. SEO perfecto. Solo esto ya justifica la migración.

9
softw.engineer@softwengineer

¿Vale la pena migrar? Si tu app funciona bien en Pages Router: NO migres ahora. Si estás empezando un proyecto nuevo: usa App Router. La migración es dolorosa. Empezar nuevo es natural. Next.js 15+ está optimizado para App Router.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #8Carreras8 tweets

Síndrome del impostor en tech: lo que hice al respecto

Una conversación honesta sobre uno de los temas más tabú en la industria tech.

carrerasmentalidadimpostordesarrollo

Por qué escribí este thread

Los threads personales y vulnerables sobre experiencia real en la industria generan el engagement más profundo y compartible. Midudev usa este tipo de contenido frecuentemente.

1
softw.engineer@softwengineer

El síndrome del impostor en tech es real. Y nadie habla de él abiertamente. Llevo años en esto y todavía me pasa. Esto es lo que aprendí a hacer al respecto 🧵

2
softw.engineer@softwengineer

Primero: no es un 'síndrome'. Es la respuesta normal de un cerebro que aprende cosas nuevas. Si nunca te sientes impostor, probablemente no estás creciendo. El discomfort es señal de que estás en el borde de tu capacidad. Eso es bueno.

3
softw.engineer@softwengineer

El problema no es sentirte impostor. El problema es paralizarte por ello. La diferencia entre un senior y un junior no es que el senior no dude. Es que el senior duda y hace el deploy igual.

4
softw.engineer@softwengineer

Cosas que me ayudaron: 1. Documentar lo que sé (escribir me obliga a estructurar) 2. Enseñar lo que aprendo (si puedes explicarlo, lo sabes) 3. Trackear logros concretos (no confíes en tu memoria emocional) 4. Hablar con otros devs (todos lo sienten, nadie lo dice)

5
softw.engineer@softwengineer

La trampa del 'todo el mundo sabe más que yo': Ves a alguien hablar fluidamente de Kubernetes y piensas que sabe todo. La realidad: sabe Kubernetes. No sabe CSS. No sabe bases de datos. No sabe de lo que tú sabes. Comparas tu interior con el exterior de otros.

6
softw.engineer@softwengineer

El secreto que nadie te dice: la mayoría de seniors googlean todo. No memorizan. Entienden patrones. La diferencia entre 'saber' y 'no saber' no es cuánto tienes en la cabeza. Es si puedes encontrar la respuesta rápido.

7
softw.engineer@softwengineer

Si te sirve: mi checklist mental cuando siento que soy un fraude ✓ ¿Resolví un problema esta semana? ✓ ¿Alguien aprendió algo de mí? ✓ ¿Mi código está en producción? Si respondes sí a cualquiera, no eres fraude. Punto.

8
softw.engineer@softwengineer

El síndrome del impostor no se cura. Se maneja. Y la forma de manejarlo no es con frases motivacionales. Es con evidencia acumulada de que sabes lo que haces. Construye cosas. Deploy. Repite. La confianza sigue a la acción.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #9IA8 tweets

IA para programar: la realidad detrás del hype

Una evaluación honesta de qué herramientas de IA realmente mejoran tu productividad y cuáles son ruido.

IAcodingproductividadherramientas

Por qué escribí este thread

El tema de IA y coding es extremadamente actual. Un thread que separa el hype de la realidad, con experiencia práctica, genera mucho engagement.

1
softw.engineer@softwengineer

Uso IA para programar todos los días desde hace 2 años. Esto es lo que realmente funciona (y lo que es puro marketing) 🧵

2
softw.engineer@softwengineer

Lo que SÍ funciona: ✅ Autocompletado de código (Copilot/Cursor) ✅ Generar tests unitarios ✅ Explicar código legacy ✅ Debugging (pegar stack trace) ✅ Boilerplate y scaffolding Estos casos te ahorran horas reales. Medible.

3
softw.engineer@softwengineer

Lo que NO funciona (todavía): ❌ Arquitectura de sistemas complejos ❌ Debugging de race conditions ❌ Optimización de performance ❌ Decisiones de diseño de API ❌ Cualquier cosa que requiera contexto del negocio La IA no sabe por qué tu código existe. Solo sabe cómo se ve.

4
softw.engineer@softwengineer

El error más común: delegar demasiado. Si le pides a la IA que escriba un feature completo sin entender qué genera, vas a tener código que 'funciona' pero que no puedes mantener. La IA es un acelerador, no un reemplazo. Si no entiendes el output, no lo deploy.

5
softw.engineer@softwengineer

Mi workflow actual con Cursor + Claude: 1. Escribo el esqueleto de la función (yo) 2. Le pido que complete los detalles (IA) 3. Reviso cada línea (yo) 4. Le pido tests (IA) 5. Corro y ajusto (yo) El loop humano-IA es donde está la productividad real. No el 'genera todo'.

6
softw.engineer@softwengineer

Un dato: los developers que más productividad ganan con IA no son los juniors. Son los seniors. ¿Por qué? Porque saben qué pedir, cómo evaluar la respuesta, y dónde están los límites. La IA amplifica lo que ya sabes. No reemplaza lo que no sabes.

7
softw.engineer@softwengineer

Lo que va a pasar en los próximos 2 años: • Juniors van a necesitar aprender fundamentals más rápido • El valor de 'saber arquitectura' va a subir • El valor de 'saber syntax' va a bajar • Code review humano se vuelve más importante, no menos Adáptate o quedate atrás.

8
softw.engineer@softwengineer

La IA no va a reemplazar developers. Pero developers que usan IA van a reemplazar a los que no. La pregunta no es '¿debería usar IA?'. Es '¿estoy usando la IA de la forma correcta?'. Si aún no la integraste a tu workflow, estás perdiendo tiempo.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido

Thread #10Carreras8 tweets

Mi side project falló. Esto es lo que aprendí.

Una historia real sobre construir, lanzar y fallar con un proyecto personal, con lecciones accionables.

side-projectstartupleccionesindie

Por qué escribí este thread

Los threads de historias reales de éxito/fracaso generan engagement emocional profundo. midudev usa frecuentemente este patrón de vulnerabilidad + lección aprendida.

1
softw.engineer@softwengineer

Mi side project falló después de 4 meses de trabajo. Esto es lo que aprendí (para que tu próximo proyecto no fracase igual) Hilo honesto 🧵

2
softw.engineer@softwengineer

El proyecto: una app de gestión de gastos para freelancers. Tecnología impecable. Next.js + Prisma + Postgres. Diseño pulido. Deploy en Vercel. 0 usuarios después del lanzamiento. Cero. Nadie la quiso.

3
softw.engineer@softwengineer

Error #1: Construí para mí mismo, no para el mercado Yo era el usuario. Yo tenía el problema. Pero asumí que otros lo tenían igual. Nunca validé con personas reales. Construí 4 meses sobre una suposición no confirmada.

4
softw.engineer@softwengineer

Error #2: Perfeccionismo antes de lanzar Puse demasiado tiempo en animaciones, dark mode, integraciones que nadie pidió. Debí lanzar una versión fea pero funcional en 2 semanas. Obtener feedback. Iterar. El código perfecto que nadie usa no vale nada.

5
softw.engineer@softwengineer

Error #3: No tener canal de distribución Construí la app. ¿Y luego qué? No tenía audiencia. No había hecho content. No tenía lista de espera. Construir sin audiencia es como abrir un restaurante en el desierto.

6
softw.engineer@softwengineer

Error #4: No cobrar desde el día 1 La hice gratis para 'validar'. Nadie la usó gratis. ¿Por qué iban a pagar? Si tu producto es bueno, alguien paga desde el principio. Si nadie paga, no es tan bueno como crees.

7
softw.engineer@softwengineer

Lo que aprendí para el próximo proyecto: 1. Validar ANTES de construir (landing + lista de espera) 2. Lanzar feo y rápido (2 semanas máximo) 3. Cobrar desde día 1 (validación real = tarjeta de crédito) 4. Construir audiencia mientras construyes producto 5. Iterar con feedback, no con suposiciones

8
softw.engineer@softwengineer

No me arrepiento del fracaso. Aprendí más en esos 4 meses que en 2 años leyendo tutoriales. El fracaso es data. Y la data es lo que te hace mejor para el próximo intento. El mejor momento para empezar tu próximo proyecto es ahora.

¿Qué te pareció esto?

Tu feedback nos ayuda a crear mejor contenido