¡Me han meneado el podcast! ;-)

Sí, para bien o para mal, me han "meneado el podcast" y ya están lloviendo las críticas... otra vez... y eso que van pocas personas que lo votan ;-)


Entrada en Menéame: "Debian Day: El Estado del Arte y PHP5"

Entrada en este blog sobre el podcast:
"Podcat: El Estado del Arte y PHP5"

PD: no se puede ser sincero, directo ni disruptivo en este mundo.

TallerPHP5: Resumen de comentarios y repaso nuestro "objetivo"

Han estado muy movidos los comentarios en distintos artículos de este blog, todos referentes al taller. Quiero recordarles que es muy práctico tener sindicado (rss) el blog (ya explicamos cómo) para estar notificados de forma ágil los cambios en el mismo. También cabe recordar, aunque es menos práctico e intuitivo, los comentarios sobre cada artículo (post) pueden ser a su vez sindicados, lo que permite saber cuando hay nuevas entradas en los mismos.

"No se desesperen" (cuadro de Franklin Aguirre)

Como sé que esto último es más pesado hacerlo, voy a ir haciendo resúmenes a través de artículos con todos los temas que he respondido en cada sección, ya que así será más visible y fácil de encontrar.

Nota: a mediano plazo contaremos con un wiki para terminar de formalizar la documentación del taller con todos los detalles del mismo, y este blog actualizará para ir contando los avances y las experiencias que nos vayan sucediendo, en un lenguaje menos formal y más entretenido ;-)

Resumen de comentarios y repaso nuestro "objetivo":
  • La idea del taller, para no perder el objetivo primario, es sobre PHP5 y la Programación Orientada a Objetos. No niego que es importante el diseño web en determinado plano, pero no es algo que vayamos a tocar en este momento en este taller.
  • También, tema que he discutido en algunos foros sobre proyectos de desarrollo para tratar de transmitir conocimientos, este taller no busca crear "la aplicación" ni "él framework", busca lograr transmitir "conceptos base" sobre la programación orientada a objetos usando en este caso PHP5 (pero que se podrían aplicar perfectamente con otros lenguajes).
  • Por lo tanto, sacrificaremos muchas cosas durante el camino (no buscamos hacer excelentes diseños, buscamos aprender), y tengo muy claro que mi objetivo no es el usuario experto, es el usuario que sabe de PHP pero no tiene idea de POO, o por lo pronto, tiene demasiadas dudas y no tiene un ejemplo, metodología o criterio para adoptar.
  • Este tema lo veo todos los días en foros especializados sobre el tema POO bajo PHP, y lo que busco es tratar de darles a todos esos usuarios / desarrolladores una forma de "ejercicio", de practicar, de sacarse dudas, y ponerlo en un contexto entretenido para todos, como si de un "juego de simulación" (empresa, teletrabajo, desarrollo, elearning, pasantía, etc) estuviéramos hablando.
  • No quita que en un futuro pueda extenderse el tiempo del taller (actualmente son solo 2 meses que seguro se van a ir volando), tal vez hacer otros talleres de temas más especializados (nosotros ahora solo vamos a dar "una base", los conceptos), y que más adelante cambiemos la forma de hacerlo según las experiencias adquiridas.
  • No quiero basarme mucho en lo "ya hecho", quiero hacer una experiencia de cero para ver en qué concluimos. Hay una frase que dice: "no sabían que era imposible, por eso lo lograron" ;-)
  • Toda esta experiencia es nueva para mi, y no sé si hay algún antecedente para un proyecto como el que se está planteando aquí.
  • Por lo pronto los puestos de "líderes de equipo" fueron ofrecidos primeramente a mis ex-alumnos del curso presencial, por razones meramente prácticas: sé los temas que vieron, cuanto los dominan, sus debilidades y fortalezas ;-) y casi se puede decir que hablamos "el mismo idioma".
  • De todas formas, por ahora solo son 5 líderes asignados, tal vez nos quedemos cortos, hay que esperar por el número real de personas que se inscriban al taller (primeros días de febrero).
  • Por eso cuando se den de alta en el taller se les va a hacer un cuestionario para saber sus conocimientos sobre los temas que veremos, y luego poder tomar una decisión e invitar a algunos que califiquen con el perfil a tomar el puesto de "líder de grupo".
  • Hay muchas cosas que no están formalmente resueltas, sí tengo criterios y sentido común. Si hay un líder deficiente también es parte del juego y la experiencia, y hay que tomar medidas para, primero, detectarlo, segundo, corregirlo, o tercero, cambiar por otro. De la misma forma si falla algún desarrollador del equipo. Y también, y no es menor, si yo mismo fallo como Gerente de Proyecto, por lo que tengo que aprender a resolver los problemas que se presenten, a delegar y apoyarte en otros. Es muy común ver en América Latina el "gerente autosuficiente", que no delega, y quiere que todo se centralice en él. En este caso no va a poder ser así.
  • Pero muchas de estas cosas se irán puliendo en la marcha, y tal vez, haciendo consulta con los demás "líderes" para llegar a un consenso y poder ser más creativos que una sola persona pensando.
  • Pero como digo, no busquen la perfección en el taller pues no es la idea. Cuanto más real, más parecido a una empresa y a la vida real, mejor. Tal vez para hacer un taller bueno hay que hacer 3 o 4 veces este proceso y acumular experiencia.
  • "La idea" (no te olvides que todo es un borrador, voy a intentar hacer un estilo de "gestión ágil") es interactuar con los líderes constantemente, dar sugerencias, directivas, e intentar discutir los diseños con ellos para que luego los discutan con ustedes, los alumnos.
  • Cada grupo va a tener un sistema concreto para desarrollar. Cada lider lo tendrá a cargo, las decisiones, la delegación de tareas a su equipo, y mantenerme informado constantemente.
  • Esa es la idea. Y toda la experiencia la quiero ir documentando en el blog, por lo tanto, nada debería perderse.
