Cursos: grupos conformados para iniciar el lunes 30/3 (actualizado 12/4)

Aquí los nominados al "Gran Hermano 2009"

"POO C/Libro"

  1. Oscar Andrés (Colombia)
  2. Carlos (Perú)
  3. Gustavo Adolfo (Colombia)
  4. Francisco Alonso (Colombia)
  5. Christian (Perú)
  6. Jorge Hernán (Colombia)
  7. Diego (Argentina)
  8. Daniel (Chile)
  9. Fabio (Colombia)
  10. Carlos Javier (Colombia)
"Introducción a Zend Framework"
  1. Gastón Omar (México)
  2. Hector (España)
  3. Walter (Perú)
  4. Juan Carlos (Ecuador)
  5. Agustin (España)
  6. Gorka (España)
  7. Jean Pierre (Perú)
  8. Rubén (España)
  9. Fabian (Chile)
  10. Daniel (Uruguay)
  11. Javier (España)
"Análisis y Diseño OO"
  1. Alfredo (Argentina)
  2. Hector (España)
  3. Yasmin (Chile)
  4. Ernesto (Colombia)
  5. Javier (México)
  6. Walter (Perú)
  7. Luis (España)
  8. Gabriel (España)
  9. Rafael (México)
  10. Dardo (Uruguay)

"Patrones de Diseño"
  1. César (España)
  2. Esteban (España)
  3. Gabriel (España)
  4. Luis (España)

Polémica / discusión: ¿Debemos usar "null == $var" ó "$var == null"?

Algunos de mis lectores y colegas se quejan que gracias a los cursos el blog quedó un poco vacío de contenidos, así que voy a compartir una discusión interesante que se dió en el foro de uno de los grupos del curso "Introducción a Zend Framework" ;-)

Se presentó un ejemplo donde se usaba un if con "null === $var", en vez del tradicional "$var === null" (el orden invertido).

Aquí mi explicación:

Imagen de Enrique Place
Re: Pagina 13 Correccion
de Enrique Place - viernes, 27 de marzo de 2009, 19:57


Mmmm ... en lo personal no soy partidario de usar null === dato, prefiero el estándar dato === null, ya que es más claro y natural su lectura:

Leyendo de izquierda a derecha, "si el dato es exactamente igual a null" en oposición a "si null es exactamente igual al dato" guiño

Aunque conozco la seudo-ventaja de evitar un accidente de asignación, no creo que exista un IDE que no te marque el error.

Prefiero siempre pensar que debemos codificar para otros y cuanto más claro, simple y natural, más fácil será que nos sigan.

Es una opinión, podemos definir con un "si el estándar Zend lo dice, lo acatamos" guiño

Hablando con un colega sobre este tema (lo bueno de tener colegas desarrolladores / docentes es que podemos tener formas distintas de ver las cosas y podemos discutirlas de manera constructiva y hasta corregirnos entre nosotros), me comentaba que en todo el código fuente de ZF se usa la forma "null == $var", por lo que me decía que era un "estándar" de ZF.

En su momento no tenía tantas horas recorridas dentro del código de ZF, por lo tanto no estaba seguro si realmente se usaba en el 100% del código o sucedía en algunas partes del mismo, así que me puse a volver a revisar los documentos donde especifican el estándar de Zend (no sería la primera vez que me olvide de algún detalle del mismo, por eso siempre RTFM):

El borrador que supuestamente se va actualizando y discutiendo hasta pasar al documento formal
http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft)

Documento formal

http://framework.zend.com/manual/en/coding-standard.html

En ambos casos no encontré ninguna sugerencia o referencia al respecto. Así que podríamos llegar a la siguiente conclusión:
  • Esta práctica o técnica no es parte (actualmente) del documento de estándar de codificación (no se sugiere en ningún momento).
  • Pero, aparentemente es un "estándar de facto" ("de hecho") o directamente "una práctica de facto" (más que un estándar de codificación) que los desarrolladores de ZF hacen uso (se puede ver en el código).
