lunes, 26 de marzo de 2018

Tengo una idea para hacer una App pero nose por donde arrancar!

A quien no le ha surgido alguna vez siendo desarrollador una idea genial que suponen que cambiaran al mundo o que simplemente piensan que puede funcionar y porque no? Vivir de ella?
Yo vivo teniendo ideas en mi cabeza de ese estilo. El problema es poder generar el tiempo para poder llevarlas a cabo mas cuando uno tiene un trabajo y una familia en que consumir tiempo.

En esta post quiero enumerar algunos items a tener en cuenta para aquellas personas faltos de tiempo que tienen esas ideas pero no saben como encararlas apropiadamente para que sean todo un éxito.
La idea de estos tips es guiar un poco a los nuevos emprendedores en software en base a mis propias experiencias y cosas que a mi me fueron funcionando utilizando distintas metodologias agiles y algunas mañas personales que a mi por lo menos me resultan.


Arranquemos...
1.- Bajar la idea principal a papel.


    Ni mas ni menos que eso. La idea que tengamos dando vuelta en la cabeza escribirla en un documento. Redactar la idea principal, como es que esta idea va a afectar al usuario final, como le va a ayudar a resolver, variantes de la idea, formas de monetización, la imagen que se le va a querer dar a la idea, como la gente va a ver la idea, si como un producto o una persona o una entidad o una caja negra que hace magia o los va a acompañar todo el tiempo en su celular ayudándolos en sus quehaceres, seria el "donde vivirá nuestra idea?"


2.- Ver hacia donde apunta nuestro proyecto.

    Identificar el fin de la idea. Ver bien claro el propósito de lo que vamos a hacer. Que quede bien definido que es lo que vamos a hacer para solucionar que problema. Sin esto bien bien definido corremos riesgos de que tengamos cambios de rumbos sobre la marcha que emprendamos y si contamos con poco tiempo estas cosas nos retrasarian mucho al punto de que avandonemos la idea en un tiempo.


3.- Monetización.


    Vamos a querer ganar dinero con esta idea? bueno de que forma? con publicidad? vas a vender un servicio? vas a hacer una aplicación paga? Vas a vender productos con ella? va a ser gratis?. Definir claramente si vamos a querer ganar dinero, de que forma lo vamos a llevar a cabo.


4.- Analizar tecnologias que vamos a usar.

    Vas a hacer una web? que lenguaje vas a usar? que base de datos se acomoda mejor a tu idea? Servicios externos que se van a necesitar? Que tipo de tareas vas a tener en el backend? identificalas y fijate de que forma las vas a aplicar.


5.- Servidores y Hosting que necesitemos.


    Ver que opciones hay en cuanto a precios, prestaciones y fiabilidad. Hoy por hoy hay varios servicios confiables y muy buenos por precios muy variados, sean AWS de Amazon, Google Cloud Computing, Godaddy.com no se queda atrás tampoco, entre miles mas. Hay que tratar de buscar soluciones que puedan ser escalables porque si nuestro proyecto crece inesperadamente debemos tener la posibilidad de poder expandirnos sin demasiado trabajo.


6.- Bajar a detalle fino sobre papel.

    Armar otro documento con el detalle bien fino de como vamos a resolver nuestro proyecto, pantallas, base de datos, arquitectura de proyecto, servicios. Todo mientras mas detallado mejor cosa de poder detectar desde antes de que nos pongamos a desarrollar problemas o cuestiones que no cierren bien. Aca vale utilizar todo tipo de diagramas que consideres, uml, armado de maquetas, diagramas de entidad, etc etc etc. Hasta un simple documento con todo escrito bien detallado sirve.


7.- Buscar colegas.

    Este punto es de suma importancia. Si bien solos podriamos resolverlo teniendo en cuenta que uno trabaja, tiene una familia, una vida! Esta bueno poder contar con colegas de gran confianza y que además cada uno tenga un rol distinto para poder lograr tener puntos de vistas distintos de los temas que vallan surgiendo durante el desarrollo del proyecto.


