¡A programar! ¿Qué lenguaje/framework/IDE elegir para lanzar tu idea?

Después de todo lo anterior: Validar tu idea, identificar a tus clientes, planear tu MVP, lo que sigue es empezar a “tirar código”. Pero este paso puede llevarte al análisis parálisis, habiendo tantas tecnologías ¿Qué debería usar? ¿Qué lenguaje? ¿Qué IDE? ¿Qué framework?. La realidad es que aquí si depende del proyecto (No te puedo decir que uses Android si tu idea es una página web) pero si te puedo dar algunos consejos que me han sido útiles en este punto.

La regla general es que si ya conoces una de las tecnologías y esa te sirve para construir tu idea no pierdas el tiempo leyendo esto y vete por ese lenguaje, framework, etc, ya después aprenderás otras cosas. Si no conoces nada sobre programación, trataré de recomendarte la tecnología que además de servirte para construir tu idea te deje habilidades que te servirán para el futuro.

  • Si tu idea es una app móvil, piensa si está enfocado en Android, iOS o ambos:
    • Solo Android: Usa Android Studio con cualquiera de los dos lenguajes: Java o Kotlin. Aquí tienes un artículo para elegir cuál de los dos. Y acá puedes encontrar dos cursos gratuitos, uno para cada lenguaje.
    • Solo iOS: No hay pierde, usa Swift con XCode.
    • Ambas: Programar apps en iOS y Android a la vez te puede tomar mucho tiempo. Si no tienes un socio o amigo que te pueda ayudar a programar en iOS mientras tu lo haces en Android o viceversa lo mejor es usar Flutter, es un lenguaje creado por Google que te ayudará a desarrollar apps en ambas plataformas a la vez y viene con mucho poder últimamente, una pequeña desventaja es que no puedes hacer tantas cosas como en los lenguajes nativos, así que es para apps más simples.
  • Si tu idea es una página web:
    • Blog, tienda en linea, landing para tu empresa: Si tu página es algo sencillo como estas mencionadas no necesitas ni siquiera aprender a programar. Elige un servicio de los que te permiten hacer tu página web en un par de horas: WordPress, Wix, Shopify, WooCommerce, Squarespace. Todas estas te ahorrarán mucho tiempo, y el tiempo te dirá si necesitas desarrollar una página más compleja.
    • Una página más compleja que necesita una API: Si ya sabes programar en un lenguaje busca si existe un framework con ese lenguaje que te permita crear tu backend, por ejemplo yo conozco Python, me gusta el lenguaje, así hago que mis páginas web en Django, un framework para Python que me ayuda a hacer las cosas rápidamente porque puedo programar tanto frontend (Lo que el usuario ve) como el backend (La lógica detrás), si no sabes programar te recomiendo este camino. Otros ejemplos son NodeJs para JavaScript, Spring para Java, Spring para Kotlin, Rails para Ruby.

Lo sé, suena a mucho trabajo, y lo es, pero tómalo como algo divertido que te servirá toda tu vida. Si quieres dedicarte a ser programador como empleado sí necesitas aprender lo más que puedas para conseguir el empleo, pero como esta sección es para emprendimiento, mi consejo es que no te pases la vida estudiando cada tecnología hasta sus huesos, aprende solo lo necesario para implementarlo en tu idea y más adelante te vas adentrando conforme lo necesites.

¿Hay algún lenguaje o framework que recomiendes o que hayas escuchado buenas cosas de él? Te invito a dejarlo en los comentarios.

¿Cómo vas a ganar dinero con tu idea? Los mejores 8 modelos de negocio para tu app.