Por lo tanto, en mi opinión, si no hay evidencias que en ninguna parte del código de Zend exista el uso inverso, es decir "$var == null", podríamos llegar a la conclusión que es una práctica que deberíamos seguir (aunque yo no lo haya hecho hasta la fecha).

Los Estándares

Los estándares solo sirven si los seguimos todos, de lo contrario no son estándares y se pierde su efecto, y deberíamos dar el ejemplo, por lo que su adopción nos beneficia a todos los desarrolladores (ya que codificaríamos con las mismas reglas, facilitando el entendimiento y dejando un código más "uniforme").

Le comentaba a este colega que hace unos años cuando empecé a adoptar el primer estándar de codificación de Zend (cuando ZF ya se podía empezar a usar en su primer versión) me "dolió bastante" tener que adoptar las llaves iniciando a la izquierda (al estilo C++) y el uso de "_" para todo lo que es "elementos privados", de la misma forma me sucede con el nombre con separación "_" (ej: Zend_Db, Zend_View, etc), ya que estamos modificando los nombres de las clases por un problema de PHP de no tener resuelto el manejo de ubicaciones de directorios y namespaces.

Cabe acotar que muchas tecnologías, como Java o .Net, vienen siempre de la mano de una empresa que a su vez vende su IDE y este ayuda a resolver todos estos problemas (de cómo ubicar los archivos / directorios) y en sí no es tanto problema del lenguaje, aunque ayuda que este maneje conceptos como paquetes / namespaces, y que nosotros nunca tuvimos desde PHP esa relación con ningún IDE (donde muchos desarrolladores aún usan editores de código).

Pero, como acotaba antes, si no adoptamos todos el estándar y tratamos que los demás lo usen, el estándar carece de efecto y no sirve, a ningún desarrollador Java o .Net se le ocurre cambiar la forma de indentar el código por una propia. Por ejemplo, el IDE de .Net (Visual Studio .Net) no te permite cambiar la indentación, él te indenta automáticamente. La primera vez que lo usé dije "¡qué es esto!" pero luego me di cuenta que en realidad era una muy buena idea, no te dejaba lugar a "inventar" estándares y a preocuparte en lo funcional (de todas formas si creas atributos, métodos o variables de un solo carácter, hasta donde sé, te lo sigue permitiendo ;-))

En Resumen

Como docente y como "desarrollador que codifica pensando en los demás", esta práctica no es de mi agrado (por un tema de claridad), y tampoco aparece explícitamente en el documento de estándar de codificación (se podría hasta pensar que es una técnica para evitar un error y no una forma de codificación, aunque lleva a cambiar todo el "paisaje" de nuestro fuente), por el momento no puedo adoptarlo a menos que así explícitamente esté discutido y comunicado como un estándar formal, más allá de si es un "estándar/práctica/técnica de facto" del equipo de desarrollo de Zend Framework.

Si alguno de vosotros encuentra más argumentos o documentación que hable que debemos seguirlo (como estándar), me avisa, y a los 5 minutos estoy cambiando mi forma de codificar ("la cabeza es redonda para que las ideas puedan cambiar de sentido").

Pero... (segundos antes de publicar este post)

Cuando este post ya estaba casi terminando y reconociendo mi falta de no cumplir algo que era "estándar de facto" y hacer público que aún así no iba a seguir esta práctica (ya que no aparecía en los documentos de estándares), empecé a hacer una investigación en el código de Zend y me llevé una gran sorpresa ;-)

Como soy un poco necio, pero mayormente curioso y metódico, me puse a sacar números reales del uso de una y otra práctica en el código de Zend a través de la siguiente búsqueda (buscar la cadena de forma recursiva dentro del directorio de ZF):

grep -i "null ==" * -R

Ingresé a uno de los servidores en GNU/Linux y tomé el directorio de Zend actualizado a la fecha y realicé las siguientes comprobaciones:

Aquí busqué todas las líneas de código en todos los fuentes de Zend y me encontré con el uso extendido de "null ==" algo.


Pero hice la búsqueda opuesta (pensando que no iba a encontrar nada) y veo que aparecen muchas líneas con "== null" (¿eh?)