Por ahora es esto, cuando se requiera haré otro artículo resumiendo las novedades.

Falta menos, no se desesperen ;-)

TallerPHP5: representación gráfica de lo que vamos a intentar hacer


De a ratos pienso en todos los detalles que tengo que tener en cuenta, que no hay trabajo más complejo que hacer las cosas "simples", y finalmente, que todo lo vamos a ir construyendo sobre la marcha... y me vino a la mente este video que había visto hace unas semanas! ;-)

TallerPHP5: respondo las consultas que he recibido por correo

He recibido últimamente muchos correos y comentarios respecto al taller, y verdaderamente estoy muy contento por el interés sobre el mismo (ver mapa). Esto demuestra una vez más que no estoy equivocado al pensar que muchos desarrolladores se han quedado en la "programación básica" (scripting, procedural) y quieren pasar al "siguiente nivel", la Programación Orientada a Objetos (POO). También es un indicio que creo que confirma que no existen buenos libros o materiales que aborden medianamente de forma sencilla y pragmática el tema de la POO sobre PHP, y en particular, sobre la versión 5 en adelante. También puede jugar otro factor: el idioma, donde aún más se reduce la cantidad de material "bueno" disponible en nuestro propio idioma (he visto innumerables libros y discrepo con casi todos, el tema se aborda de forma innecesariamente compleja).

Espero poder aportar una solución al respecto transmitiendo mi experiencia en el área, criterios adoptados, metodologías implementadas, todo abordado de forma directa y simple.

Lo que voy a hacer a continuación es responder las dudas que he recibido y comentarles algunos detalles que tengo en mente para aplicarlos al taller.

