Desarrollo de aplicaciones con Django en MacOS High Sierra

En este artículo quiero comenzar a introducir mis experiencias en el desarrollo de aplicaciones con Django en un equipo Mac OS High Sierra. El sistema operativo como ya lo mencioné es macOS High Sierra versión 10.13.2, procesador: Intel Core i5 2.5 Ghz, memoria ram: 8 GB 1600 Mhz DDR3. La versión de Python es la 3.6.3 y la versión de Django es la 1.11.7, para los desarrollos de prueba utilicé la base de datos MySql 5.7.20.

Para que funcione Django tanto desde la terminal como desde Eclipse, que es el IDE que utilizo para programar, copié la carpeta de Django al directorio donde se encuentra instalado Python3 en Mac: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/

Por otra parte, también creé una carpeta para colocar mis aplicaciones de prueba en el directorio raíz del usuario en Mac: /Users/abrun/Documents/workspace-django
Para la administración de la base de datos Mysql, instalé PhpMyAdmin 3 y activé el servidor apache que trae por defecto MacOS, así como PHP que también viene por defecto con MacOS.

Una vez instaladas todas las herramientas adecuadas, es importante comenzar con la puesta en marcha del desarrollo, para esto, se debe crear la base de datos, yo lo realizo mediante PhpMyAdmin que facilita esta acción.

Luego se debe crear la aplicación en Django, lo que se realiza mediante el siguiente comando desde la terminal de MacOS ubicado en el directorio donde queremos que quede esta aplicación:

django-admin startproject mysite

donde mysite corresponde al nombre que se le quiere poner a la aplicación. Este comando crea un contenedor donde se podrán colocar todas las aplicaciones que pertenezcan a esta aplicación principal. Luego podemos proceder a crear la primera aplicación principal mediante el siguiente comando:
python3 manage.py startapp polls, ubicados en la terminal dentro del directorio creado con el comando anterior.

Luego se deben ejecutar los siguientes comandos desde la terminal de MacOS ubicado en el directorio de la aplicación que se acaba de crear:

$python3 manage.py migrate (Crea las tablas de las aplicaciones base de Django)
$python3 manage.py makemigrations polls (Crea sql para la aplicación polls)
$python3 manage.py migrate polls (Crea las tablas de la aplicación polls en la base de datos)
$python3 manage.py createsuperuser (Crea el usuario administrador para la aplicación polls)

Para poder ver funcionando la aplicación en el navegador web, se utiliza el servidor de desarrollo con el que viene Django, mediante el siguiente comando se pone en marcha este servidor de prueba:

$python3 manage.py runserver

Para detener el servidor, lo único que se debe realizar es presionar la combinación de teclas Ctrl+C

De esta manera doy comienzo a esta serie de artículos orientados al desarrollo de aplicaciones con Django sobre MacOS.

Evernote como herramienta de productividad

Desde hace cerca de 10 años tuve mi primer acercamiento a Evernote y mi primera impresión fue que era un bloc de notas adicional al que tenía mi Windows de esa época. En ese momento no le dí mucha importancia a lo que esta nueva aplicación podía hacer y lo usaba muy poco, principalmente para tomar notas básicas sin mayor complejidad y dejé esta aplicación de lado. Fue a comienzos del 2016 cuando retomé mis pasos con Evernote y pensé en darle una oportunidad a esta aplicación como mi asistente en mi camino por el mundo de la productividad y ha sido hasta el momento, una de las mejores decisiones que he podido tomar ya que se ha convertido en una de mis herramientas de cabecera para mantener mi productividad al máximo.
Actualmente utilizo la versión Evernote 6.13.3 en mi Mac OS High Sierra 10.13.2, así como las versiones móviles en mi iPhone y mi iPad con iOS 11.2.1 y la versión para Apple Watch.
 