Entonces, el pulso me temblaba e hice la siguiente prueba, para cada una de las sentencias antes ejecutadas, conté las lineas de ocurrencia ("wc -l") y llegué a la siguiente conclusión:

  • "null ==" aparece en 546 líneas
  • "== null" aparece en 2444 líneas!
Conclusión Final

Listo, no dije nada, tengo razón, no usen "null ==" por que yo lo digo y se acabó la discusión hasta nuevo aviso ;-)

PD: Esto en sí no es un tema de si mi colega se equivoca o yo, me pareció importante discutir todo el asunto de estándares y técnicas, y particularmente, esta tan controvertida forma de "evitar errores" (que parece está de moda) que en mi opinión lo único que hacen es ofuscar el código.

Además, para quebrar una lanza por mis colegas / amigos, muchas veces me han corregido errores más de los que yo pude encontrarles, sin olvidar que me considero eterno alumno de todo y aún dudo y me equivoco ;-)

Cursos: ¡Últimas fechas, últimos grupos!

Dados los atrasos en confirmar los lugares y cerrar un cupo mínimo de alumnos, tuve que postergar el inicio de dos cursos nuevos: "Análisis Orientado a Objetos" e "Introducción a los Patrones de Diseño".

Administrativamente gestionar todo el proceso de alta hasta llegar que un alumno participe en un curso es bastante arduo: verificar datos, resolver problemas, dudas, pagos, alta en los sistemas, etc, solo ayer procesé 100 correos que se generaron en 48hs (y es tiempo que pierdo para dedicarle a los dictados de los cursos, vida familiar, horas de sueño, etc).

Lamentablemente he tratado de anticipar todos estos problemas pero aún así surgen atrasos y tengo que mover las fechas de inicio de los cursos hasta completar los mínimos de alumnos por grupo (actualmente las reservas superan los 20 alumnos, pero menos del 50% tiene confirmando con el pago su lugar. Recuerden, a pesar de la reserva solo con el pago acceden efectivamente al curso, si te registras ahora y pagas, eliminas un lugar de la reserva impaga).

Por consiguiente y solo durante esta semana hasta el viernes (recuerden que los descuentos libro + curso solo se aplican durante el mes de marzo), se aceptarán pagos de los siguientes cursos:
  1. "Análisis y Diseño Orientado a Objetos"
  2. "Introducción a los Patrones de Diseño"
  3. Nuevo y último grupo de "Introducción a Zend Framework"
  4. Nuevo y último grupo de "Programacion Orientada a Objetos para PHP5"
El próximo lunes 30/3 se inician sin falta los grupos de los cursos (sin importar el cupo mínimo, por respeto a los alumnos que están al día con los pagos ya no puedo estirar más las fechas), tener en cuenta que la primer semana pueden existir demoras y el curso estará completamente activo entre el lunes y martes.

No hay más fechas de cursos para este primer semestre del año, los siguientes cursos se iniciarán sobre el segundo semestre (Junio/Julio 2009).

¡Última oportunidad para participar de los cursos! ¡No más excusas! ¡No más atrasos!

¡Próximos cursos, lunes 23/3!

Este próximo lunes estaríamos iniciando dos de los cursos nuevos:
  • "Análisis y Diseño Orientado a Objetos": es el curso "continuación" del primero de "POO en PHP5", donde seguiremos trabajando en la parte teórica del diseño, profundizando el uso de UML y ejercitando la resolución de problemas de diseño (casos de uso, diagramas de secuencia, diagrama de clases, etc), abordaremos los principios de diseño, GRASP, etc, y tocaremos temas accesorios como Refactoring y metodologías de gestión ágil.
  • "Introducción a los Patrones de Diseño": este curso está basado en el famoso libro GOF ("grupo de los cuatro") que recopila los más usados patrones de diseño. Nosotros nos enfocaremos en los principales patrones, plantearemos una introducción a uno o dos por semana y posteriormente nos enfocaremos en una tarea que implique aplicarlos.