Primero, algunas puntualizaciones / aclaraciones
  • Es un taller "piloto": esta es mi primer experiencia real armando un taller a distancia. A pesar de contar con experiencia en el tema a tratar y haber dictado varios cursos, estos fueron fundamentalmente "presenciales" (docente y alumnos cara a cara). Por esa razón vuelvo a aclarar: quiero investigar y adquirir experiencia en este nueva área, por lo tanto iremos haciendo "camino al andar" y experimentando durante el proceso. Por lo tanto, cometeremos errores y el transcurso no será perfecto.
  • Es un taller, no es un curso: ni es un taller presencial, es a distancia, por lo cual la metodología y la forma de dictarlo cambia notablemente. Tanto para ustedes como para mi. Y recalco el concepto de taller: un curso se piensa muchas veces con un docente delante de un pizarrón dictando y explicando un tema. En un taller la óptica y la didáctica cambian notablemente: se debe ser mucho más práctico y directo. La idea es que el taller lo armamos todos, yo aporto mis conocimientos en el tema y lo gestiono como si fuera una "empresa", asignaremos temas / desafíos / problemas a resolver / solicitud de informes / etc y tendrán una semana para resolverlos. Esta es al unidad de tiempo que me parece más productiva.
  • La mayor parte del trabajo la tienen que hacer ustedes: como decía en el punto anterior, esto no es un curso y no es "pasivo", ustedes van a tener que resolver las tareas que se les van a ir proponiendo, por lo tanto su progreso dependerá directamente del esfuerzo que apliquen para cumplirlas. Yo me encargaré de mantener la organización y la gestión global del taller.
  • Se busca que aprendan "a aprender": no se dará nada digerido de antemano. Tendrán que resolver muchos problemas de cero, y tendrán que ser "autodidactas", como sucede siempre durante nuestra vida profesional.
  • Pretendo que el temario sea real y sumamente práctico: busco crear un contexto similar al de estar trabajando para una empresa de desarrollo web a distancia. Usaremos muchas herramientas y metodologías que he usado en trabajos con estas características. Por lo tanto, sumaríamos no solo experiencia en POO sobre PHP5, sino también en "teletrabajo" y en desarrollo real de aplicaciones web.
  • Tiempo de dedicación: mi idea es que el taller no debe ser extremadamente exigente, por lo que se dividirá en tareas semanales que podrán ser realizadas en cualquier momento de la semana, eso dependerá de la administración que hagamos cada uno sobre nuestro tiempo personal. Es mi opinión que así debería ser en un contexto de "teletrabajo profesional", no que alguien te obligue a estar permanentemente disponible 8 horas diarias a través de un msn, skype o gtalk (eso es esclavitud a distancia).
  • Dos etapas claras, "nivelación y desarrollo real": el primer mes será "nivelador", tratando de tocar de la forma más simple y directa todos los conceptos y las herramientas base para poder trabajar en la siguiente etapa. El segundo mes se dividirán en varios grupos con un "líder" para cada uno, donde yo interactuaré con ellos para que luego dividan los trabajos y asignen responsabilidades a pequeños equipos de no más de dos personas. Y la idea es que la dificultad sea progresiva e ir aprendiendo con la práctica, aplicando los conceptos y recibiendo constantemente correcciones y sugerencias.
  • Esfuerzo y compromiso: a pesar de que el taller es gratuito, la idea es que exista un compromiso para cumplir cada cada tarea asignada. Buscaré reproducir "mi ideal" de empresa de "trabajo a distancia", quién no cumpla mínimamente con lo asignado será retirado del taller (como sucedería en cualquier empresa normal).
  • Mi rol será el de BDFL ;-): o en otras palabras, un seudo "Gerente de Proyecto" que dictará las órdenes a diestra y siniestra, tratando de buscar la mejor forma de transmitir "conocimientos base" sobre desarrollo orientado a objetos usando PHP5 y un conjunto de herramientas y metodologías, y en lo posible, de la forma más sencilla que se me ocurra.