El modelo de negocio es la manera en que vas a ganar dinero con tu idea, la forma en que vas a cobrar; por ejemplo podrías vender productos, manejar subscripciones, etc. En este artículo ahorrarás buen tiempo al conocer los 8 modelos de negocio más comunes para aplicaciones móviles, páginas web u otros productos tecnológicos. ¡Vamos a ello!

  1. Enterprise: Vender servicios o software a otra empresa. Normalmente estos contratos tienen términos fijos y vienen con renovación al final de un periodo. Ejemplos: Moz, Docker, Cloudera, Solidworks.

  2. SaaS (Software as a Service): Vender licencias de software en la nube, por lo general a otras empresas. Normalmente el pago es mensual o anual y no hay plazos fijos, mientras pagues tienes acceso. Ejemplos: Github, Mixpanel, Slack.

  3. Subscripción: Vender un producto o servicio, usualmente a clientes directos, en una base recurrente. Ejemplos: Netflix, Spotify, Shave Club.

  4. Transaccional: Hacer transacciones financieras a nombre de un cliente y cobrar una tarifa, usualmente un porcentaje de la transacción. Ejemplos: Stripe, Paypal, Conekta.

  5. Marketplace: Ser intermediario en la venta de un producto o servicio, es decir, estás en medio de los vendedores y compradores, y cobrar una tarifa o porcentaje del valor de la transacción. Ejemplos: Airbnb, Mercado Libre, Uber, Rappi, Udemy.

  6. E-Commerce: Vender productos físicos en línea. Generalmente las empresas e-commerce manufacturan y llevan inventarios de estos productos. Ejemplos: Boutiques en linea como Shein o Mango, venta directa de productos de cualquier tipo a través de una página web.

  7. Publicidad: Ofrecer un servicio gratuito a los consumidores y ganar dinero con publicidad (Recuerda que si el producto es gratis, significa que tú eres el producto 😉). Ejemplos: Redes sociales, blogs, apps gratuitas con publicidad.

  8. Hardware: Vender dispositivos físicos a consumidores o negocios. Ejemplos: Go Pro, Xiaomi.

Para terminar te dejo dos consejos para elegir el mejor modelo de negocios para tu producto de acuerdo a errores que cometí con mis proyectos pasados.

  • Tu producto debería caer en uno de estos 8 modelos, en este tema es en el único que te diría que no intentes reinventar el hilo negro. Entender la forma en que van a pagar es algo muy importante para los usuarios, si el modo de pago es confuso puede causar rechazo por no saber cuánto van a pagar exactamente o incluso puede sonar a estafa.

  • El modelo de negocios es parte de la idea, ve pensando en él desde el inicio de tu proyecto para que lo tomes en cuenta en el diseño.

¿Tu producto está dentro de uno de estos modelos? ¿Conoces algún otro modelo de negocios probado? Te invito a dejar tus comentarios.

Data Binding para Android con Kotlin

Desde el inicio de Android la forma de obtener acceso a un View era así:

val nameTextView: TextView = findViewById(R.id.name_text) as TextView

Y estaba bien, solo que se podía mejorar porque tiene sus desventajas:

  1. Es aburrido de hacer cuando tienes 10 o más views, tienes que ir a ver a tu layout.xml el id que le diste. Además ¿Qué es eso de tener que escribir 2 veces el tipo de View que vas a usar? 😪.

  2. Si olvidaste crear el nameTextView y lo quieres usar la app truena (nullPointerException), pero no te avisa en tiempo de compilación, sino en tiempo de ejecución, es decir, te avisa ya que estás usando la app, cuando no hay mucho que hacer más que lanzar una nueva versión, esto es tardado y para entonces ya les tronó a muchos de tus usuarios.

  3. Cada vez que llamas findViewById, Android va y busca el id de entre el montón que tienes en tu app, es un proceso pesado y poco eficiente.

Por eso Google decidió sacar a la luz algo llamado data binding (Algo así como enlace de datos) que hace tu código más rápido, limpio y menos repetitivo.

Lo primero que hay que hacer es agregar soporte para data binding en tu archivo build.gradle (app):

// En la parte superior agrega el plugin de 'kotlin-kapt'
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt' <--- Aquí
}

android {
    ...

    buildFeatures {
        dataBinding true
    }
}

Luego en tu layout.xml (por ejemplo activity_main.xml), y en la pestaña del documento o en el ViewGroup padre da clic en alt + N (option + N en Mac) y selecciona “Convert to data binding layout”

Verás que todo se encierra dentro de <layout

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <data>

    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            id="@+id/name_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout
</layout>

Esto también creará automáticamente una clase binding con el nombre de tu Activity, por ejemplo para MainActivity creará una clase ActivityMainBinding, o para LoginActivity creará ActivityLoginBinding

Ahora en el método onCreate() de tu Activity, en vez de usar setContentView(R.layout.activity_main) puedes crear un objeto binding así:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

Y en vez de usar el findViewById(R.id.name_text) simplemente podrás usar el binding.nameText y esto será tu TextView, por ejemplo para agregarle texto puedes hacer lo siguiente

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    // binding.nameText es el TextView de tu layout, esto es lo mismo que hacer
    // findViewById(R.id.name_text)
    val nameTextView = binding.nameText
    nameTextView.text = "Ragnar Lothbrok"

    // También puedes simplemente escribir 
    // binding.nameText.text = "Ragnar Lothbrok"
}

El nameText del binding.nameText se generó automáticamente a partir del id del TextView name_text, por ejemplo si tienes un ImageView llamado profile_image, se generaría también un binding.profileImage que podrías usar directamente, no más findViewById.

Con dataBinding obtienes 3 ventajas que se contraponen a las desventajas del inicio:

  1. El código es más limpio y ahorras lineas de código porque no necesitas declarar los views.

  2. Los errores ocurren en tiempo de compilación, si ocurre un error lo sabrás antes de ejecutar la app.

  3. Como todo se pre-carga en tiempo de compilación, el proceso es más eficiente al usar los views.

¿Qué arquitectura es mejor para Android? ¿MVC, MVP o MVVM?

La arquitectura es uno de los principales temas a abordar cuando inicias una nueva aplicación, como siempre trataré de evitar el “depende para qué lo quieras” y en 2 minutos te ayudaré a elegir cuál te conviene más para tu app.

Nota: Esta es mi opinión personal después de usar las 3 arquitecturas mencionadas.

En Android, la arquitectura MVC (Model-View-Controller) no funciona porque no está hecha para ello, las veces que lo he intentado mi código queda de 💩, no he encontrado como adecuarlo, mi recomendación es no implementar MVC con Android.

En cuanto a los otros dos (MVP y MVVM) he implementado ambos y los dos funcionan muy bien. Para ser honesto me gusta más MVP, aunque MVVM está prácticamente hecho para Android y es el que Google recomienda más. Te dejo un resumen de las ventajas y desventajas que veo sobre ambos:

MVP (Model-View-Presenter): 
Ventajas:

  • Súper fácil de replicar, una vez que lo implementas para una activity o fragment casi es solo es copiar y pegar.
  • La separación de código es muy clara.
  • Gracias al punto anterior te permite hacer testing exhaustivo relativamente fácil.
  • Una vez que lo entiendes lo puedes usar una y otra vez y se acomoda muy bien a casi cualquier tipo de aplicación.
  • Es fácil de adaptar a apps que ya están construidas con código antiguo (Legacy), aunque sí se necesita bastante trabajo y tiempo.

Desventajas:

  • Algo difícil de entender al principio.
  • Necesitas muchas interfaces (y mucho código repetitivo), como consecuencia a veces es aburrido de implementar y hace que sea difícil buscar dónde se mandan llamar ciertos métodos con los shortcuts del teclado.

MVVM (Model-View-ViewModel)
Ventajas:

  • Recomendado por los de Google y prácticamente hecho para Android, por si solo no es una ventaja pero podría ser que por ello agreguen mejoras a la técnica.
  • Su mayor ventaja es que tiene herramientas para manejar el lifecycle de los activities y fragments, no tienes que estar cuidando esto. Por ejemplo, cuando usas MVP si no tienes cuidado es muy frecuente que la app truene si haces ciertas cosas después del onStop() del Activity, esta es la mayor ventaja que veo.


Desventajas:

  • Se complican a propósito, necesitas hacer ciertas cosas que se podrían hacer de manera más fácil.
  • No es tan replicable como el MVP, en cada Activity o Fragment donde lo uses tienes que hacer algunas cosas diferentes.
  • Es difícil de adaptar a apps que ya están hechas, es decir, prácticamente es para aplicaciones nuevas.
  • Para implementar MVVM en un Activity que traiga datos de internet, necesitas integrar al menos como 6 clases: Activity, ViewModel, Repository, Api, Dao, Model, uff 😪.

