Empresa tradicional vs Startup vs consultora, mi experiencia en los tres

Llevo unos 12 años trabajando como programador, durante este tiempo he trabajado en tres tipos de empresa: Startup, empresa tradicional y consultora, las tres tienen sus ventajas y desventajas que te quiero compartir aquí en caso de que vayas empezando o no hayas trabajado en alguna de ellas.

Aquí quiero dejar claro que este artículo es una mera opinión de acuerdo a mi experiencia, no quisiera que se tomara en forma general.

Empresa tradicional: Con esta me refiero a empresas que ya tienen un mercado y producto bien definido y al cual el público ya está habituado y que tienen protocolos y lineamientos muy establecidos, por ejemplo bancos, tiendas departamentales o empresas que hacen páginas web para otras empresas. En mi caso hace unos años trabajé para una empresa que hace productos para personas con discapacidad, como prótesis de brazo, y antes de eso trabajé para una empresa que hacía apps o webs para otras empresas.

Ventajas:

  • La principal ventaja que le veo a estas empresas es la estabilidad, como los productos son más «normales», es difícil que la empresa truene, así que si haces las cosas bien no estás preocupado porque te despidan.
  • Tu trabajo es rutinario, llegas a tu oficina, haces lo tuyo y te vas, puedes vivir muy a gusto.

Desventajas:

  • Tienden a ser empresas muy cuadradas, con horarios rígidos y mucha burocracia.
  • Como su producto está bien definido y hay burocracia tienden a aburrir un poco, aunque si te gusta la estabilidad esto podría ser algo bueno.
  • Los salarios son bajos comparados con las Startups y consultoras, además de que las prestaciones que ofrecen son las mínimas que pide la ley y nada más, por ejemplo no esperes recibir vacaciones o bonos más allá de las que dicta la ley.
  • Tu opinión tiene poco impacto, no hay mucho que puedas hacer para cambiar las cosas, mejorar el producto o servicio.

Startup: Estas son empresas cuyo mercado y/o producto aún no está 100% definido, siguen buscándolo y por lo tanto siempre están en constante actualización, algunos ejemplos son Uber o Netflix, aunque no sé si debería clasificarlas como Startup o ya son empresas consolidadas. En mi caso he trabajado para varias de estas, una empresa que hacía una máquina de jugos para gente rica 😂, otra que hace una app para facilitar la vida de vendedores en ruta, o una empresa de renta de scooters. De los tres tipos de empresa que mencionaré acá la Startup es la que más me ha gustado.

Ventajas:

  • Nunca te aburres, las startups te harán usar todas tus habilidades y estar en constante actualización, siempre hay algo que hacer.
  • Dependiendo del tamaño, tu opinión puede tener buen impacto, por ejemplo para mejorar la app que estás desarrollando.
  • El sueldo es mucho mejor que en los otros dos tipos de empresas.
  • La cultura es más flexible, por ejemplo los horarios, las vacaciones, y trabajar de lunes a viernes o lo mejor de todo: trabajar remoto.

Desventajas:

  • Las Startups no son para todos por esta gran desventaja: Como su mercado no está definido todavía en cualquier momento pueden tronar, siempre estás pensando si el siguiente año la empresa seguirá viva y tendrás que buscar un nuevo trabajo, es como tener una piedrita en el zapato.
  • Mucha responsabilidad cae en tus manos, por ejemplo si introduces un error en la app esto impacta a toda la empresa, esto sucederá tarde o temprano y serán días de mucho estrés.

Consultoras: En estas trabajas para una empresa que «renta» a sus empleados a otras empresas para hacerles proyectos, es decir, para efectos legales tu trabajas para la empresa A, pero ellos te consiguen un proyecto con una empresa B para la que trabajas unos meses, incluso un año o más en algún proyecto, una vez que terminas ese proyecto te consiguen otro con una empresa C. Acá he trabajado en dos, una mexicana y una estadounidense.

Ventajas:

  • Tampoco te aburres, como cambias constantemente de empresa siempre hay algo nuevo que hacer, también conoces a mucha gente diferente.
  • Buenísima para empezar porque te hacen aprender un montón, no hay como hacer proyectos diferentes para aprender.
  • El sueldo es bueno si sabes negociarlo.
  • Tienen buenos programas de aprendizaje y buenas dinámicas como viajes, conferencias y ese tipo de cosas, también el ambiente laboral es bueno y tratan de hacerlo divertido.

Desventajas:

  • No sientes que perteneces a ninguna empresa, estás ahí solo hasta que termines para lo que te contrataron.
  • Arriba dije que el sueldo es bueno si sabes negociarlo, esto puede ser injusto porque si te dejas puedes terminar ganando la mitad que tus compañeros que hacen la misma cantidad de trabajo, no tienen un sueldo estándar para todos, para mi esta es la peor desventaja.
  • Por lo general no cotizas en un fondo de retiro como al trabajar directo con una Startup o empresa tradicional, aunque tienen seguro de gastos médicos mayores privado.
  • A veces cuando terminas un proyecto no tienen otro de inmediato y quedas en algo llamado «banca», donde te pagan muy poco o nada en lo que te encuentran otro proyecto, el problema es que el tiempo que tarden está fuera de tu control.

¿En cuales de estas empresas has trabajado? ¿Conoces algún otro tipo?

Mi camino como programador móvil, como empecé y cómo conseguí mis primeros trabajos.

Esta es una pequeña anécdota de cómo empecé a trabajar como programador de apps móviles, espero que le pueda servir a alguien y a ver que no siempre el camino es como lo planeamos. Trataré de resumirlo lo más que pueda.

Soy ingeniero en Mecatrónica de profesión, estudié en uno de los muchos tecnológicos públicos de México, al graduarme descubrí una cosa muy importante que no había tomado en cuenta al elegir mi carrera: No había empleo de Mecatrónico en mi región, no hay fábricas, no se hace diseño, imposible pensar en algún puesto de robótica, si acabas de graduarte o sigues en la universidad imagino que te identificarás con esto y con la sensación de no saber nada.