La idea global es fingir que estamos en una empresa, pero vuelvo a repetir, es un "taller piloto" y estaremos haciendo muchas pruebas y cometiendo muchos errores. Por lo tanto, hay que tener paciencia, y muchas de las características que quiero aplicar son "ideas e intenciones" que espero que la realidad me permita implementarlas.

Espero vuestros comentarios, sugerencias y críticas ;-)

TallerPHP5: ¡Registrate en el mapa!

Estimados todos, estoy trabajando en los preparativos del taller y dentro poco iré subiendo en este blog los detalles sobre el mismo para irnos enterando como va a ser la forma de trabajo, que herramientas vamos a utilizar y cuales son las reglas para participar.

Por lo pronto he creado un "mapa" para que nos vayamos registrando y de alguna forma conociendo un poco más, de que países nos estamos acercando, cuantos somos, etc.

Primer requisito: usen información "real", fotos reales, acostumbren a "dar la cara". Todos sabemos que es casi imposible ser "anónimos" en Internet, por lo tanto, usemos esta situación a nuestro favor y publiciten su persona. Ustedes son "el producto", muestren sus trabajos y compartan sus conocimientos, aprendan a construir una "red social" de contactos. El ser humano es indefectiblemente un "ser social".



No se olviden de suscribirse al blog (rss) para estar al tanto de las novedades sin tener que visitar todos los días para confirmar si hay cambios en el sitio. Pueden ayudarse con una herramienta como Google Reader y el procedimiento es muy simple: copian la dirección del blog y la agregan con la opción "Add Subscription".

Dentro de unos pocos días más información ;-)

Regalo de Reyes: ¡Inscribite al primer taller a distancia sobre PHP5!

Luego de leer muchos comentarios en el blog y en mi correo personal solicitando información, material, además de mi fallido intento de hacer un podcast del curso (por falta de los recursos necesarios), complicaciones en mi agenda de compromisos, etc... voy a iniciar mi primer "prueba piloto":


Hacer el primer taller a distancia (gratuito) sobre toda la temática que fue tratada en el curso que he dictado recientemente: Desarrollo de Sistemas Web (OO) con PHP5

La idea es armar varios grupos a distancia que deseen fundamentalmente aprender desarrollo de sistemas Orientados a Objetos usando PHP5. El requisito fundamental será contar con conocimientos base en programación PHP, no se necesita saber de Objetos, contar con una lista de herramientas y una serie de reglas que deberán cumplirse tanto para inscribirse como para permanecer en el taller. Podremos tener un contacto más directo y organizado a través de una estructura formal de trabajo.

Lo fundamental es reproducir progresivamente un entorno de desarrollo similar a cualquier empresa, pero con el diferencial de hacerlo a distancia, buscando incrementar la experiencia no solo en el desarrollo de sistemas, sino, en el teletrabajo de forma "profesional" (no las comunes estafas que existen en Internet).

Evidentemente esto no será el sustituto a un curso presencial de 6 horas semanales, 4 meses, pero buscará seguir experiencias sobre educación a distancia que permitirán plantear desafíos semanales a ser sorteados por equipos de desarrolladores (hay que aprender a trabajar en equipo, no podemos seguir estando solos en el desarrollo).

Mi primera generación de alumnos -del curso presencial- ya está directamente invitada a participar para poder seguir ahondando en conocimientos y experiencia, junto a ustedes. Quiero aclarar que esto no es una competencia entre todos, esto es trabajo grupal, donde la verdadera competencia se da contra uno mismo y su propia ignorancia, y entre todos nos retroalimentaremos.

Hay algunos detalles que quiero terminar de pulir, pero no busco la perfección, lo importante es hacerlo a pesar de los errores y equivocaciones que podamos cometer en el proceso. Lo importante es aprender en base a los errores.

Estimo que daremos inicio los primeros días de febrero 2007 y la duración rondará los dos meses, aproximadamente
.

