DEV Community

Cover image for El ratio que nadie te dice: Construir un SaaS es 30% código y 70% todo lo demás
Felipe
Felipe

Posted on

El ratio que nadie te dice: Construir un SaaS es 30% código y 70% todo lo demás

Cuando empecé Semsei, pensé que el desafío era técnico.

El stack. La arquitectura. Los agentes. El deployment.

Nueve años de experiencia resolviendo problemas técnicos. Esto iba a ser pan comido.

Nadie me dijo que construir un SaaS solo es 30% código y 70% todo lo demás.

Lo que realmente ocupa tu tiempo

Ventas (sin track récord)

Conseguir los primeros clientes cuando no tienes referencias es brutal.

# que es vender:
user.purchase(product)

# Lo que realmente es vender:
def primera_venta():
    conversaciones = outreach_frio(100)  # semanas de emails
    demos = filter(conversaciones, interested=True)
    propuestas = generar_para(demos)
    negociacion = loop(propuestas, revisions=3)
    return negociacion.cierre()  # semanas más
Enter fullscreen mode Exit fullscreen mode

La primera venta tomó semanas de conversaciones, propuestas, y una demo que repetí hasta que sonaba natural.

Marketing (desde cero)

Hacer que sepan que existes cuando no tienes presupuesto para ads:

# Stack de marketing cuando no hay presupuesto:
marketing_channels = [
    "linkedin_posts",      # 2-3 horas por post
    "community_building",  # engagement diario
    "outreach_frio",      # 50 mensajes por día
    "collaborations",      # networking que no escala
]

# Tiempo disponible: none (estás construyendo el producto)
Enter fullscreen mode Exit fullscreen mode

Son horas que no aparecen en ningún backlog técnico.

Soporte (porque eres el único equipo)

# Tu sistema de soporte ideal:
ticket_system = sophisticated_zendesk()

# Tu realidad actual:
def soporte():
    while True:
        mensaje = user.slack_message()
        if message.hour > 20 or message.hour < 7:
            respuesta = responder()  # a las 11pm
        if message.urgent:
            resolver_inmediatamente()
Enter fullscreen mode Exit fullscreen mode

El primer cliente que pierdo no fue por mal producto. Fue por mala respuesta.

Admin (lo que nadie warned)

# Lo técnico:
product = build_good_code()

# Lo que realmente necesitas:
checklist = [
    "facturas_clientes",      # no es automático
    "impuestos_trimestrales", # sorpresa!
    "contratos",             # necesitas abogado
    "GDPR_compliance",       # porque EU
    "terminos_servicio",     # Copywriting + Legal
    "politica_privacidad",    # todavía Legal
]
Enter fullscreen mode Exit fullscreen mode

Y las promesas que le haces a los usuarios sin tener infraestructura para cumplirlas.

Mental (lo más difícil)

Mantener la motivación cuando:

  • Nadie te está viendo
  • Los números no crecen
  • Te preguntas si vale la pena
  • El código fácil ya está hecho, y lo que queda es lo duro

Por qué el código es la parte fácil

Suena contraintuitivo. Pero después de años de resolver problemas técnicos complejos:

# Lo que sé hacer bien:
developer_skills = {
    "learn_anything": True,        # siempre puedo aprender
    "pattern_recognition": True,    # resuelvo problemas nuevos con problemas viejos
    "estimate_timelines": True,    # sé cuánto tarda algo
    "pick_technology": True,        # sé qué usar y cuándo
}

# El problema: el mercado no sigue estas estimaciones
Enter fullscreen mode Exit fullscreen mode

El código tiene soluciones conocidas. La venta no.

Y cuando ambos fracasan:

# Código: feedback inmediato
result = run_code()
if result.error:
    fix(result.error)  # segundos/minutos

# Mercado: feedback tardado
product = launch(product)
wait(months=3)
if metrics.bad:
    pivot()  # semanas de trabajo
Enter fullscreen mode Exit fullscreen mode

Lo que he aprendido

El ratio no es 80/20. Es más como 30/70.

# Día típico de founder técnico:
day = {
    "coding": "3 horas",      # 30%
    "sales": "2 horas",       # encontrar leads, follow-ups
    "marketing": "2 horas",   # posts, engagement
    "support": "1.5 horas",   # Slack, emails, llamadas
    "admin": "1 hora",       # facturas, bureaucracy
    "strategy": "1 hora",     # qué construir ahora
    "meetings": "1.5 horas", # calls que podrían ser async
    "context_switching": "2 horas",  # el impuesto oculto
}
# Total: 14 horas. No 8.
Enter fullscreen mode Exit fullscreen mode

Y ese 70% te hace mejor builder.

Porque cuando entiendes el negocio completo, no solo una pieza:

  • Diseñas código que resuelve problemas reales, no problemas imaginarios
  • Priorizas features que generan revenue, no features que son técnicamente interesantes
  • Hablas el idioma del cliente cuando discutes scope
# El mejor desarrollador que conozco:
def best_developer():
    skills = [
        "escribe_bien_codigo",
        "entiende_el_negocio",  # <-- esta es la diferencia
        "sabe_cuando_parar",     # <-- esta también
    ]
    return skills
Enter fullscreen mode Exit fullscreen mode

El mejor desarrollador no es el que escribe el código más elegante.

Es el que sabe cuándo el código no es el problema.

Mi día actual

Hoy tengo:

  • Semsei funcionando con clientes reales que pagan
  • Norvik con entregas activas para otras empresas
  • pivelcode construyéndose como marca personal

Y sigo aprendiendo que el código es la parte fácil.

Lo difícil es todo lo demás.

Pero también es lo que me hace mejor en lo que hago.

Si estás construyendo algo propio, sabes de lo que hablo. Si estás pensando en empezar, esto es lo que te espera.

No es para desanimarte. Es para que cuando llegue lo difícil, sepas que es normal.

SaaS #Startup #BuildInPublic #IndieDev #ConstruyeConmigo #FounderJourney #TechFounder

Top comments (0)