En fin, decidí irme a la frontera con EEUU donde hay más trabajo y hacer una maestría en instrumentación (sensores, motores y automatización de líneas de producción), en ese programa no te imponen las materias sino que tu las eliges, así que elegí y me pasó algo gracioso, a mitad de semestre me di cuenta de que las materias que había elegido eran de Machine Learning 😅, pero me gustó mucho y decidí seguir por ese camino, aquí fue donde empezó mi carrera como programador, pero yo me dedico a programación de apps móviles, no a Machine Learning (aunque lo sigo aplicando de vez en cuando).

Siempre me ha llamado la atención el emprendimiento, y mitad de la maestría me dio por querer aprender a programar en un lenguaje más «visual» y más «vendible» por mi cuenta, y qué mejor que apps móviles que eran la novedad en ese tiempo (2013 más o menos), entonces agarré mi computadora, entré a Udemy, que también era nueva por entonces y busqué «Curso de apps con iPhone», me suscribí a un curso gratis y el primer video decía que necesitaba una Mac, con trabajo tenía una Windows así que me salí del curso y busqué «Curso de apps con Android» 😂, encontré un curso de Android y otro de Java puro, me los aventé y empecé a hacer pequeñas apps por mi cuenta: Un convertidor de edad canina a humana (si has tomado mi curso de Android lo reconocerás 😉), una app para el día del amor y la amistad (me da pena pero la puedes encontrar acá: https://www.youtube.com/watch?v=RWi5DvRTGSs), una app para hacer el super desde casa, etc. Por cierto, antes de los cursos había comprado un libro que me sirvió mucho aunque en este momento creo que ya es obsoleto: Beginning Visual C++ de Ivor Horton, no tiene nada que ver con Android pero aprendí lo más básico de la programación.

Al salir de la maestría decidí regresar a mi ciudad y tomar un par de semanas de descanso antes de empezar a buscar trabajo, pero a unos días de llegar un primo me dijo «Oye, aquí en Facebook me sale una empresa que busca a alguien de Android, ¿tú sabes eso que no?», le dije que sí y envié mi currículum, me respondieron en el mismo momento y me presenté al siguiente día a la entrevista, me pusieron a prueba (la prueba era hacer un login de Facebook en 3 días) y me quedé a trabajar, ahí empecé a trabajar como Android dev junior y también aprendí algo de iOS con Swift (me prestaron una Mac), algo bueno fue que como no había más mobile devs tenía que ingeniármelas y aprendí un montón, trabajé no solo como programador sino como un «mini-manager» como a los 8 meses me llegó un correo de que me daban dos meses gratis en LinkedIn premium, de esos medio spameros, ahora, no sé si sería por eso pero lo acepté y unos días después me llegó un correo de una empresa en EEUU que buscaba Android developer, para esto me ayudó que me podía defender en inglés, hice las entrevistas y quedé.

Pensé que el sueldo era bueno pero cuando llegué allá me di cuenta que para nada, pero igual me sirvió para tomar más experiencia (queramos o no, decir que trabajaste en EEUU es 👌) y me ayudó a practicar mi inglés, el sueldo me dio para invertir en un Nanodegree en Udacity, que me costó unos 600 USD, creo que este me ayudó a subir al siguiente nivel, aprendí cosas más avanzadas como arquitecturas y testing.

Duré en esa empresa como año y medio y desde entonces he trabajado en otras, las habilidades que gané hasta ese punto me han ayudado a que lo que sigue lo aprenda por mi cuenta en foros, practicando o en la misma documentación de Android.

Esta anécdota me deja claras varias cosas, no digo que resulten para todos, después de todo «cada quien lo cuenta a como le fue en la feria»:

  • Para alcanzar el éxito hay que atreverse, si no me hubiera atrevido a irme a la frontera tal vez no hubiera aprendido a programar, lo mismo cuando vi que buscaban a un programador en Android, yo no era un pro, pero si no me hubiera atrevido a ir a la entrevista tal vez no estaría en esto ahora.
  • Nunca sabemos dónde estaremos, pero podemos empezar a aprender algo nuevo en cualquier momento, claro, mi carrera era un poco relacionada a la programación, entonces no sabría si aplica para otras carreras menos afines, como un contador por ejemplo.
  • Este camino me llevó a confiar y defender el ser autodidacta, encuentro muy valioso que prácticamente a lo que me dedico lo aprendí por mi cuenta (por supuesto que tomando en cuenta el punto anterior), esto me inspiró a crear cursos para ayudar a otros a lograr lo mismo que yo, los cursos que yo tomé al inicio estaban en inglés y eso hizo que me fuera más difícil aprender al inicio, por eso los míos los hago en español. También me inspiró a más adelante haber trabajado con Udacity para mejorar su Nanodegree, si lo haces algunos de los proyectos que hagas son hechos por mí 😁.

Las abreviaciones son del diablo

Este corto consejo aplica tanto a programadores como a otras carreras, pero creo que en la programación se ve bastante, me refiero a las abreviaciones.

En especial si trabajas de forma remota, la comunicación es esencial para que el equipo esté coordinado, hay que estar comunicando todo el tiempo: En los chats de Slack, en las tareas de Jira o cualquier servicio que uses para administrar tareas, en los commits, en los Pull Requests, incluso el código que haces comunica de alguna manera.

El problema es que un malentendido puede causar pérdidas de tiempo, y creo que las abreviaciones pueden causar muchos malentendidos. En programación es muy común verlas por todos lados, en especial los de habla inglesa los usan muchísimo, aquí algunos ejemplos.

  • KPI
  • BE
  • FE
  • EOD
  • ASAP
  • AFAIK

Estas son abreviaciones comunes, pero no queda allí, sino que hay quienes se inventan algunas, por ejemplo digamos que la app tiene una funcionalidad llamada Créditos pendientes de usuarios, habrá quien le diga CPU, esto como te digo puede causar malentendidos.

Por último, están las abreviaciones en el código, donde por evitar escribir userPendingCredit creamos variables llamadas upc o uPendingCredit.

Un consejo que a mí me ha servido bastante, en especial desde que trabajo remoto: Evita usar abreviaciones. Es mejor tardarte unos segundos más escribiendo backend que escribir solamente BE y suponer que todos lo van a entender.

This ticket is for BE ❎

This ticket is for Backend ✅

We need this for EOD ❎

We need this for the end of the day ✅

Créeme, te ahorrarás bastantes dolores de cabeza y malentendidos, y no, el celular no se va a quedar sin memoria porque las variables y métodos tengan nombres más largos 😅, sé tan explícito como puedas, no importa si tu variable se llama usersThatHaveNotPayedSinceLastYear.

Consejos no técnicos para programadores (Y no programadores) en sus 20’s.

Hace un par de días vi un Tweet de alguien que decía:

Mañana cumplo 20.

¿Qué cosas te hubiera gustado entender antes de los 20s?
¿Qué necesito saber? 👀

Cualquier consejo, lo acepto 🌼

Me llamó mucho la atención porque a mi me hubiera gustado tener más personas que me aconsejaran en esa etapa de mi vida, ahora mismo tengo 33 años, no me siento experto en la vida pero he aprendido una que otra cosa que me habría gustado saber antes, respondí ese Tweet pero me gustaría profundizar más, así que aquí te dejo esos consejos y otros más que no cabían en el Tweet.

Disclaimer (Se siente chingón usar esa palabra aunque no estor seguro de qué significa exactamente 😂): Esto me funcionó a mí, puede que algunos consejos no te hagan sentido en tu situación. Los consejos no llevan un orden de importancia.

1. Ahorra e invierte, aunque sea poco pero de forma constante.

Lo sé, es una m@m@d@ que te digan que inviertas tan joven, ganando $100 USD al mes, con tanta vida por delante y sin que siquiera te den una idea de en qué invertir. En esta etapa de la vida es más importante el hábito que la cantidad, puedes empezar ahorrando una cantidad pequeña y fija o un porcentaje (10% por ejemplo) de lo que ganas, y mientras tomas el hábito te recomiendo aprender sobre inversiones ¿Dónde? Dos libros buenos para empezar son I will teach you to be rich de Ramit Sethi y Cómo piensan los ricos de Morgan Housel, ambos libros tienen títulos que parecen más scam que email de príncipe nigeriano que pide dinero, pero son muy muy buenos, te darán una idea de cómo administrar tus finanzas personales y por donde empezar a invertir, otro buen lugar que te recomiendo es el blog de Perro Dinero, me gusta porque explica las cosas informalmente, como si le hablara a un amigo. En este punto hay un concepto muy importante: Interés compuesto, esto en resumen significa que si inviertes poco pero constante esto se irá acumulando y creciendo como bola de nieve, esto en 10 años te dará una super ventaja mucho mayor que si empiezas a tus 30, aunque a los 30 inviertas mucho más. ¿Por qué lo recomiendo? Me quiero retirar a los 52 años, si hubiera empezado a invertir a mis 20s ahora mismo tendría el doble de dinero en mi cuenta de banco y podría hacerlo como a los 45, además gracias al hábito de ahorrar, nunca en la vida laboral me ha pasado que batalle para llegar a fin de mes. Y por cierto, algo muy importante, inicia a ahorrar hoy, no mañana, no la siguiente semana, si tienes $10 USD ahorra eso hoy. Tal vez en otro post profundice más en esto, si tienes dudas me dices con confianza.

2. Aprende inglés

No es 100% indispensable saber inglés para tener un buen trabajo, pero si quieres estar por encima de los sueldos promedio lo es, en especial en programación pero también en otras carreras, además de que la mayoría de los cursos, documentación, artículos actualizados, etc. están en inglés. ¿Por qué lo recomiendo? Yo no salí de los sueldos promedio hasta que lo aprendí.

3. Si te gusta viajar, hazlo todo lo que puedas

No ha habido una sola vez en que diga «No hubiera viajado a ese lugar». Si puedes viajar y te gusta no pierdas la oportunidad de hacerlo, pero ahorra para ello, no vayas a sacar préstamos y cosas de esas 😅. Es un cliché decir esto pero las experiencias valen más que las cosas materiales a largo plazo, hablarás y recordarás tus viajes toda tu vida, además de todo lo que aprenderás.

4. Evita caer en el juego de ver quién tiene más.

No puedo hacer suficiente énfasis en la importancia de este consejo. Si entras en el juego de ver quién tiene más entre tú y tus amigos ya perdiste: Tu vida va a estar dictada por los que te rodean, vas a gastar tu dinero y tiempo en complacer a los demás o encajar con ellos. Esto es peor aún si te comparas con las vidas falsas de Instagram de personas que ni conoces. Tómate un tiempo en pensar cuáles son las cosas que en verdad aportan valor a tu vida, enfócate en ellas y no dejes que las demás te afecten. Por ejemplo: En algún punto aprendí que no me interesan cosas como la ropa, el carro y cosas por el estilo, así que trato de no gastar mucho dinero ni tiempo en esas cosas, pero algo que sí me hace feliz son los libros (Algún día tendré mi biblioteca personal), cosas que mejoren mi salud (Como correr o comer saludable), conocer lugares nuevos y que el tiempo que paso con mi familia y amigos sea de calidad, por eso trato de maximizar todo eso, por cierto, un hobby que tomé últimamente son los juegos de mesa porque creo que ayudan con el tema de la familia y amigos. Creo que este es el consejo más importante desde el punto de vista de la felicidad.

5. Si te gusta emprender, inténtalo.

A menos que tengas mucho dinero y puedas arriesgarte antes sin problemas, este consejo lo recomiendo más llegando a los 30, ya que tengas más experiencia y sólo si tienes la espina de emprender, si lo haces ten en cuenta que probablemente será lo más difícil que hagas en tu vida, necesitarás sacrificar muchas cosas (Tiempo, amigos, fiestas, dinero, etc.) así que no lo hagas solo porque crees que es lo que está de moda o lo que te va a dejar más dinero. Dejando esto de lado, emprender es una de las cosas mas estimulantes por las que he pasado y las que más aprendizajes me han dejado, si sientes que es tu vocación ¡Anímate!.

6. Lee

Así como los deportes, la guitarra o la pizza con piña 🤮, leer no es para todos, si de plano no te gusta no te recomiendo forzarlo, pero sí te invito a que lo intentes, inicia con libros de temas que te gusten o historias que creas que pueden ser interesantes. Hay dos creencias que creo que son erróneas con respecto a la lectura: La primera es que creemos que la lectura nos gusta o no nos gusta y ya, pero yo lo veo más como correr, al inicio es pesado, tedioso, incómodo y puede ser que no nos guste, pero conforme lo haces más le vas tomando sabor, luego quieres correr 5k o hasta un maratón, lo mismo sucede con la lectura, al inicio es muy pesada y puede tomarte un mes o mas acabar un libro pequeño pero luego quieres leer más libros. La segunda creencia errónea es que hay mucho esnobismo alrededor de los libros: que eres buen lector porque lees los clásicos o malo porque lees a Paulo Cohelo (Por favor no leas a Cohelo 😅), dejándose de bromas cualquier lectura es mejor que no hacerlo y no hay lectura mala, yo empecé leyendo Harry Potter (Odiado por muchos) y aún después de casi 250 libros diferentes leídos los sigo releyendo porque es de mis historias favoritas. ¿Por qué lo recomiendo? Mucha información solo esta disponible a través de los libros, aprendes demasiadas cosas a la vez que te entretienes, te ayudan a tener más empatía y un mejor pensamiento crítico. Beneficios de leer

7. A donde vayas haz buenos amigos.

Me siento raro diciendo esto porque me considero introvertido, pero he tenido la suerte de que en todos los trabajos/escuelas en las que he estado he hecho amistades duraderas, tengo amigos en un montón de lugares, y no solo eso, sino que son lo suficientemente cercanos para pedirles un favor o incluso quedarme con ellos si voy a sus ciudades. Dentro de este consejo te recomiendo hacer un «Mantenimiento de amistades», con la pandemia es más difícil ver a los amigos pero siempre procuro llamarlos o mandarles mensajes solo para saludar, algunos contestan rápido, otros duran días pero contestan, gracias a esto es muy chingón que cuando finalmente vuelves a ver a un amigo(a) se traten como si se vieran todos los días. ¿Algo genial? He trabajado para unas 7 empresas, en 5 de ellas algún amigo me recomendó.

8. Siempre habrá síndrome del impostor, acéptalo e ignóralo lo más que puedas

Esto no es para presumir ni mucho menos, es para dejar claro un punto, llevo como 12 años trabajando, he sido desde vendedor de juguetes hasta director de ingeniería, he tratado de emprender como 4 veces, tengo este blog, he sido profesor de universidad y de cursos online con casi 40000 estudiantes en 100 países, tengo una maestría en Machine Learning graduado con honores y actualmente trabajo para la empresa más grande de renta de scooters en el mundo como Mobile Tech Lead, aún así cuando platico con mis amigos por Whatsapp pienso «No mames, estos cabrones saben un montón y yo no sé nada», cuando veo a otros ingenieros en mi trabajo pienso «Uff estos saben tanto que los demás van a ver que yo soy un bruto y me van a despedir». El síndrome del impostor es esa cosa que te hace pensar que todos saben o son mejores que tú y no mereces estar donde estás, platicando con muchos de los que conozco he concluido que no soy el único, TODOS se sienten así. Así que la próxima vez que lo sientas (Y lo harás), voltea hacia tu izquierda y luego a tu derecha, sí, esas dos personas que viste también lo sienten.

Espero que estos consejos te sirvan aunque sea un poco, gracias por leerme y si en algo puedo ayudarte con mucho gusto lo haré.

¿Cuánto gana un maestro de cursos online y cómo funciona esto de hacer cursos? Mi experiencia como maestro después de 8 años en Udemy.

En 2014 me propuse crear un curso en línea de Matlab, la principal herramienta que conocía y usaba en ese momento mientras hacía mi maestría. Mentiría si digo que no lo hice para ganar dinero extra pero también lo hice porque me di cuenta de cuatro cosas:

  1. Muchas de las materias que había cursado tanto en ingeniería como en mi maestría usaban Matlab.
  2. Como la mayoría de nosotros no sabía Matlab, a veces nos enfocábamos más en aprender a usarlo que en aprender el contenido de las clases en sí.
  3. No encontraba un curso en español que enseñara lo que necesitábamos para llevar los cursos sin problemas.
  4. Me encantaba la enseñanza, ya daba clases a alumnos en la universidad así que pensé “¿Por qué no llegar a más personas?”

Entonces me compré un micrófono Blue Snowball en $35 USD y sin tener experiencia en crear cursos en línea empecé a grabar incluyendo lo que yo creía que un curso de Matlab debería tener.

Ahora tengo 8 años desde que lancé mi primer curso, después del cual vinieron otros, mi principal plataforma ha sido Udemy y me gustaría compartir mi experiencia con ellos. Pero primero algunas estadísticas del desempeño de mis cursos.

Hasta este momento tengo siete cursos, cuatro tienen un precio y dos son gratis:

  • Java puro (gratis)
  • Kotlin puro (gratis)
  • Android con Java
  • Android con Kotlin
  • Android Avanzado con Kotlin
  • Matlab
  • Solidworks (En conjunto con otro profesor)

Al momento de escribir esto tengo 45000 estudiantes en 100 países.

Claro que la mayoría de ellos son en los cursos gratuitos, y se han inscrito en el último par de años que empecé a hacer más ruido en mis redes (Sin pagar marketing)

En cuanto a mis reseñas puedo decir que estoy orgulloso, todos mis cursos tienen un promedio de 4.5 o más y esta ha sido la variación, después haré otro post relacionado a por qué creo que he tenido buenas calificaciones pero en resumen ha sido por la atención que doy a mis alumnos, siempre trato de responderles, incluso cuando tienen dudas fuera del curso, como dudas en sus carreras o en sus vidas, estas son las estadísticas de las calificaciones de los cursos hasta ahora:

Ahora, en tráfico y conversión, estos son mis datos actuales, Tasa de conversión es el porcentaje de alumnos que adquieren el curso del total que visitan la página, creo que con un buen marketing podría aumentar el número de visitas pero no se si eso aumente también la Tasa de conversión, como he dicho antes soy totalmente novato en este campo:

Por último, las ganancias, yo veo a esto de los cursos como un ingreso extra, tal vez algún día lo haga a tiempo completo pero lo veo muy lejos, el promedio en el último año es de unos $450 USD mensuales, en los meses buenos que suelen ser Octubre y Noviembre hago unos $600 – 700 USD y en los meses malos alrededor de $150 USD. Como pueden ver el crecimiento ha sido orgánico y prácticamente el crecimiento se ha visto en los últimos años, ha sido un proceso lento pero ha ido madurando bien. También cabe señalar que no he sido muy constante con mis redes sociales ni con mi canal de Youtube, la única constancia que he tenido es responder siempre a mis alumnos.

Ahora pasemos a mis impresiones con Udemy:

Hasta ahora creo que Udemy sigue siendo la empresa más conocida de cursos en línea en el mundo, con una de las menores barreras de entrada, lo único que necesitas para grabar un curso es saber algo que quieras compartir, una computadora decente y, eso sí, un micrófono de buena calidad, aunque cada vez son más económicos. Subir videos es súper fácil una vez que los tienes grabados y lanzar tu curso se hace en un par de horas, simplemente hay que agregar una descripción, a quien va dirigido y que aprenderán tus alumnos al terminar.

Cada vez que alguien va a empezar a grabar cursos y me pide mi opinión les recomiendo esta plataforma, ¿por qué?, simplemente porque es la más conocida y la que vende más, he intentado con otras y con ninguna me he acercado siquiera a los mismos resultados. Cabe señalar que una de las cosas que más he querido aprender pero hasta ahora no he logrado es el marketing, por lo que en mis cursos he hecho cero marketing, han sido solo un par de veces las que he hecho una promoción pagada en mis redes (con resultados mediocres) y Udemy hace casi el 100% de las ventas de mis cursos. Si quieres empezar en este mundillo creo que es la opción indicada.

Algo con lo que me he enfrentado, y tal vez sea una opinión sesgada por mi desconocimiento del tema, es que los cursos no son fáciles de vender con marketing. He tomado algunos cursos de marketing y he intentado aplicar lo aprendido y vender mis cursos con marketing digital un par de veces, usando Google y redes sociales sin resultados, lo mejor que he logrado es recuperar lo que pagué por el marketing, también lo he intentado físicamente con pósters en universidades sin ningún resultado. Y también he contratado dos servicios externos para que me ayuden con esto pero ninguno de los dos me ha funcionado, la tasa de conversión y las ganancias no subieron en lo más mínimo. Aún así las ventas de Udemy han sido buenas, algo deben estar haciendo bien que yo no he encontrado.

Ahora, no todo es color de rosa, Udemy también tiene algunas cosas que nublan la experiencia, algunas bastante malas y una que está haciendo que quiera independizarme a largo plazo.

Al iniciar con mis cursos el convenio con Udemy era que si ellos vendían mi curso iba a ser 50% para ellos y 50% para mí, pero Udemy también te permite crear cupones o enlaces de referidos, entonces si yo vendía mi curso con uno de esos cupones el 97% iba a ser para mí, se oye muy genial pero después descubrí que no era tanto.

En primer lugar, ya es bastante conocido que Udemy siempre tiene descuentos, SIEMPRE. Todo mundo sabe esto, entonces aunque valúes tu curso en $50 USD acostúmbrate a que Udemy cree cupones constantemente y lo venda en $12 USD, entonces, en vez de ganar $25 USD, si Udemy vende tu curso solo te quedan $6 USD, pero eso no es todo, sino que más tarde sacaron otro tipo de ventas, que todavía no entiendo al 100% pero que es algo así: Si alguien entra a su programa de afiliados y vende un curso, a mi me toca solo el 25%, entonces en vez de $25 USD ahora me tocan solo $3 USD por venta ¿Ya no suena tan bonito? ¿O sí?

Lo de arriba es un problema, pero yo trato de verlo por el lado amable, después de todo es una venta extra por la que no tuve que hacer marketing. El problema más grande, y por el que pienso independizarme a largo plazo si algún día me dedico a esto de lleno porque si lo veo como algo crítico, es debido a lo siguiente:

Como te dije arriba, si yo vendo mi curso me toca a mi el 97%, entonces he intentado hacer ventas por mi lado en ciertas ocasiones, pero pasa este proceso:

  1. Creo un cupón, supongamos que de $20 USD
  2. Se lo doy a alguien que quiere mi curso y me contactó por Facebook por ejemplo, esa persona da clic para comprarlo, el enlace la manda a Udemy a la página de mi curso
  3. ¡PUM! Udemy le muestra un bannersote que dice “¡Espera!, yo te lo doy en $10 USD”
  4. La persona se lo compra a Udemy
  5. En vez de tocarme los casi $20 USD solo me toca el 50% de “La venta que hizo Udemy”, es decir $5 USD.

NOTA IMPORTANTE: Esto no lo he podido comprobar, solo es una intuición de lo que me han dicho algunos alumnos y de que a veces vendo un curso en $20 USD y de repente veo que el alumno lo compró con un cupón creado por Udemy y solo me tocaron $5 USD, otra cosa que me hace sospecharlo es que normalmente los de Udemy te responden enseguida cuando tienes dudas, pero cuando les he preguntado si esto sucede siempre me dejan en visto.

No quiero sonar quejoso, es solo lo que me ha sucedido, ¿por qué no me independizo? creo que aún así Udemy me trae cosas buenas, hace ventas por mí y no tengo que preocuparme por el marketing porque no me da tiempo, hago esto como un proyecto alterno, si lo hiciera como full time tal vez lo consideraría más.

Creo que esto de los cursos en línea puede ser muy redituable si eres más constante, aunque sí es una carrera a largo plazo, los retos más grandes a los que me he enfrentado es crear una comunidad que conozca más mi modo de enseñar (directo y al grano) y darme el tiempo de hacer esto con más constancia y consistencia, estoy seguro que si lo hiciera podría vivir de esto en unos años cuando me retire, pero por ahora tengo otros proyectos entre manos. Otra conclusión que saco es que más allá de las ganancias, algo que me ha mantenido queriendo seguir con esto es cuando mis alumnos me dicen que gracias a mis cursos o mis consejos consiguieron un trabajo o subieron de puesto, sonará trillado pero eso no tiene precio. Reseñas como estas hacen que todo valga la pena:

En otros posts estaré subiendo más cosas sobre mi experiencia, espero que te haya servido de algo si tienes interés de enseñar o simplemente en generar un ingreso extra.

Si te ha gustado el post puedes seguirme en Twitter, seguiré posteando sobre este y otros proyectos que siempre estoy construyendo.

Como conseguí mi primer trabajo de programador sin ser ingeniero de software y lo que aprendí de ello.

Este post es más una anécdota personal que otra cosa, pero al final pondré lo que aprendí de ella. Quien sabe, puede ser que alguno de mis errores te sirva para no cometerlo.

Tal como dice en mi perfil en este blog, mi carrera no es como ingeniero de software, sino como ingeniero en mecatrónica, que si bien están relacionadas, no son lo mismo para nada. Para los que no sepan mecatrónica se encarga de juntar la mecánica con la electrónica, agregando toques de programación, pero principalmente orientada a microcontroladores. Al menos en mi carrera no vimos absolutamente nada de desarrollo web, móvil, etc. Entonces ¿Cómo chingados llegué a dedicarme de lleno a la programación? El resumen es que fue una combinación de suerte, curiosidad y atrevimiento.

Siempre me han interesado dos cosas: En primer lugar aprender lo más nuevo en tecnología, como implementarlo y hacer algo con ello, en segundo lugar emprender. Estas dos cosas hicieron que decidiera aprender iOS para programar en iPhone porque quería hacer una app por si me surgía una idea millonaria 🤑; el problema: No tenía para comprar un iPhone y cuando busqué un curso resultó que necesitaba una Mac que tampoco tenía así que me fui por Android, tomé un curso gratuito, resultó que necesitaba saber Java que tampoco sabía 😅 así que tomé otro curso de Java puro. En fin, aprendí lo básico para hacer aplicaciones súper sencillas, esto lo hice mientras hacía una maestría en machine learning, pero la verdad no le veía mucho futuro para lo que yo quería que era emprender.

En fin, al terminar la maestría volví a mi ciudad natal, pensaba tomarme un mes de vacaciones y empezar a buscar empleo relacionado con mecatrónica o con machine learning, aunque de esto último tenía pocas esperanzas. Pero después de solo un par de días de haber llegado mi primo al que le había contado que había tomado los cursillos estaba en la computadora y me dijo «Oye wey, aquí buscan a alguien de Android, ¿Tú sabes de eso que no?», revisé la solicitud de empleo y en efecto buscaban desarrollador de apps móviles con Android, como buen mexicano (E imagino que cualquier hispanohablante ya que todos nos parecemos en esto) pensé «Chingue su madre, vida solo hay una, voy a aplicar», ojo que yo solo sabía lo más de lo más básico no solo de Android sino de programación en general, pero envié mi currículum y no pasaron más de 15 minutos cuando me respondieron que me presentara al día siguiente a una entrevista.

Sobra decir lo nervioso que iba, lo gracioso es que un efecto de cuando me pongo nervioso es que además de las rodillas siento que me tiembla la mandíbula, pero creo que es solo una sensación mía que nadie nota (afortunadamente), bueno pues ese día iba temblando como pocas veces en la vida. Recuerdo solo dos de las preguntas que me hicieron, la primera era si usaba Eclipse o Android Studio, Android Studio acababa de salir ese año y es con el que había aprendido, así que pensé «Al menos en esta pregunta ya me fue bien», luego de varias preguntas me dijeron que iba a tener una semana de prueba donde tendría que implementar un login con la API de Facebook y otras cosas que involucraban hacer requests a internet, y aquí viene otra cosa graciosa, la segunda pregunta que recuerdo fue «¿Prefieres que las respuestas a los requests sean con XML o con JSON?», yo no tenía np idea de qué era XML ni JSON 😵‍💫😂, pero había escuchado algo de HTML entonces pensé «Bueno, si XML se parece en el nombre a HTML pues deben ser algo parecido» como JSON no me sonaba de nada le respondí que XML, me dijeron que empezaba ya al siguiente día, nos dimos la mano y me fui corriendo a mi casa a investigar qué demonios era XML y JSON, busqué mucha teoría y ejemplos y en todos ellos recomendaban usar JSON con Android por sencillez y porque las librerías se ajustaban mejor.

Llegué al siguiente día y una de las primeras cosas que le dije a mi jefe (Quien también fue quien me entrevistó) fue «¿Sabes qué? Pensándolo mejor prefiero JSON». Hice la primera semana de prueba y después de quemarme la cabeza día y noche pude lograr lo que me pedían y me quedé a trabajar, ahí aprendí a programar algo de iOS y también algo de web y lo que aprendí me impulsó a conseguir mi siguiente empleo en Estados Unidos, otra cosa curiosa es que una pregunta común en las entrevistas de trabajo que he hecho desde entonces es ¿Cuál ha sido uno de tus retos más grandes en un trabajo y que lo hayas podido resolver? y les cuento esta misma anécdota después de casi 10 años.

Ahora, esto es lo que aprendí:

  1. Si te gusta algo apréndelo sin importar si no va directamente ligado con tu carrera, la carrera no es la que nos dice qué es lo que haremos siempre, es muy válido cambiar. Yo ahora no volvería a mecatrónica, y no porque no me guste, pero la programación me gusta mucho más.

  2. El NO ya lo tienes, si te llama la atención un trabajo aplica a ello, lo peor es que te digan que no y si en serio te gusta mucho ese empleo, puedes preguntarles si puedes volver a aplicar en 6 meses por ejemplo. Si te contara las veces que me han rechazado en una empresa, fácilmente han sido más de 15.

  3. La parte técnica es más fácil de lo que parece al principio, la parte difícil es aventarse, tuve la suerte de haber quedado en esa empresa jeje, porque desde entonces no me importa mucho si siento que vale la pena arriesgarse. Claro que mucho ojo: Si estás en una empresa y quieres cambiarte a otra no te lanzas así nada mas, primero asegura el otro trabajo antes de renunciar, en esto «Nunca midas la profundidad del río con los dos pies al mismo tiempo».

  4. Normalmente estás más capacitado(a) de lo que piensas. El síndrome del impostor está muy cabrón. Yo iba muy nervioso, pero resultó que al final ya sabía más de lo que creía. Por si no lo sabes el Síndrome del impostor es el que te hace sentir que todos los demás son más inteligentes y habilidosos que tu, en especial al llegar a un nuevo lugar como un nuevo empleo, pero la realidad es que así como tu piensas eso los demás también los están pensando.

Bueno, espero que te haya gustado la anécdota y en especial que te haya servido al menos en lo más mínimo. Si es así te invito a suscribirte al blog y a la Comunidad Hackaprende y a dejar tus dudas y comentarios.

El .gitignore que mejor me funciona en Android

Para los que no lo sepan, .gitignore es un archivo que se puede usar en cualquier proyecto que use git y que sirve para ignorar otros archivos que no queremos en nuestro repositorio (Si no sabes qué es git te recomiendo este video), ya sea por seguridad o porque no son necesarios, por ejemplo archivos como certificados, contraseñas, etc. o autogenerados por la IDE que estamos usando. Dependiendo del proyecto es el .gitinore que necesitarás, este es el que yo uso en Android y me sirve de maravilla:

#built application files
*.apk
*.ap_
*.aab
                           
# files for the dex VM
*.dex
                            
# Java class files
*.class
                            
# generated files
bin/
gen/
                            
# Local configuration file (sdk path, etc)
local.properties
                        
# Windows thumbnail db
Thumbs.db
                
# OSX files
.DS_Store
                            
# Android Studio
*.iml
.idea
#.idea/workspace.xml - remove # and delete .idea if it better suit your needs.
.gradle
build/
.navigation
captures/
output.json 
    
#NDK
obj/
.externalNativeBuild

Lo tomé de aquí y me sirve muy bien, ojo que este documento puede ir cambiando conforme cambian las cosas en Android, aunque no es común que suceda. Como recomendación final, te recomiendo que tu primer commit sea agregar el .gitignore a tu proyecto para no tener problemas después ya que se complica un poco ignorar los archivos una vez que ya los pusimos en el repositorio.

Si te ha servido el artículo te invito a suscribirte al blog y a las redes sociales habidas y por haber 😛.

Parcelables en Android-Kotlin con ‘kotlin-parcelize’

Kotlin cada vez nos facilita más la vida, no dudes que en un futuro solo escribas «Kotlin, por favor desarróllame una app bonita sin errores y que se venta como pan caliente» y lo haga por sí solo (Es broma pero muchos clientes en serio creen que así funciona 😛)

Una de las cosas que se han vuelto muy fáciles es pasar objetos completos entre activities usando intents, para esto tenemos que implementar algo llamado Parcelable en la clase y esto convierte a los objetos a un formato que pueda ser enviado a través de un intent, a este proceso se le llama «serialización».

Supongamos que tenemos una clase Person:

Person(val name: String,
val age: Int,
val weight: Double,
val height: Double)

En vez de hacer esto:

val intent = Intent(this, OtherActivity::class.java)
intent.putExtra("name", person.name)
intent.putExtra("age", person.age)
intent.putExtra("weight", person.weight)
intent.putExtra("height", person.height)
startActivity(intent)

Podemos hacer esto:

val intent = Intent(this, OtherActivity::class.java)
intent.putExtra("person", person)
startActivity(intent)

Como dije arriba, para poder hacer esto la clase Person debe implementar Parcelable, antes esto era una tarea aburrida y repetitiva pero ahora basta con hacer lo siguiente: Primero agregamos el plugin de kotlin-parcelize en el archivo build.gradle(app)

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    ...
    id 'kotlin-parcelize'
}