Mi forma der gestionar las notas que tengo en Evernote, es mediante etiquetas y cuadernos (Notebooks), los cuales en mi caso los tengo clasificados de acuerdo a los temas que requiero para mi vida personal y profesional, por ejemplo: Salud, Finanzas, Blog, Casa, Material de consulta, Intereses, Tarjetas de presentación, Productividad, Project Management, Trabajo, etc.
Las etiquetas (Tags) son una parte importante en la gestión de notas ya que permiten ser un índice que facilite las opciones de búsqueda de las notas que se encuentran en los cuadernos. La clasificación de las notas por medio de etiquetas me facilita el aplicar el método GTD (Getting Things Done) para optimizar mi productividad diaria, entre mis etiquetas tengo las siguientes: .referencia, .estudio, finanzas, salud, trabajo, ver, leer, revisar, etc. De esta manera puedo organizar las notas en las que almaceno los videos que voy a ver más tarde (tag: ver), los artículos que me interesa leer después (tag: leer), los artículos o documentos pdf que quiero conservar como material de consulta (tag: .referencia), entre otras opciones. Cada vez que creo una nueva nota en Evernote, la nombro con la siguiente estructura: mes, día, año – Nombre de la nota, etiquetas asociadas, y la guardo en el libro correspondiente. Por ejemplo: 01042018 – Artículo Evernote, Tag: .blog, Notebook: Blog.
 
Evernote cuenta con un excelente motor de búsqueda, el cual permite encontrar prácticamente cualquier texto dentro de cualquier nota, incluyendo aquellas notas que hemos hecho con nuestra escritura a mano, busca dentro de documentos pdf también que hayamos podido agregar a nuestras notas e incluso es capaz de encontrar texto dentro de imágenes que se encuentren adjuntas en las notas. Teniendo en cuenta este excelente motor de búsqueda, la organización de las notas por medio de las etiquetas permite que sean encontradas con mucha facilidad y rapidez.
 
Dentro de los muchos usos que le doy a mi herramienta Evernote, se encuentra el de poder utilizarlo como un gestor de contactos, gracias a su capacidad de almacenar las tarjetas de presentación. Cada vez que recibo una tarjeta de presentación le tomo una foto desde Evernote y el sistema me detecta automáticamente la mayoría de la información que contiene la tarjeta como el nombre, el cargo, la empresa, el teléfono y el correo electrónico, con una precisión casi asombrosa. Adicionalmente almacena la tarjeta como una imagen también, por lo que tengo la información de facil acceso, incluso puedo activar una llamada al contacto desde Evernote, y la tarjeta original con sus imágenes, logos, etc.
 
Otra de las funcionalidades que más aprovecho de Evernote es la que me permite crear notas desde el correo electrónico, simplemente tengo que enviar un correo electrónico a la cuenta de correo que he configurado en mi Evernote y automáticamente me crea una nota en mi Inbox (es el nombre del cuaderno que tengo por defecto para todas las notas en Evernote, antes de moverla a su cuaderno adecuado), con el asunto del correo, me crea el título de la nota y el contenido del correo se convierte en el contenido de la nota. Si le agrego algunos comodines al asunto del correo, Evernote puede detectar que etiquetas le quiero asignar a la nota y en que cuaderno la quiero guardar también.
 
Al arrastrar y soltar un cuaderno sobre otro, Evernote automáticamente me crea una pila (stack) de estos cuadernos y asigna como nombre de la pila, el nombre del cuaderno “destino” seguido de la palabra stack. Esto permite agrupar los cuadernos que tengan algún tipo de relación, y de esta manera organizar aún más los cuadernos y las notas dentro de Evernote. Esto es especialmente útil cuando utilizas Evernote como una herramienta para  gestionar proyectos, algo en lo que profundizaremos más en otro artículo.
 
En conclusión, he encontrado en Evernote, una herramienta que me permite ir a una forma de trabajo comúnmente llamada “paperless”, ya que actualmente escaneo prácticamente todos los documentos que llegan a mis manos y los que no deba mantener de forma física son eliminados una vez son digitalizados y almacenados en Evernote.
 
Tengo acceso a prácticamente toda la información que requiero de una forma ágil y precisa, y en cualquier momento que la requiera ya que Evernote almacena todo en la nube y puedo utilizarlo desde cualquiera de mis dispositivos o simplemente desde un navegador web también.
 
La estructura de notas, cuadernos, etiquetas y pilas con la que trabajo actualmente, me permite tener claridad en la información que tengo y acceder a ella fácilmente. Evernote es una excelente herramienta con la que puedo mejorar mi forma de trabajar, aumentar mi productividad, reducir mis tiempos muertos, y reducir la cantidad de espacio físico asignado a documentos y archivos.

Mis primeros pasos en productividad

Comencé hace varios años a interesarme por la productividad, creo que lo hice como muchos, leyendo el excelente libro de David Allen, Organízate con eficacia (Título en español). La primera vez que lo leí, no lo leí completo y lo que hice fue imprimir el diagrama del flujo para ser más productivo, lo pegué en la cartelera frente a mi escritorio para verlo todos los días e intentar aplicarlo como lo entendí.