¿Bueno, estoy cumpliendo las expectativas? ;-)

Espero vuestros comentarios y sugerencias.

¡Feliz Reyes Magos!

"¡Que fácil que caemos en las guerras entre lenguajes/plataformas!"

Cuando escribí el post sobre que los desarrolladores de PHP debíamos profesionalizarnos (inspirado en una respuesta que di en forosdelweb.com), un colega subió el mismo a Menéame (famoso sistema de promoción de noticias) y este generó un pico abrupto de nuevas visitas a este blog. Entre medio del proceso de votación que posibilita a que este artículo pasara de "la zona de revisión" a "la portada" de Menéame, se dieron algunas discusiones entre usuarios lo cual fácilmente derivo en la clásica lucha entre "lenguajes / tecnologías" (lo cual no aporta nada útil).

Esta es mi opinión sobre el tema, que aprovecho a rescatarla y dejarla "vigente" en el blog del autor (o sea, yo ;-) y terminar de reforzar la idea que intento transmitir en cada artículo que escribo, curso que dicto o charla en la que participo:

La idea de mi artículo (si, soy el atrevido que escribió esto ;)) es hacer reflexionar a los "programadores php" que con solo scripting no se hacen sistemas medios en adelante... y eso no es solo por un tema de "falta de plataforma" (porque al día de hoy PHP sigue siendo "solo un lenguaje" pero que se puede complementar con un conjunto de herramientas) es también un tema de "falta de mentalidad de desarrolladores", donde la gran mayoría de los programadores desconoce los conceptos básicos de la POO.

En mi muy humilde opinión, si tomamos en cuenta el avance en las plataformas más populares, como Java o .Net, los conocimientos de los programadores han quedado en el pasado bordeando en la actualidad el "analfabetismo" en todo lo que concierne OO, Diseño, Patrones, etc. **

PHP5 incorpora el manejo de "interfaces", pero al día de hoy es habitual hablar con desarrolladores que no entienden siquiera el concepto que hay detrás, ni la diferencia entre "programar orientado a la implementación" versus "programar orientado a la interfaz", donde la mayoría de los principios de diseño te sugieren que tus diseños dependan de "implementaciones abstractas" y no de "implementaciones concretas" (para obtener los beneficios tan publicitados del paradigma: flexibilidad, mantenibilidad y reusabilidad).

Y todo esto se hace con la ayuda de las "interfaces" (que no es, como he escuchado decir, para poder implementar "herencia múltiple"... estrategia desaconsejada que difícilmente verás implementada en un patrón de diseño).

Estas grandes carencias las percibo habiendo estado muy poco tiempo estudiando estos temas desde la óptica del mundo Java (muchos de los conceptos que quiero transmitirles a los programadores php, para que abran su cabeza, aquí son elementales). Cuando se liberó la versión 5 de PHP y al ver que implementaban la mayoría de las características que tiene cualquier lenguaje OO (interfaces, visibilidad de atributos y métodos, abstract, etc) me di cuenta que era perfectamente directo pasar los conocimientos y experiencias de un lado a otro.

Pero todo esto te das cuenta cuando vienes de una plataforma, de una arquitectura; si siempre estuviste "dentro" del ambiente PHP, ni te percatas de los grandes cambios que puedes hacer y del salto que pueden hacer tus sistemas.

No fue solo un agregado menor en la sintaxis.

Eso es lo que intento transmitir. ;)

Frase: "los nuevos frameworks MVC"

"Dicen que la nuevas tecnologías, como en este caso los nuevos frameworks MVC, nos permiten seguir haciendo sistemas espantosos pero más rápido."

Respuesta dada en Foros del Web a colación sobre el actual fanatismo imperante sobre el uso y abuso de los frameworks para PHP (todos los días nace uno nuevo), donde aparentemente solo se necesita saber implementar el patrón MVC para poder desarrollar un sistema decentemente.

Entradas populares