El primer curso, aunque siempre vamos anidando teoría y práctica para asimilar los conocimientos, es mucho más teórico que el primero de POO, donde veremos más principios y reglas de diseño "esotéricas" ;-)

El segundo curso es "introductorio", idea para quienes no conocen de patrones, y para quién sí los conoce, poder practicar y aplicarlos enfrentando "tareas desafío" durante 2 meses.

Ambos cursos son de "carga media", se pueden hacer con pocas horas por semana, y el procedimiento es el mismo de siempre:

  1. Se entrega generalmente un material inicial de estudio (*) ,
  2. Durante la semana se discute el tema en foros,
  3. Entre el jueves / viernes se hace entrega de la tarea,
  4. El lunes siguiente se debe entregar, y
  5. Entre el martes y miércoles se corrigen todos los trabajos de forma individual y posteriormente un documento con la solución propuesta por el docente explicando todos los errores que se encontraron en el grupo
  6. Y vuelve a iniciar la siguiente semana.

(*) Aclaración: dependiendo el avance del grupo o la complejidad del tema existirán algunas semanas que no habrá material "nuevo" y se seguirá tratando el mismo tema de la semana siguiente acompañado de un documento de corrección de trabajo más extenso y que aborda temas nuevos que deberán ser tenidos en cuenta en la siguiente tarea.

Posibles nuevos y últimos grupos de Zend Framework y de POO

Me han enviado varios emails con consultas sobre el ingreso a los cursos de Zend y de POO, pero como la semana ya estaba bastante iniciada, debía ser responsabilidad de cada uno ingresar tarde en el curso y actualizarse con todo lo visto hasta el momento (obviamente contaban con nuestro apoyo para responder cualquier duda durante el fin de semana).

Existe una posibilidad de abrir los 2 últimos cursos de este período el lunes, si realmente hay interés por favor enviarme un email confirmando o registrándose y reservando los cursos que deseen y veo luego de evaluar hasta el cupo para ver de abrir uno el próximo lunes o en la semana siguiente.

¡Últimas fechas de este primer semestre del año!

Marzo 2009: ¡Inicio de los últimos cursos del primer semestre 2009!

Copio la información que envié a todos los usuarios registrados en SURFORCE, estas son las últimas fechas para los cursos que se dictarán durante el primer semestre de 2009.

El segundo período del año se iniciará recién en Julio 2009 (hay que descansar un poco ;-)).

CURSOS QUE INICIAN PRÓXIMO LUNES (16/3)

Para el caso de "POO para PHP5" voy a separar los grupos en dos, entre los que ya cuentan con el libro (lo cual aprovecharemos y nos basaremos en los capítulos del mismo y tendrán ejercicios distintos a los resueltos) y entre los que no (que recibirán material aparte y similares ejercicios a los que el libro resuelve).

CURSOS QUE INICIAN DENTRO DE UNA SEMANA (23/3)

Los cursos sobre "Introducción a los Patrones de Diseño" (basados en los patrones del libro de GOF) y "Análisis y Diseño Orientado a Objetos" (la continuación del curso inicial de POO, más enfocado al análisis de sistemas y profundiza conceptos de diseño) están iniciando la semana siguiente (sin falta) por lo tanto toda esta semana estaremos procesando las reservas y pago anticipado para que no exista ningún atraso como nos sucedió con el de POO (todavía me estoy auto-flagelando ).


¡AÚN HAY LUGARES DISPONIBLES (actualizado)!

Lunes 16/3
  • "POO con Libro" = 14 alumnos (6 lugares disponibles)
  • "POO sin Libro" = 8 alumnos (12 lugares disponibles)
  • "Introducción a Zend Framework" (segundo grupo) = 9 alumnos (11 lugares disponibles)

Lunes 23/3

  • "Introducción a los Patrones de Diseño" = 8 lugares reservados, pagos 2 (*)
  • "Análisis y Diseño Orientado a Objetos" = 15 lugares reservados, pagos 4 (*)

(*) pagos aún no confirmados , solo con el pago se obtiene el lugar.

