style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Del problema al código en 4 pasos - Con iteraciones

Los cuatro pasos que escribí aquí: http://bit.ly/DelProblemaAlCodigoEn4Pasos son un hiper-resumen de varias metodologías de desarrollo que metidas a una licuadora y en mi propia interpretación pueden ayudar a pasar de la definición del problema al código.

Funcionan muy bien para problemas pequeños, pero podrían parecer insuficientes para un problema más grande ( o un proyecto profesional ) pero no lo son. Son la base de la programación y muchos programadores experimentados los siguen aplicando, aunque en forma tan automática que no se dan cuenta.

El primero paso es entender el problema y muchas veces eso es lo primero que falla.

"...el primer paso para obtener lo que quieres, es saber lo que quieres..."

Pero, no te desesperes si no entiendes tu problema de un jalón. Es muy común que en proyectos grandes no se logre entender en su totalidad el problema de un solo golpe, y definitivamente intentar codificarlo todo y pretender que funcione a la primera es totalmente irreal.

Usar Iteraciones

Varios procesos de desarrollo de software ( SDP ) como en el UP se plantea que se hagan iteraciones para completar el proyecto, donde en cada iteración se avance un poco hasta que finalmente se pueda completar en su totalidad.

UP iterations

Iterative development in the Unified process: Fuente Wikipedia

Los 4 pasos que mencioné son básicamente las mismas disciplinas que aparecen en este diagrama y se "mapearian" así:

Paso 1.- Entender el problema
Sería: Business Modeling + Requirements


Paso 2.- Identificar variables y funciones
Sería:Analysis


Paso 3.- Escribir pseudo-codigo
Sería: Design


Paso 4.- Escribir código
Sería:Implementation + Tests

Luego entonces también se puede aplicar esos 4 pasos de forma iterativa.

Cada iteración es un conjunto de tiempo bien definido ( ejemplo 3 días, el 4to día ya es de la segunda iteración ).

El objetivo es tener al final de cada iteración algo que funcione aunque sea una pantallita e ir incrementando la funcionalidad en las siguientes iteraciones.

En cada iteración se ejecuta un poco de los 4 pasos ( en el diagrama en las primera iteración se hace más "Business Modeling" que de "Test" )

Conforme se va avanzando, se va a ir entendiendo más y más el problema y se va a ir teniendo, dos pantallas, tres pantallas etc. etc. hasta que se termine el proyecto.

¿Por que en iteraciones?

La razón es muy simple, te habrás podido dar cuenta de lo que pasa si lo intentas hacer todo en un jalón. El problema parece muy grande, estas continuamente quitando y poniendo código, hay veces que no sabes ni donde estás parado etc.

El enfoque en hacer iteraciones es precisamente dividir esa tarea grande en pedazos que puedas manejar e ir creciendo la aplicación incrementalmente.

Por ejemplo, en la primera iteración no pretendas entender el problema al 100% Quizá un buen inicio sería entenderlo al 50% y en las siguientes iteraciones en 30%, 10%, 5%, 3%, 1%.

Así entenderás mejor problemas que no podías ver en un principio y quizá descartes otras cosas y te des cuenta que no son necesarias como creías inicialmente.

De la misma manera, no pretendas codificarlo todo de un solo golpe, en la primera iteración haces una pantalla chiquita, que funcione y conforme vas avanzando vas codificando más y más.

¿Como aplicar esto a mi problema?

Esta es la parte bonita. Pensarás "Bueno si, pero como le hago?" Aplicando este modelo iterativo haz lo siguiente:

  • Fija el tiempo de tus iteraciones - Puede ser 1 o 2 días ( en proyecto grandes donde hayan 10 - 15 personas trabajando simultáneamente pueden ser hasta de 15 días, pero no más )
  • Ejecuta los 4 pasos en cada iteración haciendo más énfasis en unos de ellos y menos en otro.
  • Deja el número de iteraciones abierto así puedes dejar de preocuparte en intentar resolver todo.
  • Haz el código hasta que hayas ejecutados los tres pasos anteriores ( identificado el problema, analizarlo y escrito el algoritmo )
  • Cuando tengas dudas especificas y concretas de como hacer algo en Java, entonces pregunta especifica y concretamente.

    Por ejemplo:

    -Como puedo hacer un for que me diga todos lo dias de la semana?
    - Tengo una clase profesor así: public class Professor { etc. etc Y necesito que tenga un método que se llame "isFree"

    Y entonces veras que se te puede ayudar mucho más fácilmente.

    Algo que dificulta mucho proporcionar ayuda es:

    -Ni programa no jala..... Java no funciona por que me sale un error

    Por que no sabemos que es lo que no jala, cual es el error, o por que dices que no te funciona.

Finalmente

Un papel importante es la experiencia que cada quién va adquiriendo con el tiempo. Muchos de estos pasos, están interiorizados y cuando ya llevas varias miles de líneas de código de vuelo ya no los piensas. Pero la única forma hasta ahora es practicar y practicar.

Al menos hasta que haya un programa con el que podamos decir: I know Kung-Fu Yeah!!

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de rodrigo salado anaya

:P

Jajajaja que chido, me cae que eres la neta carnal, I Know Kung-Fu, Buen aporte, nos leemos pronto bye ó_Ó.

Iteraciones...claro

Se parcece mucho a la metodología de análisis estructurado :

  1. Análisis
  2. Diseño
  3. Programación
  4. Implementación

Yo estoy ocupando dos metodologías MDAE y DSDM se parecen mucho... buen post

SALUDOS :)

Imagen de iquirce

excelente

mae la vdd soy nuevo en esto.. y este post me ha aclarado muchas dudas muy bn post...

Imagen de Shadonwk

que onda mi buen Oscar,

que onda mi buen Oscar, siguiendo un poco tu manera de redactar, escribi un post, para cuando te piden utilizar una nueva herramienta de trabajo, (software) y no sabes ni por donde empezar, lo comparto con ustedes..

http://robertoleon.com.mx/como-sobrevivir-al-trabajo-de-desarrollador-en...

Ya leí tu post.

Coincido. Y parece que este tipo de cosas son las que se adquieren a la mala, o sea en el camino. Quizá deberías de postear el contenido aquí también.

Saludos.

Imagen de JaimeItlzc

Me va servir

Me va servir mucho @OscarRyz y @Shadonwk(Publicalo aqui en el foro), me servira mucho por que voy iniciar una materia precisamente lo que ustedes hablan la materia se llama Estructura de Datos del 3 semestre Ing.Sistemas C~ asi que es muy buen post.

Saludos.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">