Bajo este análisis, lo que yo haría es lo siguiente:

  • Si la app es para mi propio negocio me iría por MVP: En lo personal lo veo más estructurado y fácil de manejar y replicar, me ayuda a hacer las cosas más rápido.

  • Si es una app para la empresa en la que trabajo usaría MVVM: Es más actual, luce mejor en el currículum y los de Google de seguro irán mejorando las técnicas.

¿Sabes cómo implementar las arquitecturas en Android? Te invito a dejar tus comentarios o dudas.

¿Cuánto tiempo te debería llevar lanzar una app/web? Spoiler, no tardes mucho.

Ahora que tienes una idea de tu MVP y las características que debería tener, es hora de establecer una fecha para lanzar tu producto, así es, elige la fecha YA. En este artículo te diré cuánto tiempo necesitas para lanzar una app.

TL;DR: Son 3 meses.

He lanzado más de 10 apps y páginas web al mercado, algunas como empleado y otras como empresas personales. El tiempo que toma hacer un producto digital varía principalmente en función de estos 5 aspectos:

  1. La dificultad del producto: Si necesita tecnología avanzada como redes neuronales, optimización de consumo de datos, batería, rapidez de procesamiento, etc.

  2. Las partes que necesita: Algo como Uber lleva bastante trabajo porque necesita una app de usuario + app de conductor + backend + toda la logística.

  3. El tamaño del equipo: Un equipo más grande podría hacer las cosas más rápido, pero no necesariamente es así, a veces con más personas se requiere más tiempo para tomar decisiones.

  4. Si estarás o no de tiempo completo.

  5. Si tienes experiencia programando: O en la parte técnica necesaria para construir tu producto.

Independientemente de estos aspectos, 3 a 5 meses es un tiempo suficiente para lanzar tu MVP. Los puntos que tienen mas peso en la duración según mi experiencia son el 4 y 5. Si es la primera vez que emprendes puedes ponerte una meta de 4 o 5 meses, si ya tienes experiencia 3 serán suficientes. Toma en cuenta lo siguiente:

  • El alcance es flexible, el tiempo no. Es preferible quitar características menos esenciales que aumentar el tiempo, lanza en el momento que te lo propongas.

  • Esto aplica para productos digitales, en el caso de un producto que involucre hardware, dependerá mucho de los tiempos de producción que son lentos.

  • Hay productos que necesitan validaciones que requieren mucho tiempo, por ejemplo si necesitan que los evalúe alguna autoridad médica, que se aplique alguna ley, etc., en estos casos aunque no puedas lanzar en 3 meses, sí puedes tener un producto que funcione y probarlo con personas cercanas en ese tiempo.

  • Esto asume que sabes un poco de programación o la habilidad técnica principal que necesitas para crear tu producto. Si no sabes nada de programación, lo mejor es que agregues un par de meses para aprender, pero tampoco agregues mucho, por lo general necesitas sólo lo básico para construir un producto decente, así que no te mates aprendiendo hasta lo más avanzado de Javascript.

  • No aplica si pagas para que alguien te desarrolle la app/web, estos procesos toman mucho tiempo, de hecho mi recomendación es que NO pagues por esto, hazlo tú mismo(a). Si quieres saber por qué te invito a ver este otro artículo.

  • No será un periodo fácil, lograr esto supone que tendrás que trabajar duro en los próximos meses, avanzar aunque sea un poco TODOS los días y desvelarte de vez en cuando, pero ¡hey!, somos emprendedores porque nos apasiona aprender y crear cosas geniales, así que no debería afectarte demasiado. Se te harán cortos los días de la emoción.

Para terminar, este es un ejemplo de una MVP que lanzamos en tan solo 3 meses haciendo los mismos pasos que te estoy compartiendo en esta serie de artículos, es una app llamada Botia que sirve para reservar servicios usando bots, puedes encontrarla en https://www.botia.app, el producto consiste en una app móvil (Android) + backend.