Organicé mi Outlook en carpetas incluyendo “Archivo, algún día, en espera, revisar”, comencé a utilizar la barra de tareas del Outlook para mi ToDo, asigné colores entre otros cambios que hice con la intención de ser más productivo. Funcionó en muchos aspectos laborales, podía hacerle mejor seguimiento a mis correos y pude llevar mi buzón a cero. Sin embargo era una herramienta que no encontré como llevarla a los demás aspectos de mi vida y que requería bastante gestión de mi parte para mantenerla actualizada.

Hace algunos meses, reactivé mi interés por la productividad y la organización personal efectiva, retomé la lectura del libro de David Allen y está vez lo terminé de leer y lo analicé con el objetivo de aplicar GTD de una forma que me sea útil para mis objetivos de organización.

Encuentro que ahora soy más productivo que antes, mantengo mis buzones de correo en cero diariamente, tengo mi mente mucho más despejada y ágil, dedico mayor tiempo a la lectura, mantengo todos mis asuntos bajo control. Pienso que el principal objetivo de la productividad no es hacer más cosas en menos tiempo, sino hacer lo que debes hacer y además tener tiempo para hacer lo que quieres hacer.

En próximas entradas de mi blog iré publicando las herramientas con las que trabajo actualmente y como las utilizo en mi día a día, entre ellas evernote, nozbe, wunderlist así como los conceptos básicos de GTD que aplico para mejorar mi productividad diariamente y los hábitos que he ido desarrollando para consolidar este objetivo.

Hábitos y productividad

Siempre he tenido el concepto personal de que soy una persona ordenada, gracias a las múltiples recomendaciones de mis padres durante mi infancia, y mientras estudié mi carrera de ingeniería adquirí también una personalidad metódica para hacer mis cosas. Sin embargo, me sorprendí mucho cuando comencé a interesarme por la productividad personal, ya que pude darme cuenta que prácticamente todos mis días se iban adaptando a las urgencias que fueran ocurriendo, a lo que me fuera acordando que debía hacer y a lo que las demás personas creían que yo debía hacer. Terminaba el día agotado, estresado, y por lo menos con la mitad de las cosas pendientes por hacer, en todos los aspectos de mi vida.

Al empezar a incorporar en mi vida el método GTD de David Allen, me encontré con la “revisión semanal”, la cual considero que es una parte fundamental del método ya que me permite revisar y estructurar todas mis actividades, así como realizar el segumiento de mis proyectos enfocado en mis metas. Para llevar a cabo esta revisión, era importante reservar tiempo en mi vida y ser constante, por lo que decidí agendarla en mi calendario como una reunión semanal conmigo. En mi caso personal, realizo esta reunión los lunes a las 6:30 a.m.

Para llegar a tiempo a mi reunión es necesario comenzar mi día temprano y para ello es importante finalizar mi día anterior temprano también. Por lo tanto me ví en la necesidad de comenzar a crear nuevos hábitos e ir modificando mi rutina diaria. Por lo que he leído en diferentes partes y diferentes autores, para crear un hábito se requiere aproximadamente 21 días, así que comencé todos los lunes a levantarme a las 6:00 a.m. También he leído que el hombre requiere por lo menos 7 horas de sueño, así que los domingos comencé a irme a la cama a las 11:00 p.m.

Sin embargo esta modificación de mi rutina no era suficiente para crear el hábito necesario que me permitiera mejorar mi productividad, así que comencé a realizarlo todos los días, incluyendo fines de semana, es la única forma que considero me ha funcionado para ser constante. Así que diariamente duermo de 11:00 p.m. a 6:00 a.m. y he podido incorporar nuevas actividades en mis rutinas diarias y nocturnas que me van ayudando a mejorar en diferentes aspectos de mi vida, por ejemplo ahora hago ejercicio, meditación, lectura, curso de inglés y preparo mi certificación PMP.

Considero que es importante tener una motivación que impulse no solo la creación sino la consistencia de nuevos hábitos para mejorar nuestra productividad personal.

Una pincelada sobre la Gestión de proyectos ágiles con Microsoft Sure Step Evolved