Luego vamos a la clase Person y agregamos @Parcelize en la parte superior, también implementamos Parcelable así:

import kotlinx.parcelize.Parcelize

@Parcelize
Person(val name: String,
       val age: Int, 
       val weight: Double, 
       val height: Double) : Parcelable

Y listo, ya con eso podemos pasar los objetos de tipo Person entre activities.

Espero que te sirva este pequeño consejo, si es así te invito a suscribirte y dejar tus comentarios o dudas o lo que sea.

¿Cómo tomamos decisiones para avanzar rápido en nuestros proyectos?

Hace un par de años trabajé como director de una empresa muy innovadora que tenía una buena cantidad de proyectos en construcción al mismo tiempo, realmente era muy genial estar desarrollando tantas cosas tan nuevas a la vez.

En fin, era mi primer puesto a tan alto nivel y tenía que tomar decisiones para la empresa todos los días a toda hora. Aprendí mucho, pero algo que me quedó marcado es que tomar decisiones es una tarea más agotadora de lo que parece, yo lo veo así: Cuando te levantas en la mañana tienes la batería recargada🔋 y durante el día cada decisión que tomas te quita un poco de energía, así que solo tienes energía para un cierto número de decisiones a lo largo del día, después de decidir una cierta cantidad de cosas quedas tan agotado que empiezas a tomar decisiones erróneas 😵‍💫. Un error que cometí fue el de no delegar lo suficiente cuando era posible y querer estar presente en cada decisión.

