Cuando empecé a escribir publicaciones técnicas, pensaba que necesitaba explicar algoritmos complejos o construir algo revolucionario. Estaba equivocado.
Las mejores publicaciones técnicas no se tratan de presumir—se tratan de mostrar tu pensamiento. Los reclutadores y gerentes de contratación quieren ver:
Cómo abordas los problemas
Cómo aprendes de los fracasos
Cómo comunicas conceptos técnicos
Que puedes terminar las cosas
Esta publicación es una plantilla para escribir contenido técnico sólido, basada en lo que he aprendido de escribir, leer publicaciones de otros y recibir retroalimentación.
“Estaba construyendo una función de carrito de compras y necesitaba compartir el estado del carrito entre múltiples componentes. El prop drilling se estaba complicando, así que necesitaba una mejor solución de gestión de estado.”
## El problema
Estaba trabajando en [proyecto/funcionalidad] cuando encontré [problema específico].
El desafío era [describe la restricción o dificultad].
Necesitaba [lo que intentabas lograr].
## Contexto
**Proyecto:** Aplicación web de finanzas personales
**Stack tecnológico:** React, Node.js, PostgreSQL
**Mi experiencia:** Cómodo con lo básico de React, primera vez usando una base de datos
**Restricción:** Necesitaba desplegar gratis (presupuesto de estudiante)
Esto ayuda a los lectores a entender tus decisiones y si tu enfoque se adapta a su situación.
Aquí es donde muchas publicaciones se quedan cortas. No solo muestres la solución final—muestra lo que intentaste primero. Esto es increíblemente valioso porque:
Muestra tu proceso de pensamiento
Ayuda a otros a evitar los mismos callejones sin salida
Demuestra persistencia
Es más realista que “lo construí perfectamente a la primera”
## Intento 1: Estado local
Mi primer enfoque fue usar `useState` de React en el componente padre:
```javascript
function App() {
const [cart, setCart] = useState([]);
return (
<div>
<ProductListcart={cart}setCart={setCart} />
<CartSummarycart={cart} />
<Checkoutcart={cart}setCart={setCart} />
</div>
);
}
Qué pasó: Esto funcionó inicialmente, pero a medida que agregué más funcionalidades, estaba pasando props a través de 3-4 niveles de componentes. El código se volvió difícil de mantener.
Por qué falló: El prop drilling hizo que el árbol de componentes fuera rígido. Agregar una nueva función que necesitaba acceso al carrito significaba actualizar múltiples componentes.
Qué pasó: [Describe el resultado]
Por qué no funcionó: [Tu análisis de por qué este enfoque falló]
Lo que aprendí: [Conclusión clave de este fracaso]
Qué pasó: Esto eliminó el prop drilling, pero noté problemas de rendimiento. Cada actualización del carrito re-renderizaba todos los componentes que consumían el contexto.
Por qué no funcionó: Context API re-renderiza todos los consumidores cuando cualquier valor cambia. Con más de 50 productos en la página, agregar un artículo al carrito causaba re-renderizados innecesarios.
Lo que aprendí: Context API es genial para datos que cambian poco frecuentemente (tema, autenticación), pero no es ideal para estado que se actualiza frecuentemente como un carrito de compras.
Por qué esto funciona:
Los componentes solo se re-renderizan cuando sus datos específicos cambian
La lógica de estado está centralizada y es testeable
Redux DevTools me permite depurar cambios de estado fácilmente
Compromisos:
Más código boilerplate que Context API
Curva de aprendizaje más pronunciada
Puede ser excesivo para apps muy simples
Para mi caso de uso (app en crecimiento con estado complejo), estos compromisos valieron la pena.
Context API: 50ms por actualización del carrito (50 re-renderizados de componentes)
Redux: 5ms por actualización del carrito (2 re-renderizados de componentes)
## Conclusiones clave
1.**Empieza simple:** Debería haber mantenido el estado local más tiempo. Redux era excesivo hasta que tuve problemas reales de rendimiento.
2.**Mide antes de optimizar:** Asumí que Context API era lento antes de medirlo. Siempre haz profiling primero.
3.**Lee la documentación a fondo:** La documentación de Redux Toolkit tenía ejemplos que resolvían exactamente mi caso de uso. Perdí tiempo intentando resolverlo por mi cuenta primero.
4.**Los compromisos están bien:** Ninguna solución es perfecta. Entender y aceptar compromisos es parte de la ingeniería.
## Si hiciera esto otra vez
- Empezar con estado local
- Mover a Context API cuando el prop drilling se vuelva doloroso
- Solo agregar Redux cuando tenga problemas de rendimiento medidos
- Dedicar más tiempo a leer documentación antes de programar
Las publicaciones técnicas sólidas no requieren conocimiento de nivel experto. Requieren:
Honestidad sobre tu proceso
Explicación clara de tu pensamiento
Disposición para mostrar fracasos
Ejemplos concretos y código
Tus proyectos “pequeños” y problemas “simples” son valiosos para escribir sobre ellos. Alguien más está enfrentando el mismo problema ahora mismo, y tu publicación podría ayudarle.
Empieza a escribir. Tu yo del futuro (y tus futuros lectores) te lo agradecerán.