8.- Separar el proyecto en etapas y poner fechas de vencimiento.


    Una vez que tenemos la idea cerrada hay que hacer un listado de tareas, priorizarlas y separarlas en etapas de construccion. Lo mejor es poder separar en muchas etapas cortas, de no mas de 2 semanas. Esto ayuda mucho a llevar un hilo del proyecto y a saber en todo momento donde estamos parados, si venimos bien o estamos atrasados o identificar sobre la marcha tareas q fueron mal planteadas o faltantes.

9.- Llevar control de tiempos y avance.
    Esto parece tonto en un proyecto personal. Quizás estaria bueno para una empresa mas que para mi. Pero aunque parezca tedioso es muy bueno. Poder definir tiempos estimados y separar dichas tareas en huecos semanales. "Para la semana que viene tengo q definir esto". "Para la semana que viene tengo que hacer tal pantalla", etc. Nos da una visión de como viene nuestro proyecto y al ser hitos cortos nos motiva a que estemos todo el tiempo viendo avances y de esa forma no abandonar el proyecto por desgano.


10.- Publicar en producción.

    Si es una app subirla a los store correspondientes, si es una web subirla al hosting final donde vivirá. Está bueno armar scripts que ayuden con las tareas de subir archivos y configurar el servidor y la aplicacion/web


11.- Documentar!
    Si ya lo sé, esto es algo que no hace nadie pero es hiper! necesario. Si el proyecto prospera o si llegamos a necesitar sumar gente en un futuro la documentación técnica y funcional es de suma importancia debido a que nos evita miles de idas y vueltas para tratar de entender lo que hicimos en un principio.


12.- Armar campañas publicitarias.

    Hacer que nuestro proyecto se conozca, por redes sociales, boca en boca, si nos alcanza el dinero alguna publicidad en los medios. En fin no voy a indagar demasiado este punto porque da para hablar un montón.



13.- Vas a tener competencia, no te asustes.

    Si en algún momento mientras transitamos todos estos pasos vemos que alguien ya hizo algo similar a lo nuestro, no se desesperen y sigan adelante. Piensen en cuantas aplicaciones y sitios web similares hay y ahí están aun. Por ej, piensen en sitios para comprar y vender por internet. Hay muchas y todas viven. Asi que adelante! Logren destacarse de la competencia para así lograr el éxito.


En resumen, sea cual sea la idea que quieran desarrollar lo mas importante es que lo hagan con pasión. Si hacen un proyecto solamente por el fin de ganar dinero, están fritos. Primero está la idea, después los beneficios. Disfruten de lo que hagan que de esa forma van a conseguir lograr lo que quieran.




lunes, 19 de marzo de 2018

Desarrollo mobile, nativo o multiplataforma?

Hace unos años atrás, cuando me hiso el clic de que debía aprender a programar mobile para poder progresar un poco, empecé a investigar de que iban esos lenguajes multiplataforma y que tan buenos o malos eran frente a programar nativo.

Al principio me marié un poco con los temas así que decidí arrancar con lo ya conocido, Android Nativo. Me bajé el Android Studio, instalé la SDK y a programar!. En ese momento no contaba con una compu muy poderosa y empece teniendo problemas para levantar la maquina virtual de Android y a tener un Android Studio que se arrastraba bastante. De todas maneras, lento y todo seguí aprendiendo el lenguaje. Llegó un momento que en parte por la lentitud de mi pc y por lo enroscado que se me estaba poniendo el codigo decidí ver si había alguna opción mas práctica que me permitiera programar mobile de forma mas fácil y vi que había plataformas unificadas para Android y Iphone y me puse a leer al respecto.

Arranque leyendo sobre cordova. Algo loco que, en resumidas cuentas, no es mas que un "mini apache" que te muestra webs en el celu como si fueran aplicaciones nativas. Pensé, "esto pinta bueno!!" Y empecé con un desarrollo para ponerlo a prueba.
Empece intentando hacer un juego de tuti-fruti. La programación se hacia muy simple ya que era programar web, algo que yo ya venia haciendo hace tiempo ya. Pero al no ser  nativo cuando la app empezó a tener cierta robustez me encontré con que no funcionaba del todo fluida. Leí sobre performances pero terminé desistiendo de Cordova debido que para apps mas complejas no resultaba del todo performante. Era muy bueno para apicaciones simples, pero no podia explotarlo por completo con cosas mas complejas o que requieran de mas funciones de hard del celular (ojo, que estoy hablando de Cordova de hace unos años, aclaro por si ahora la cosa es distinta).