Todos grupos, aún no lleguen al cupo máximo de 20 personas, están empezando en las fechas estipuladas (los cursos que inician este lunes ya los estoy terminando de dar de alta en formacion.surforce.com, así que en el correr del día recibirán un email con los datos de ingreso).


¿NO TE LLEGÓ LA INFORMACIÓN DE PAGO?

Usuarios que aún no recibieron la información de pago, en este momento estoy revisando la base de reservas que no tienen un pago y les voy a enviar toda la información para hacerlo. Si estás registrado pero no reservaste un lugar, no te va a llegar la información de pago, ante cualquier duda me envías un email.

LISTADO DE USUARIOS POR GRUPO

POO para PHP (grupo con libro)

  1. Juan Carlos Ecuador
  2. Gaston Ivan Argentina
  3. Matias Argentina
  4. Roberto España
  5. Diego Rubén Argentina
  6. Marco Venezuela
  7. Agustin España
  8. Antonio España
  9. Rafael México
  10. karina Australia
  11. Diego Uruguay
  12. Diego Ecuador
  13. Federico Uruguay
  14. Guillermo Mexico

POO para PHP (grupo sin libro)

  1. Christian ECUADOR
  2. Antonio España
  3. Matias Argentina
  4. Jonathan Uruguay
  5. Rodolfo Chile
  6. Paola México
  7. Fernando Perú
  8. Jorge Uruguay

Introducción a ZEND FRAMEWORK (segundo grupo)

  1. David España
  2. Félix España
  3. Hector España
  4. George España
  5. Carlos España
  6. Antonio PERU
  7. Carlos Colombia
  8. AlejandroUruguay
  9. Agustin España

PLAZOS PARA INSCRIBIRSE

Si falta alguien en la lista, o quieren agregarse a uno de estos grupos, para los que inician este lunes hay tiempo hasta el martes (ya que los grupos recién inician y el tiempo da para ponerse a tono con el material entregado), los restantes tienen toda la semana hasta el viernes (así no tenemos demoras en procesar todos los datos).

No se dejen estar hasta último momento, ante cualquier problema me avisan y lo estudiamos.

PD: prometo para la próxima vez contratar una secretaria

Confirmado: los cursos que inician el lunes 9/3 son ...

"POO para PHP5" (segunda edición) e "Introducción a Zend Framework", por lo tanto se inicia el cobro de las reservas a través de Paypal / Western Union / Giro Bancario (solo si es en Argentina).

Los restantes cursos se postergarán una semana hasta el lunes 16/3 (estaré avisando el viernes 13/3 el cobro de las reservas).

Tendrán plazo desde hoy hasta el lunes a última hora para confirmar el pago, posteriormente se comunicarán los grupos creados para cada curso y la información de ingreso.

Ya fueron notificados todos los usuarios registrados que tenían al menos una reserva de un producto (libro o curso).

PD: estoy terminado de contestar los correos que me envían, no desesperen ;-)

Viernes 6/Marzo: estoy anunciando el inicio de los primeros cursos

Estimados, la espera ha valido la pena. Estoy terminando de analizar los datos hasta el momento y mañana en el correr del día estaré anunciando qué cursos inician el lunes próximo (9/3) de acuerdo a la cantidad de inscriptos. También les comentaré cual de los cursos iniciará la otra semana (lunes 16/3).

En el correr del día de mañana (viernes 6/3) me comunicaré con los alumnos que han pre-reservado su lugar en el curso para habilitarles el pago del mismo.

Aclaraciones
  • Si el lunes al final del día todos los contactados han pago sus reservas, se armarán grupos de 20 alumnos como máximo (según el orden de registro/pago).
  • Solo contra el pago de la reserva se obtiene un lugar en el grupo del curso, si llegado el lunes al final del día no se confirma el pago, se habilita al usuario siguiente en la lista que sí lo ha hecho.
  • Como los cursos están pensados como módulos semanales, no es estricto que el alumno inicie el mismo lunes, ya que recién en el correr del día se entregarán los primeros materiales de estudio y tendrán toda la semana para estudiar y hacer consultas, hasta que el jueves o viernes (dependiendo la cantidad de dudas que existan) reciban la primer tarea semanal que tendrán que resolver para el lunes de la semana siguiente (y así repetir el ciclo).