Cuando estás desarrollando un proyecto desde cero, las decisiones a tomar se elevan un 10 a la chorrocientas potencia (Me inventé ese número 😛, pero sí son muchas), desde decisiones de negocio como el nombre que llevará y cómo vas a cobrar, a decisiones de diseño como qué colores se manejarán, cómo será el logo y tipografías, pasando por decisiones técnicas como qué lenguajes de programación usarán.

Como ya he dicho en otras ocasiones, tengo 3 socios que hemos estado trabajando en diferentes proyectos por un poco más de 2 años, para esto hemos desarrollado muy informalmente una forma de tomar las desiciones que hasta ahora me ha parecido genial, nos ha funcionado de maravilla y por eso la comparto aquí.

En Bunu, cada uno de nosotros tiene habilidades muy diferentes y se queda con tareas afines a estas habilidades, por ejemplo hay alguien encargado de la electrónica, del diseño mecánico, de la programación, del marketing, de hacer relaciones con los clientes, ventas, etc.

Para tomar las decisiones sin que sea abrumador seguimos estos principios:

  • Si es una decisión sencilla como elegir el color de un botón, usar un redondeo en el diseño, usar una arquitectura de programación en concreto. El encargado toma la decisión sin tener que avisarnos a todos cada vez, si la persona lo desea se avisa en un grupo por chat que se va a hacer algo para pedir una opinión, pero como nuestra comunicación es asíncrona no necesariamente esperamos a que alguien o todos respondan para continuar trabajando. Muchas veces más que preguntar es presumir lo que estamos haciendo a los demás 😎. Esto también aplica si es una decisión donde quien está haciendo la tarea es el único experto del equipo en ese tema, por ejemplo si alguien sabe Android y los demás no, pues no tiene mucho caso preguntarles si usa una arquitectura en concreto. O si alguien sabe de web esa persona decidirá qué framework usar.

  • Si es una decisión compleja como el diagrama de negocios, cómo vamos a cobrar, si se va a necesitar un gasto fuerte para algo o el nombre del producto. Aquí sí lo comentamos entre todos, aunque tratamos de verlo con tiempo porque de nuevo, la comunicación es asíncrona y no esperamos que todos estén disponibles todo el tiempo, también estas cosas las vemos en una reunión semanal que tenemos los lunes.

  • Manejamos un software de chat llamado Basecamp para comunicarnos, en él creas tareas e invitas a los que pueden aportar a esas tareas, si alguien no está directamente relacionado con un tema y no cree que pueda aportar en él, ni siquiera entra en el chat y no se le pide que lo haga a menos que de verdad pueda aportar algo, también si siente curiosidad puede entrar como «oyente» sin problemas, tampoco es que lo excluyamos. Por ejemplo, supongamos que la tarea en curso es sobre diseño mecánico para fijar los tornillos de una pieza, la persona de ventas no tiene mucho que aportar ahí, entonces no se le invita al chat a menos que quiera hacerlo por curiosidad.

  • Asumimos que el 99% de las tareas no son urgentes, entonces tratamos de poner en espera las decisiones hasta el momento que se requieran. Tratamos de prever con tiempo si se necesitará algo en el futuro para irlo comentando con quien pueda ayudarnos y cuando lleguemos a ese punto ya se tenga una respuesta.

  • Asumimos que todas las decisiones que tomamos son para el bien del proyecto, si hay errores en una decisión no buscamos culpables. Confiamos en las decisiones que toman los demás sin estarles preguntando por qué están haciéndolo de esa manera, sí preguntamos, pero más por curiosidad o porque creemos que podemos aportar algo, nunca por micromanagement.

  • Creemos que la peor decisión es no decidir nada, vamos por rapidez y experimentación y evitamos el parálisis de análisis.

  • Finalmente, una pregunta que podría surgir es: si muchas decisiones se hacen sin tener que esperar o preguntar a los demás ¿Entonces cómo sabemos lo que cada quién está haciendo? En primer lugar, realmente no nos interesa qué está haciendo cada quién en todo momento, eso se ve en los resultados, en segundo lugar, como mencioné arriba, nos encanta presumir, siempre estamos posteando en el chat «Oigan miren lo que logré», «Uff esto no me sale ¿Alguna idea?», «Chequen como funciona esto». Es comunicación asíncrona pero constante. Por cierto, trabajamos 100% remotamente, si fuera en persona sería aún más fácil comunicarlo.

Es muy importante señalar que no es falta de interés en lo que están haciendo los demás, al contrario, si alguien necesita ayuda lo menciona en el chat y todos estamos dispuestos a ayudarnos, pero como dije al inicio del artículo, cada quien es experto en cosas diferentes y trabajar de esta manera nos ayuda a avanzar mucho más rápido, en especial en las etapas tempranas del proyecto.

¿Qué te parece esta forma de tomar decisiones? ¿Crees que funciona o es perjudicial? Te invito a suscribirte y dejar tus comentarios.

Hacklab: Listas con diferentes diseños en Android

Los headers, footers y listas con diferentes diseños en sus elementos son muy pero muy usuales en las apps móviles, solo falta ver estas apps famosas, todas ellas tienen más de un diseño en sus elementos:

Lo raro es que siendo tan usuales no haya muchos tutoriales sobre cómo lograr esto, es por eso que decidí hacer este Hacklab donde explico como implementar Headers, Footers y elementos con diferentes diseños en una misma lista. Para esto vamos a crear una app que muestre la cuenta en un restaurante.

Acá te dejo un enlace al Hacklab:

Si quieres ver más Hacklabs o saber qué es un Hacklab acá te dejo todos los que tengo, iré subiendo más cada vez.