Como definir tu Producto Mínimo Viable (MVP) para lanzar en 3 meses.

En este punto espero que hayas validado tu idea y tengas al menos una noción de quien es tu cliente/usuario ideal, si todavía no lo haces te recomiendo ir a esos artículos, si ya lo hiciste ahora toca definir tu Producto Mínimo Viable (MVP – Minimum Viable Product).

El MVP es un producto (App móvil, web, etc.) que tiene lo necesario para resolver el problema que quieres pero requiere el tiempo y esfuerzo mínimo de tu parte para poder ser lanzado al mercado.

Aquí el objetivo del juego es lanzar tu producto cuanto antes para revisar qué es lo que hay mal en él y corregirlo, además de que validarás mejor si la idea es tan buena como creías. Es mejor darte cuenta de tus errores a los 3 meses que esperar 1 año a que sea perfecto.

Como siempre te guiaré con un ejemplo, vamos a suponer que estamos creando una página web para comprar cereales (Konfléis en Latinoamérica) de todos los colores y sabores, te subscribes y cada semana recibes un cereal que elijas de un catálogo, vamos a llamarla Cerealife (Idea millonaria 💵🤑 y nombre genial) Vamos a definir el MVP. Piensa ¿Qué es lo mínimo que necesito para lanzar esta página web? Y se nos ocurre lo siguiente:

  1. Mostrar un catálogo de los cereales.
  2. Que el usuario pueda seleccionar cereales del catálogo.
  3. Que pueda insertar sus datos de entrega.
  4. Que pueda suscribirse creando una cuenta.
  5. Que pueda insertar sus datos de pago.

Esas son las características esenciales para que la página web comience a funcionar.

Siempre va a haber más ideas, pero muchas de ellas no serán esenciales así que las podemos dejar para después, anótalas por ahí pero no las incluyas en tu MVP, ejemplos de características que NO deberías incluir en el MVP de Cerialife:

  1. Que se pueda compartir su cereal en redes sociales: Muy bonito pero no es esencial.
  2. Que puedan agregar amigos para compartir el cereal: Esto no es esencial, además de ser raro.
  3. Poder ver dónde viene su cereal.
  4. Poder seleccionar en un calendario cuando salen de vacaciones y no quieren recibir el cereal: Ok esto es importante, pero lo puedes resolver en el MVP con un simple Switch que “apague la app”.
  5. Poder calificar los cereales si te gustaron o no.

No quiere decir que no hagas todo esto después (excepto el punto 2, por favor no lo hagas) pero son cosas que si te pones a hacerlas te retrasarán y realmente no aportan nada al problema núcleo, que es tener buen cereal siempre.

El MVP NO es un producto inacabado o con bugs, es algo que debe funcionar y debe estar listo para que el mundo lo use, aunque al principio solo sea el mundo alrededor de ti. Lo normal es que al inicio cuando lances tu MVP sea un desastre, pero como menciono arriba, lo importante del MVP es ahorrar tiempo y esfuerzo. Una vez que termines tu MVP y lo hayas lanzado, lo que sigue será pedir retroalimentación a tus usuarios para mejorar lo que haya fallado, pero eso lo veremos en otro artículo.

Ahora te toca a ti definir tu MVP, si tienes dudas te invito a comentarlas y con gusto te ayudo.

Suscríbete para enterarte cuando suba nuevos artículos y cursos, así como recibir contenido y promociones especiales, prometo no enviarte spam.

Te recomendamos 6 programas de modelado 3D

Antes de descargar cualquier programa de modelado en 3D, necesitas definir para que lo quieres utilizar, ya que algunos de ellos se enfocan en el diseño y documentación técnica, mientras que otros son para diseños artísticos, los cuales te permitirán hacer todo tipo de animaciones e incluso videojuegos. A continuación, te presentamos algunas opciones que pueden ajustarse a tus necesidades.