Luego de darme cuenta que esto no me funcionaba del todo ooootra vez me puse a buscar alternativas nuevas y me topé con NativeScript, que como su nombre bien lo indica genera aplicaciones nativas multiplataforma. Me dejé seducir por el nombre y me dispuse a probarlo. Viniendo del mundo de Angular la verdad que la curba de aprendizaje fue muy empinada. Safando algunas particularidades que se usan exclusivas para mobile, el resto era como si estuviera programando una web. Muy bueno realmente. 
Ya llevo 2 años con native script y la verdad es una herramienta que la encontré super práctica para mis humildes desarrollos.


Para ir resumiendo, las distintas opciones que utilicé fueron:
Android nativo, lo mejor para programar mobile pero algo engorroso o lento para cuando necesitamos sacar trabajos en poco tiempo.
Ionoc, muy practico al ser multiplataforma pero al utilizar cordoba como base se ve afectada la performance.
Native Script, mas práctico aún que Ionic, multiplataforma pero! Generando apps nativas donde la performance no se ve tan comprometida.

Ya se que van a decir, hay otras opciones mas que seguramente son mejores que estas que no he nombrado, pero bueno no quería extenderme tanto y fui por las que a mi me resultaron mas significativas en mi aprendizaje.

Comenten si quieren y cuenten que soluciones les sirvieron a ustedes.


miércoles, 3 de enero de 2018

Sitios para aprender...

Hoy en día cualquier experiencia, conocimiento o consejo que necesitemos para realizar una tarea o aprender a ampliar nuestros conocimientos lo podemos encontrar simplemente introduciendo unas sencillas palabras en un buscador. Todo el conocimiento que queramos está en Internet, y cada vez hay más páginas que nacen con la intención de ofrecérnoslo de manera sencilla y directa.

El fin husmeando por internet me topé con una interesante lista de algo más de una treintena de páginas en las que aprender cosas nuevas. Estuve mirando muchos de esos sitios y me parecieron muy buenos asi que decidi listar los que mas me gustaron. Acà va la lista

Cursos online en castellano

  • edX: Una de las páginas punteras en cuanto a formación online se refiere. En ella podremos cursar cursos online en alguna de las mejores universidades.
  • Coursera: Se trata de una de las páginas de cursos online gratuitos más importantes del mundo.
  • Udemy: Se trata otro de los grandes en el mundo de los MOOC. En ella podremos encontrar todo tipo de cursos diseñados para la vida laboral real, y tanto en inglés como en castellano.
  • UPV X: La universidad politécnica de Valencia no se ha querido quedar atrás con las nuevas tecnologías, y también ha creado su propio catálogo de cursos online.
  • Miríada X: Otro potente portal de cursos online en español, el cual se centra en ofrecer los cursos de varias docenas de universidades de renombre, la mayoría de ellas españolas pero también con alguna internacional.
  • Google Actívate: Google no podría ser menos, y también tiene una pequeña plataformas de cursos online entre que destacan los de programación y analítica de datos.
  • Microsoft Virtual Academy: Microsoft tiene su propia academia virtual repleta de cursos online, en la que le presta una especial atención a los relacionados con el desarrollo.
  • Buscadores de cursos: Pero si no os apetece ir de uno en uno entre todos los cursos, el pasado mes de abril os listamos unos cuantos buscadores que os facilitarán la tarea de encontrar maneras para formaros online.