Basado en mi experiencia como jefe de proyectos en Chile, trabajando para una consultora especializada en la implementación de Microsoft Dynamics, pude comprobar que la implementación de proyectos bajo metodologías ágiles es una tendencia que están buscando las empresas de todos los rubros actualmente. Tuve la fortuna de implementar exitosamente más de una docena de proyectos, y en la mayoría de estos la tendencia fue trabajar con metodologías ágiles.

Actualmente Microsoft viene trabajando con una metodología que ellos desarrollaron llamada Microsoft Sure Step Evolved, enfocada en las implementaciones de proyectos de TI para la suite de productos Microsoft Dynamics, basada en el método iterativo, es una evolución de su metodología Microsoft Sure Step, la cual es una adaptación de la metodología en cascada.

La implementación de proyectos ágiles con la metodología Microsoft Sure Step Evolved, reduce la documentación y se enfoca principalmente en entregar incrementos de valor de producto con menores tiempos, aumentando la participación del cliente durante todos los ciclos de implementación del proyecto. Es importante resaltar que el involucramiento del cliente permite aumentar el éxito del proyecto, ya que satisface al máximo cada uno de los requerimientos del cliente incluídos dentro del alcance del proyecto, se mantiene la motivación y el nivel de participación del cliente, se reduce el doble trabajo y se optimizan al máximo los recursos, así mismo se fomenta una excelente relación cliente-proveedor que genera mejores frutos a futuro para ambas compañías manteniendo una relación a largo plazo.

El proceso de implementación con esta metodología se descompone principalmente en las siguientes etapas: diagnóstico, iniciación de proyecto, ejecución iterativa, estabilización, operación/despliegue y soporte.

Describiendo brevemente cada una de estas etapas podemos decir que durante la etapa de diagnóstico se establecen las metas del proyecto, se define el enunciado del trabajo y los términos contractuales; se realiza un bosquejo de toda la solución incluyendo los tiempos y el resultado deseado; se define la WBS general del proyecto y se formaliza la estructura del equipo de trabajo.

La etapa de iniciación de proyecto consiste en la preparación del proyecto en general, el involucramiento del equipo de trabajo para el proyecto, y en el caso de las implementaciones de Microsoft Dynamics, involucra también la preparación de los ambientes de configuración y pruebas, incluye igualmente el diseño del gobierno del proyecto y la reunion de inicio de proyecto.

En la etapa de ejecución iterativa se desarrolla el núcleo del proyecto ya que se define el estado de los futuros procesos de negocio, se definen y detallan los requerimientos funcionales, los datos y las integraciones necesarias. Así mismo, durante esta etapa se definen los diseños funcionales para los sistemas a implementar. En la etapa de ejecución iterativa se comienza con la construcción de la solución y comienza la interacción e iteración directa con el cliente.

Durante la etapa de estabilización se realizan todas las pruebas necesarias para comprobar la estabilidad del sistema implementado y su consistencia de acuerdo con las integraciones realizadas con otros sistemas. Es en esta etapa donde se realiza el mayor esfuerzo y trabajo en conjunto entre el cliente y la empresa que implementa el software para conseguir un sistema estable, funcional y que pueda satisfacer todos los requerimientos del cliente, planteados y acordados durante la definición del alcance del proyecto. Una vez que se han ejecutado y aprobado a satisfacción las pruebas del sistema implementado, así como también acordados los requerimientos que no podrán cumplirse dentro de las restricciones propuestas al proyecto, se realiza una reunion entre los representantes del cliente y de la empresa consultora para definir la puesta en operación del sistema implementado.

Operación, es la etapa en la cual se da la puesta en marcha del sistema implementado, se realizan las últimas pruebas de aceptación de los usuarios y se comienzan las capacitaciones a los usuarios finales y los administradores del sistema implementado. Una vez los usuarios están listos para comenzar a utilizar el nuevo sistema, se realiza la migración del sistema desde el servidor de configuración hacia el servidor definitivo en producción y comienzan los usuarios a trabajar en la nueva aplicación.

La etapa de soporte consiste principalmente en identificar nuevas necesidades del negocio o de los usuarios durante el uso del sistema implementado y planear posibles nuevos planes de trabajo y mejoras.

La metodología Microsoft Sure Step Evolved es un excelente acercamiento a la implementación exitosa de proyectos ágiles aportando en calidad y optimización de recursos para conseguir la satisfacción del cliente y obteniendo relaciones duraderas.

Mayor información en español: http://www.comunidad365.com/