Si lo que buscas es realizar modelados técnicos para la fabricación de piezas, productos reales o estás estudiando alguna ingeniería tal vez una de estas opciones sea para ti:

  1. Solidworks. Es un programa de modelado 3D profesional, el cual permite hacer diseños, ensamblaje, planos 2D, simulación de esfuerzos y mucho más. Es uno de los más utilizados por profesionales, por lo cual te abrirá muchas oportunidades laborales.
  2. Fusion 360. Programa de modelado técnico que cumple prácticamente con las mismas funciones que Solidworks, pero ha estado ganando usuarios debido a su interfaz amigable y rápida curva de aprendizaje. La ventaja de Fusion 360 es que si eres estudiante tendrás acceso a una licencia de año gratis.
  3. FreeCAD. Está enfocado al diseño 3D paramétrico, a pesar de tener menos herramientas disponibles que los anteriores tiene la gran ventaja de ser gratuito. Es fácil de instalar y no requiere una computadora muy potente para poder utilizarlo. Es perfecto para quienes están iniciando, personalmente lo utilizo con mis alumnos de preparatoria, esto les da grandes nociones del tema y los prepara para el uso de otros programas usados en la industria y universidad.

Por otra parte, si quieres enfocarte a la animación y creación de videojuegos podrías probar:

  1. Blender. Enfocado para personas que quieren realizar modelados 3D artísticos. Es un programa gratuito utilizado por aficionados y profesionales. Puedes utilizarlo para realizar modelados para impresión 3D, animación e incluso crear videojuegos. Tiene una gran cantidad de herramientas para explorar. Spring es una película animada que permite apreciar su potencial.
  2. Unity. Es uno de los motores de juegos más utilizados actualmente, es utilizado para modelado 3D, creación de contenido cinematográfico, animaciones y creación de videojuegos. Cuenta con una versión gratuita que te dejará crear tanto contenido como tu imaginación te lo permita. Con Unity se han creado juegos famosos como Cuphead y Hearthstone

Como mención especial te presentamos Tinkercad, que si bien no es un programa profesional, es una plataforma bastante completa y gratuita en el que los más pequeños podrán realizar sus primeros modelados en 3D. No es necesario descargar nada ya que es en linea, es gratuito. Además, también permite aprender otras programación y electrónica.

¿Quién usará tu app? Encuentra a tu usuario ideal.

Ahora que sabes qué el problema resuelve tu idea es bueno y que ya validaste que la idea al menos no es una locura toral con tus amigos y conocidos, es momento de definir tu usuario ideal, en el mundo del emprendimiento al usuario/cliente ideal se le conoce como customer persona o target persona. Antes de continuar, si no leíste la imagen de arriba cantando, necesitas esforzarte más 😑.

El target persona es una versión idealizada de tu cliente, es como imaginas a esa persona que descargará tu app, visitará tu página web o comprará tu producto sin poner objeciones, es importante porque esto te ayudará a definir lo que tu app debería tener o no para satisfacer las necesidades y gustos de los usuarios que crees que tu app tendrá. Un ejemplo muy simplificado es que un posible target persona de Pinterest es una fotógrafa, joven, que le gusta la tecnología y que tiene un negocio donde exhibe de su trabajo.

Pero el target persona debería ir más allá, deberás pensar en aspectos específicos de ese usuario: Edad, si tiene hijos y cuantos, pasatiemos, incluso darle un nombre, además de cosas que definan más acerca de su carácter que hacen que sea tu cliente ideal, como qué tan a gusto se siente con la tecnología o qué tan enfocado está en el precio. No tiene que ser algo muy elaborado, a mi me funciona dividirlo así:

A continuación te doy un ejemplo de cómo podrías crear a tus target personas. Supongamos que quieres hacer una app móvil con videos sobre cómo entrenar a tu perro (Idea original, no me la robes 👀😂, si tienes miedo de que roben tu idea checa este otro artículo), un posible target persona para esta app podría ser el siguiente:

Puedes hacer más de un target persona, aquí otro ejemplo:

Hacer esto te tomará un par de horas pero te dará una gran idea de los siguientes pasos a tomar en el diseño de tu producto, ahora te dejo algunos consejos y comentarios para que este paso te resulte aún mejor.

  • Al inicio puede ser que sea difícil definir exactamente quién será tu cliente, en especial si tu producto es algo nuevo, no te preocupes, lo importante es definir tu hipótesis y en los siguientes pasos veremos como revisar si se cumple o no, si no se cumple tendrás oportunidad de re-definirlos e intentar de nuevo.

  • Los ejemplos de arriba son para cuando tu cliente es directamente el usuario (B2C – Business to Consumer), pero también aplican si tu cliente fuera otro negocio (B2B – Business to Business) en este caso necesitarás target personas para quien hace la compra y para quien la usa. Ejemplo: Supongamos que ahora tu app es para llevar registro de las vacunas de tu perro, pero en este caso la vendes a las veterinarias quienes la proveen al usuario final, debes hacer un target persona para el dueño de la veterinaria y otro para el usuario final y luego diseñar tu producto pensando en ambos.

  • Opcionalmente pero recomendado, deberías rehacer el ejercicio de validar tu idea con una entrevista pero ahora en vez de amigos y conocidos buscar a personas que encajen con tus target personas, te dará una idea de que vas por buen camino.

¿Crees que es útil definir a tus target personas o sería una pérdida de tiempo? ¿Qué otras cosas consideras importantes que debería incluir? Te invito a dejar tus comentarios.

Suscríbete ahora a Hackaprende para enterarte del contenido que voy subiendo: Cursos, artículos, ofertas y contenido especial, prometo no enviarte spam.

4 Recomendaciones para elegir socios correctamente.

En un artículo pasado te comenté las ventajas que tiene hacer sociedad desde mi punto de vista y mi experiencia, es muy válido querer hacer las cosas solo y si sigues por ese camino no tiene nada de malo, también tienes posibilidades de éxito. Ahora, si decides irte por el camino de la sociedad, aquí te presento algunos consejos para elegir a las personas con las que te quieres aliar, síguelos y te ahorrarás bastantes dolores de cabeza.

  1. Elige a las personas por su actitud, no por sus conocimientos. Tendrás que convivir con tus socios todos los días, si el negocio funciona será por muchos años, elige a alguien que tenga honor, en que puedas confiar, alguien que conozcas bien y que sepas que tiene integridad personal y profesionalmente. Además elige a alguien que tenga un carácter fácil de tratar, que le puedas preguntar o discutir sin pensar “a ver si no se disgusta”, no hay nada más agotador que lidiar diariamente con alguien difícil.

  2. Que le interese crear cosas geniales y no solo el dinero: Ya te mencioné en un post anterior que emprender será muy pero muy difícil, puede pasar mucho tiempo antes de que vean un centavo. Elige a alguien que le apasione crear cosas geniales, de preferencia que le apasione la idea que tienen entre manos. Déjame te cuento una pequeña historia: Una vez nos interesaba asociarnos con una persona, hicimos una reunión, le platicamos el proyecto y lo primero que respondió fue “¿Y yo cuánto voy a ganar?”, ni que decir que a partir de ahí perdimos el hilo de la conversación, no lo tomamos más en cuenta.

  3. Dividan las ganancias en partes equitativas. Incluso si tu ya tienes 6 meses desarrollando tu idea y tu socio acaba de entrar, créeme que lo que falta es 1000x más trabajo del que ya has hecho y esos 6 meses se van a diluir con el tiempo, en cambio el resentimiento de parecer ambicioso no se irá, por ejemplo puedes quedarte con el 51% y dar el 49% a tu socio, o si empezaron juntos desde cero jueguen un piedra, papel o tijera. No se trata de ver a quién le toca el pedazo más grande del pastel sino de hacer el pastel más grande para todos. Esto NO aplica si uno de los socios solo está poniendo dinero o un servicio pequeño pero no está de lleno en la empresa, ahí sí es justo darle una menor cantidad a ese socio en función de cuánto vale la empresa en ese momento y cuánto va a aportar.

  4. Máximo 4 socios, yo diría que 3 es suficiente. Mas allá de eso se vuelve muy pesado estar consultando para cada decisión.