Cursos online en inglés

  • Future Learn: Otra potente portal con cursos de todo tipo que ya está a punto de alcanzar la mágica cifra de dos millones de inscritos.
  • CreatiLive: ¿Eres una persona creativa y quieres mejorar tus habilidades? En esta página encontrarás cursos especializados para fotografía, arte, música y un largo etcétera. Eso sí, la página está en inglés.
  • Lynda.com: Lynda Weinman ha conseguido triunfar como emprendedora gracias a su plataforma de cursos online. Por si esto fuera poco, la plataforma ha sido recientemente adquirida por LinkedIn, otra muestra de su enorme calidad. Eso sí, todo su contenido está en inglés.
  • Skillshare: Otra plataforma online en la que formarnos con cursos que nos ayudarán a mejorar todo tipo de habilidades. 
  • Curious: Si eres de los que en vez de tomar apuntes prefieres estar atento a las explicaciones de los profesores, este portal te ayudará a aprender a base de vídeos online.
  • Coursmos : Una página especializada en microcursos, para permitirnos aprender con ellos siempre que queramos y desde cualquier dispositivo.
  • Highbrow : Otra página especializada en microcursos, en la que tras registrarnos iremos recibiendo cada día en nuestro correo pequeños cursos de apenas cinco minutos de duración.

Programación

  • Code Academy: Posiblemente es una de las páginas para aprender a programar más importantes del mundo. Empezaremos a programar desde el minuto uno, incluso para decirle a la web nuestro nombre, y su contenido está disponible en español.
  • Programando.la: Otra completa página en la que aprender a programar gratis y en castellano. Tiene una gran variedad de temas y una buena colección de vídeos.
  • Aprendeaprogramar.com: Una completa comunidad en español con varios tutoriales para aprender a programar, y un foro dividido en lenguajes con el que recibirás la ayuda del resto de la comunidad.
  • Yo puedo programar: Una página que pone a nuestra disposición dos cursos básicos con los que ayudará a que los más pequeños se inicien en el mundo de la programación.
  • Code.org: Una plataforma online para aprender a programar a base de sencillos tutoriales. Tiene una sección en castellano, pero lamentablemente sin demasiado contenido.
  • Stuk.io : Otra página que promete enseñarnos a aprender desde cero, aunque lamentablemente sólo está disponible en inglés y portugués.
  • Programmr: Una de las páginas más completas a las que podemos acceder, y en la cual accederemos a un inmenso catálogo con el que aprenderemos a programar en una gran cantidad de lenguajes.
  • Udacity: Otra potente página para aprender a programar apoyada por gigantes como Google o Microsoft, que son algunas de las muchas empresas que reconocen el valor de sus Nano-grados formativos. Lamentablemente no tiene contenido en nuestro idioma.
  • Learnable : Otra potente página para aprender a programar, y otra que tampoco soporta el español.
  • Code School: La mejor manera de aprender a programar es practicando, y esa es la máxima de esta plataforma online.
  • Platzi: Como si acudieras a clase, en esta página podrás recibir formación en streaming sobre diseño, marketing y programación.
  • Dash: Una página especialmente dirigida a enseñarnos todo lo que necesitamos saber para aprender a hacer vistosas páginas web.
  • One Month: Una página que nos enseñará a programar aplicaciones web en un mes.
  • BaseRails: Aprende Ruby on Rails y varios lenguajes web más mediante todo tipo de proyectos diseñados para el mundo real.
  • Treehouse: Una página que nos enseñará a elaborar proyectos mientras aprendemos a programar mediante ejercicios, y con la que aprenderemos cómo construir desde aplicaciones móviles hasta páginas web.
  • KeepCoding: Esta plataforma de pago nace con el objetivo de ser una “boutique de formación" online, enfocada en el desarrollo mobile para formar Full Stack Developers.

Analítica

  • Metriplica: Una completa web con la que aprenderemos en castellano todos los secretos de la analítica web.
  • Analytics Academy: Está en inglés, pero Google pone a nuestra disposición un portal de aprendizaje con numerosos cursos dirigidos a la analítica y la utilización de Google Analytics
  • SoyData.net: La Ciencia de Datos a tu alcance. Una plataforma eLearning colaborativa sobre todo lo relativo a la ciencia de datos en español.
  • DataCamp: Una página en la que aprender R mediante tutoriales online y cursos de ciencias de datos
  • DataQuest: Una completa página en la que aprenderemos ciencias de datos cómodamente desde nuestro navegador.
  • DataMonkey: Página para aprender SQL y análisis de datos de forma interactiva, con ejemplos concretos y una inmersión total en el entorno laboral.

