"Si deseas empezar y desarrollar algo grandioso, no necesitas millones de dólares de capitalización. Necesitas suficiente pizza y Diet Coke en la nevera, una PC barata y trabajo y dedicación para realizar tu idea."
---John Carmack
visto en: hackification
Mencionábamos sobre la metodología ágil de desarrollo SCRUM permite, entre otras cosas, involucrar al cliente durante todo el proceso de desarrollo, además de motivar constantemente al equipo de trabajo a través de breves reuniones diarias. Todo el equipo conoce perfectamente en qué punto del desarrollo se encuentra el proyecto y qué falta por hacer.
¿Cómo aplicarías SCRUM? Aquí les dejo un ejemplo o plantilla de cómo se podría llevar aplicar:
Etapa 1: Toma de requerimientos.
Definición del "Product Backlog", el cual corresponde a todas las tareas, requerimientos o funcionalidades a realizar. Esta información será recopilada a través de reuniones entre el "Scrum Team" y el "Product Owner".
Etapa 2: Análisis de requerimientos y Diseño Arquitectónico.
Se analizará el "Product Backlog" y a través de éste se generará el diseño base del sistema, el cual involucra por ejemplo: modelo de base de datos, principales módulos del sistema.
Etapa 3: Desarrollo del Sistema.
Durante todo el proceso de desarrollo, el equipo de trabajo realizará reuniones diarias de 15 a 30 minutos, denominadas "Daily Scrum Meeting". El objetivo de éstas es que todo el equipo de trabajo se entere del estado de las diversas tareas y se resuelvan dudas que puedan surgir en éste proceso.
Mediante las "Sprint Planning Meeting" se definirán los diversos "Sprint Backlog" (conjunto de requerimientos que equivalen a un incremento del sistema), los cuales contemplarán parte de las funcionalidades descritas en el "Product Backlog". Los "Sprint Backlogs" tendrán una duración ideal de 2 semanas.
En esta fase se genera un documento que indica los objetivos del "Sprint" denominado "Sprint Goal".
Una vez finalizado un "Sprint Backlog", se realizará una reunión denominada "Sprint Review" donde se mostrará al "Product Owner" los avances realizados. Éste podrá revisar la entrega y hará las observaciones correspondientes.
Por último, se inicia el "Sprint Retrospective". Donde se marcan los aspectos positivos (para repetirlos) y los aspectos negativos (para no repetirlos) experimentados en el "Spring Backlog".
El ciclo se repite hasta abarcar todas las funcionalidades descritas en el "Product Backlog".
Etapa 4: Aceptación y entrega del Producto.
Contempla las siguientes tareas:
Entrega del Sistema.
A grandes rasgos se puede decir que SCRUM es una Metodología Ágil de desarrollo de software que se concentra en cómo los miembros del equipo deberían funcionar (comunicarse, trabajar, etc.), a fin de producir un sistema flexible en un entorno que cambia constantemente.
La filosofía de SCRUM está en involucrar, motivar y mantener constantemente informado sobre el estado del proyecto a el equipo de trabajo y el cliente.
Es una metodología que, para cumplirla, requiere de mucha responsabilidad por parte del equipo de trabajo. El cual consta de un jefe de proyecto, un equipo de desarrollo y el cliente.
Hoy en día muchas empresas están adoptando ésta metodología debido a su fácil implantación y adaptabilidad a cambios.
Es tan simple que lo más probable (si es que has participado en proyectos en tu trabajo, universidad o instituto) hayas afrontado un proyecto de una manera muy similar (más adelante publicaré un "ejemplo de cómo se podría ejecutar SCRUM").
A continuación definiremos los roles y conceptos de SCRUM.
Roles:
Actividades principales:
"Mucho del software hoy en día se parece a una pirámide egipcia: con millones de ladrillos apilados uno encima del otro, sin integridad estructural y hecho por pura fuerza bruta y miles de esclavos."
--Alan Kay
visto en: hackification
Como habíamos mencionado en el primer post de python, éste es un lenguaje de tipado dinámico pero al mismo tiempo fuertemente tipado.
En python tenemos los siguientes tipos básicos:
- Boleanos
- Números (Enteros, decimales y complejos)
- Cadenas de Texto
Sintaxis para declarar boleanos:
algoVerdadero = True algoFalso = False
Sintaxis para declarar números:
#Asi de declaran variables de tipo entero numeroPositivo = 10 numeroNegativo = -15 #Una variable float numeroFloat = 2.0254
Operadores numéricos:
a = 5.0 b = 3.0 print( a+b ) #imprime -> 8.0 print( a-b ) #imprime -> 2.0 print( a*b ) #imprime -> 15.0 print( b**b ) #imprime -> 9.0, representa 3.0^3.0 (potencia) print( a/5 ) #imprime -> 1.6666 print( a//5 ) #imprime -> 1, es el resultado entero de la división print( a%5 ) #imprime -> 2, es el resto de la división
Sintaxis para declarar cadenas de texto
a = "Hola" b = " Mundo" print( a+b ) #imprime "Hola Mundo" print( a+(b*2) ) #imprime "Hola Mundo Mundo"
Si quieres comenzar a desarrollar en Python en ESTE LINK encontrarás información sobre el interprete e IDEs.

En el post anterior (Click Aquí) vimos una pequeña pincelada sobre Python y algunos de sus conceptos.
Ahora bien ¿Qué herramientas de desarrollo podemos ocupar para programar en Python?
Partiendo por lo más básico cuándo instalamos el intérprete de python, éste viene con un IDE gráfico integrado llamado IDLE.
Ahora bien, si queremos algo más sofisticado y gratis, tenemos a nuestro querido amigo Eclipse IDE el cual debemos complementar instalando el plugin PyDev. Con esto tendremos resaltado de sintaxis, autocompletado de código, refactorización, resalte de errores, etc.
Otros IDE gratis son: BOA Constructor y Eric.
En lo personal utilizo Eclipse+PyDev y funciona muy bien.
Si tienes alguna duda sobre cómo configurar Eclipse para programar en Python, comentala y te ayudaré.
Saludos.-
"Cualquier tonto puede escribir código que un ordenador entiende. Los buenos programadores escriben código que los humanos pueden entender."
--Martin Fowler
visto en: hackification