Para terminar te dejo dos consejos de BONUS que te evitarán muchos problemas.

  • Para la toma de decisiones te recomiendo lo siguiente: Las decisiones pequeñas y medianas las puede tomar una sola persona sin tener que estar consultando a los demás socios, por ejemplo si a ti te toca el diseño de la app, no necesitas estar consultando cada vez que quieras incluir un color nuevo, eso retrasa las cosas, deben confiar en que los demás harán su trabajo y lo harán lo mejor que puedan.

  • Ya no somos niños, eso de las peleas internas déjenlo para los fanáticos del futbol o mejor disuelvan todo. Si alguien se equivoca no busquen culpables sino cómo resolver el problema, habrá muchas decisiones erróneas pero usen el mantra de que nunca nadie hará las cosas o tomará una decisión que vaya contra la empresa.

Te invito a comentar si tienes dudas u opiniones y a suscribirte al blog para recibir los últimos artículos y noticias sobre nuevos cursos, además de promociones especiales en ellos.

La mejor manera de manejar la versión tu código

Al desarrollar cualquier cosa que involucre código debes llevar un registro de las versiones que vas lanzando continuamente, esto sirve para dos cosas:

  1. Que tus usuarios sepan qué versión tienen y si tienen la más actualizada.

  2. Que los desarrolladores puedan encontrar errores más fácilmente al saber en qué versión se presentan.

Hay varias formas de llevar registro de la versión, la que yo uso y recomiendo es MAJOR.MINOR.PATCH, se ve así: 1.6.4, a continuación te explico en qué consiste cada parte:

MAJOR: Mejoras y cambios mayores, esta versión puede empezar en 0 si tu proyecto está en Beta (por ejemplo 0.12.1) y solo se actualiza si sufrió un gran cambio, por ejemplo si cambiaste totalmente la interfaz, si ahora hace algo diferente a lo que hacía antes o incluso si hiciste un proyecto nuevo para reemplazar al anterior. Cambiar MAJOR es muy poco frecuente, si observas muchos productos con años en el mercado apenas van en versiones 2.0 o 3.0. También vale la pena actualizar MAJOR cuando se hacen cambios en la API que ya no serán compatibles con versiones anteriores.

MINOR: Mejoras y cambios menores, lo más común es cuando agregas una nueva característica a tu aplicación, también podría ser cuando mejoras considerablemente una pantalla, lo normal es que este número cambie con cierta frecuencia (Una o dos veces por mes), más al principio del proyecto que vas a toda velocidad, ya después se estabiliza un poco.

PATCH: Corrección de bugs y arreglos menores, por ejemplo cuando arreglas un bug que hace que tu app truene, cuando cambias cosas pequeñas de UI, cuando mejoras cosas no visuales, como algo que solo mejora un poco el rendimiento al descargar datos. Este cambiará cada vez que subas una actualización.

Mi principal razón de preferir 3 números en la versión (2.0.0) en vez de solo dos números (2.0) es porque cuando tenemos dos números no hay forma de diferenciar entre bugs y características nuevas, 4 ya me parecen demasiados.

Como te estarás preguntando, esto de las versiones tiene algo de feeling, podría ser que lo que para algunos es un PATCH para otros sea un MINOR. Para termina te dejo algunos consejos personales sobre esto del versionamiento:

  • Cuando MAJOR se actualiza, MINOR y PATCH se reinician, cuando MINOR se actualiza, PATCH se reinicia, ejemplos: 1.3.10 -> 2.0.0, 1.80.17 -> 1.81.0

  • No hay un límite de número, puedes tener 1.9999.1726, aunque lo normal es que el PATCH no suba mucho para cuando ya necesites el siguiente MINOR, pero que el número no te quite el sueño.

  • No te estreses mucho decidiendo si la siguiente versión es PATCH o MINOR, lo más importante es tener versiones diferentes que se puedan distinguir más que llevar un conteo exacto.

¿Qué te parece esta forma de versionar? ¿Estás o no de acuerdo? Suscríbete a Hackaprende para más artículos, cursos, contenido y promociones especiales, prometo no enviarte spam.