Idiomas

  • Duolingo: Página destinada al aprendizaje gratuito de idiomas que, lejos de limitarse a eso, también funciona como plataforma crowdsourcing de traducciones de textos. A medida que aprendemos un idioma vamos ayudando a traducir páginas. Presente en todas las plataformas móviles con aplicaciones para Android, iOS y Windows Phone
  • Memrise: Una página que busca enseñarnos un idioma utilizando técnicas de memorización mediante elementos visuales, auditivos o de cualquier otro tipo durante varias sesiones cortas.
  • Busuu: Se trata de una red social orientada a aprender a hablar, leer y escribir en 12 idiomas. Esta plataforma motiva a sus estudiantes mediante insignias, y les permite practicar lo aprendido con las interacciones sociales.
  • engVid: Una plataforma online y gratuita en la que podremos aprender ingles mediante más de 900 lecciones en vídeo.
  • Lingualia: Otra plataforma centrada en enseñar idiomas con los conceptos de las redes sociales, permitiéndonos hablar con nativos para que estos nos enseñen a comprender y entender mejor su idioma.
  • Babbel: Otra potente y conocida opción que nos permitirá aprender 12 idiomas permitiéndonos probar gratis su sistema mediante cursos para principiantes, pero que después nos pedirá pagar por nuestra formación.

Mejorar otras habilidades

  • Sharing Academy: La plataforma de clases particulares entre universitarios en la que cualquier universitario puede apuntarse y enseñar o aprender cualquier asignatura que domine o le cueste.
  • Coneecta: Se trata de una página en la que en la que podremos contactar mediante videoconferencias con expertos en las diferentes materias para las que necesitemos ayuda. Este no es un servicio gratuito, ya que los usuarios tendrán que pagar a los profesionales a cambio de sus servicios y enseñanzas.
  • Tareas Plus: Otra interesante página de cursos centrada en ofrecer un formato mucho más cercano a través de vídeos.
  • Khan Academy: Se trata de una organización educativa sin ánimo de lucro que pone a nuestra disposición todo tipo de cursos con varias temáticas.
  • TED-Ed: Una muy popular y reconocida plataforma online en la que podremos aprender diferentes cosas mediante vídeos online en inglés.
  • Peer 2 Peer University: El concepto del P2P llevado al aprendizaje. Una página en la que compartir nuestros conocimientos y aprender de los de los demás mediante un sistema igual que el de los cursos online.
  • Chess Academy: Una auténtica academia online, en inglés, pero en la que podremos aprender a jugar al ajedrez de manera gratuita mediante vídeos, resolución de problemas y partidas online.
  • Squareknot: Una curiosa página que nos propone aprender todo tipo de cosas mediante didácticas y visuales guías paso a paso.
  • Pianu: ¿Te gustaría aprender a tocar el piano? Esta página te ayuda al más puro estilo guitar hero sugiriéndote canciones que tendrás que ir replicando desde tu teclado.
  • Yousician: Otra página en la que si sabemos inglés podremos aprender a tocar la guitarra.
  • Freekampus: Es gratis pero también 100% legal mediante licencias Creative Commons. En esta plataforma cualquier usuario podrá compartir sus conocimientos creando sus propios cursos y aprender de los de los demás.
  • Learnist : Otra potente página en inglés en la que podremos tener cursos para aprender todo tipo de materias.
  • Open Education Consortium: En esta lista hemos mencionado varias universidades apostando por la iniciativa OpenCourseWare, y este es el consorcio que las agrupa a todas. Incluye un buscador de materiales didácticos en varios idiomas. También tiene una sección de lecciones en inglés que desbloquearás con una donación de 10 dólares.
Trate de resumir los sitios que mas me han gustado de una lista aun mas extensa. Espero que alguno de estos sitios les sea de utilidad.
Y si llegan a tener algun otro sitio interesante para aprender desde casa comenten a libre demanda, todo dato es bien recibido y compartido.



Bibliografía:Genbeta