En estos momentos estoy trabajando para actualizar el sistema usuarios.surforce.com y agregar toda la información que me han solicitado pero que no he podido terminar de revisar (aunque estoy respondiendo en el día todas las dudas que me envían por email, si no te respondí, por favor reenvía el correo).

Recuerden, el año pasado teníamos un solo curso y abrimos 6 grupos, uno por semana, por consiguiente este año haremos lo mismo, fijaremos las prioridades de acuerdo al volumen de alumnos registrados y la cantidad que paga en fecha su reserva. Si existen demoras en la confirmación de los pagos, el curso se atrasa una semana e inicia el dictado aunque este sea un grupo reducido.

Cualquier duda estoy respondiendo los comentarios en esta entrada, a través del correo electrónico, y en las próximas horas con más información en el sitio web de usuarios.surforce.com

Saludos y muchas gracias a todos por el interés en los cursos y en la confianza depositada en nosotros los que vamos a dictarlos, Andrés Guzmán y yo! ;-)

Cursos Marzo 2009: iniciamos la semana de pre-reserva de lugares y armado de grupos

Lo prometido es deuda, luego de trabajar en actualizar el sistema usuarios.surforce.com ya pueden los usuarios registrados ingresar al sistema y seleccionar él o los cursos que quieren participar y que inician en Marzo 2009.

Ingresando al sistema de reservas acceden a todos los datos de los cursos:
  1. Programación Orientada a Objetos para PHP5 (segunda edición)
  2. Introducción a Zend Framework (nuevo)
  3. Introducción a los Patrones de Diseño en PHP5 (nuevo)
  4. Análisis y Diseño Orientado a Objetos para PHP5 (nuevo)
Esta semana la usaremos para confirmar cuantos alumnos hay por curso y cuantos grupos se pueden armar por curso, lo cual me permitirá organizar cómo irán iniciando los cursos, qué semana inicia qué curso y qué grupo, etcétera. El año pasado teníamos un solo curso y se fueron abriendo un grupo por semana hasta llegar a completar los 6 de 20 personas cada uno. Este año será diferente, tenemos varios cursos y la probabilidad de armar varios grupos, así que iré despacio y definiendo la estrategia para distribuir la carga de trabajo.

Es probable que existan cursos que no lleguen a un cupo mínimo, también que algún curso tenga muchos grupos y otro curso un solo grupo, por lo tanto tendré que ir evaluando cuales se mantendrán en suspenso hasta que exista más interesados o cuales se postergan para un segundo período de acuerdo qué curso tiene más cantidad de grupos.

Para poder administrar todo esto, necesito "números reales", por lo tanto tenemos toda esta semana para ir viendo cómo se distribuyen los alumnos y poder decidir qué inicia el lunes de la semana que viene y así sucesivamente hasta armar el calendario para el resto de las semanas.

Ni bien vaya confirmando los grupos los voy notificando para hacer el pago de la reserva, si en el correr de la semana no se concreta, notificaré al siguiente alumno en la lista de reservas (como hicimos el año pasado).

Novedades interesantes
  1. Durante el período de apertura de los cursos se mantendrá la promoción del descuento para cursos para los alumnos que adquieran el libro de POO para PHP5.
  2. Para no sobrecargarme con los cursos he solicitado colaboración y tendremos un nuevo docente: Andrés Guzmán (alias zsamer, conocido por sus excelentes artículos sobre Zend Framework) realizó el armado del material del curso y juntos trabajaremos como docentes en el dictado de Introducción a Zend Framework.
Finalmente, cualquier problema que tengan con el ingreso al sistema me envían un email y lo verifico, cualquier duda o consulta la pueden hacer tanto por email como en los comentarios de esta entrada.

Bueno, no pierdan el tiempo ni su lugar en la lista de reservas, tienen toda esta semana para comunicarme cuales son los cursos que quieren participar y yo seguiré sus deseos ;-)

Saludos y a ver si empezamos el año con todo! ;-)

Entradas populares