Otra vez a rendir examen

Hace un par de días volví a rendir un examen en la universidad luego de más de 4 años (si no me falla la cuenta, el último examen lo rendí en 2006). En esta ocasión, fue el examen final del seminario de Educación a Distancia. La modalidad del examen fue novedosa para mi. La evaluación fue en grupos de 8 personas, cada uno de los 8 debió elegir un sobre con las preguntas del tema que deseaba contestar.O sea, cada uno elegía el tema, pero no las preguntas, las cuales estaban selladas dentro del sobre. En mi caso elegí conceptos generales de educación a distancia. Si bien aún no tengo la nota, estimo que me fue bien. Ups! ahora que lo escribo, caigo en la cuenta, ¡recorcholis! ¿porque diablos no pregunté la nota? mmm, debe ser porque tenia la seguridad de que me fue bien. Bueno, en fin, volvamos a la dinámica. Cada uno por turnos, abría su sobre y contestaba las 3 preguntas indicadas. A medida que iba contestando, la profesora metía algún bocadillo, daba participación al resto de los alumnos o bien repreguntaba. Durante el examen, tomé nota de algunas cosas, un par de frases sueltas, que me llamaron la atención entre las que se destaca:

El aprendizaje es interno, mientras que la enseñanza es externa.

Redondeando, si bien creo que hay algunas cosas por mejorar, la materia me gustó y aprendí muchas cosas que ya estoy intentando poner en práctica.

Variables de clase y de instancia en Smalltalk

Este tema incluye algunas particularidades que me parece en general no se le presta mucha atención y por ello hoy quiero dedicarle un par de líneas.

Analicemos la definición de clase CuentaBancaria:

Object subclass: #CuentaBancaria
	instanceVariableNames: 'numero saldo'
	classVariableNames: 'SiguienteNumero'
	poolDictionaries: ''
	category: 'algo3-ejemplos'

instanceVariableNames, indica las variables de instancia, también conocidas como atributos de instancia. En Smalltalk, estas variables tienen visibilidad protegida aunque en general se las trata como si fueran privadas. En este caso tenemos las variables de instancia numero y saldo. Un detalle interesante es que las variables son protegidas de las instancia, ¿que significa esto? supongamos que tengo dos instancias de la clase CuentaBancaria: cuenta1 y cuenta2, entonces cuenta1 no puede acceder al atributo numero de la cuenta cuenta2, pues si bien cuenta2 es una instancia del mismo tiempo, resulta que otra instancia y aqui la protección es a nivel de instancias.

classVariableNames, como su nombre sugiere son variables de clase, lo cual significa que son accesibles por el objeto clase, pero al mismo tiempo también son accesibles y compartidas por todas las instancias de la clase, o sea, si una instacia modifica el valor de dicha variable, dicho cambio afecta a todas las instancias. En este caso tenemos tenemos el siguienteNumeroDisponible como variable de clase, la cual es incrementada por cada instancia cada es inicializada.

initialize
	saldo := 0.
	numero := siguienteNumero.
	siguienteNumero := siguienteNumero + 1.

Un punto importante para considerar es que esta variable también es accesible por la clase CuentaBancanria.

Por otro lado, si vamos a la definición de la clase CuentaBancaria y vemos la parte de clase, veremos.

CuentaBancaria class
	instanceVariableNames: 'MaximoNumero'

instanceVariablesNames, en este caso representa las variables exclusivas del objeto clase y como tales son accesibles por la clase, pero no por las instancias de  la clase. Un detalle interesante respecto de estas variables es donde inicializarlas. Bien, en general se suele agregar un método de clase que se encarga de inicializarlas, pero ojo este seria un método de clase.

Bien, por último, si volvemos a la definición de la clase CuentaBancaria, veremos que aún nos queda por mencionar los poolDictionaries. Estas variables son variables compartidas por instancias de distintas clases.  Es algo relativamente raro (al menos a mi parecer) y por eso es que no se ocurre como utilizarlas en el ejemplo, pero prometo escribir otro post al respecto.

Para finalizar les ofrezco un gráfico para intentar resumir el ejemplo.

(gracias Mariano por la correción)

 

 

 

Google en la televisión

Estaba mirando televisión y en el corte publicitario vi una un aviso de Google Chrome. Sinceramente me tomó por sorpresa, no por ser Google, sino porque no recuerdo haber visto anteriormente una propaganda de software (que no sean juegos) en televisón abierta. Ahora pensándolo un poco más, creo que en algún momento vi un aviso de Windows u Office, pero no estoy seguro. En fin, solo quería compartir la curiosidad.

FIUBA++

La semana un docente de física en Fiuba que cursa conmigo en UNLP, me comentó que habían implementado una modalidad de cursada semi-presencial para los alumnos recursantes  de física 1. Me quedé anonadado, en primer lugar me parece una iniciativa simplemente excelente y el hecho de que sea en Fiuba me sorprende más y me alegra el doble.

Como graduado y docente de Fiuba, suelo ser muy crítico hacia la facultad, pero en esta ocasión, me saco el gorro y hago una referencia, ¡aguante Fiuba!

Tráfico de examenes en la clase de consulta

Ayer hicimos la clase de repaso previa al parcial en Algo3, una práctica que implementamos con muy buen resultado el cuatrimestre anterior.
Esta clase tiene una dinámica especial que difiere de la tradicional clase consulta: pedimos a los alumnos que se separen en grupos, cada grupo tiene 15 minutos para elaborar un set de preguntas sobre una unidad en particular, luego intercambiamos las preguntas entre los grupos para que las contesten y finalmente, hacemos una revisión entre todos de las preguntas y las respuestas.

El dato de color es que durante la clase de consulta de ayer, estábamos con PabloS y veíamos que algunos alumnos recolectaban plata, entraban y salían del aula llevando fotocopias. Esto llamó mi atención y disimuladamente me acerqué a ver de que se trataba. Resulta que el objeto de «tráfico» era un parcial resuelto tomado en un cuatrimestre anterior. En un primer momento me resultó muy chocante, pero luego de unos minutos, recordé que yo también solía hacer eso 🙂 ¿y quien no?.

Agile Open Mar del Plata 2011

El pasado sábado 10, estuve participando de este evento. Al mismo asistieron unas 70 personas duplicando la cantidad de asistentes de años anteriores, lo cual sin duda fue mérito de la energia que puso FabiánQ (¡gracias maestro!).

La facilitación del encuentro estuvo compartida entre MartinA, JulianA y FabiánQ.

Como había muchos asistentes nuevos en agile, comenzamos con una sesión introductoria «global» la cual estuvo a mi cargo (fue un honor para mi, gracias 🙂 ). Como fue algo no planeado y hace poco tiempo cambié mi máquina  no tenia a mano mi deck introductoria de agile, asi que me ví obligado a improvisar y creo que me salió bastante bien.
En una sesión que me gustó y cuyo nombre no recuerdo, uno de los asistentes planteó la problématica del trabajo multi-proyecto. El problema en contexto era que: una empresa de software que hace proyectos para varios clientes, llega el pedido de un cliente, la empresa lo estima y asigna un equipo. Cuando el proyecto está por terminar, el cliente pide de extender el proyecto, pero la empresa ya tenia asumidos otros compromisos y la gente asignada a otro proyecto que esta por empezar. A mi parecer esto es un problema de administración de porfolio y si bien hay bibliografia sobre lo que seria una administración de porfolio agile, a mi parecer es un tema bastante amplio. Yo tengo una propuesta para manejar esta cuestión, pero creo que merece un post aparte, con lo cual no me voy a explayar aquí.

Otra sesión de la que participé fue una de TDD que propuse yo mismo y en la que expliqué TDD usando Smalltalk (Pharo). De esta sesión no tengo deck, pues hice todo dentro de Pharo.

Aquí subí algunas fotos que saqué durante el evento.

Festejo por los 190 años de la UBA

El sábado 27 asistí a algunos de los eventos realizados en el contexto del cumpleaños de la UBA. En este contexto asistí a una presentación del Coro y la orquesta de la facultad de medicina que se realizó en la Iglesia de San Ignacio. También asistí a un mini-concierto de alumnos del taller de guitarra de la facultad de Filosofía que se realizó en el auditorio de la Manzana de las Luces.

Pero sin duda, lo que más me gustó fue lo que vi en el Colegio Nacional Buenos Aires, que es parte de la UBA y que fue donde se concentraron la mayor parte de las actividades del festejo. En primer lugar, me quedé asombrado por las instalaciones del colegio: ¡Increíble! Parece Hogwarts. Entre los destacados estaban los stands de la Facultad de Ciencias Exactas y Naturales, donde estudiantes de las distintas carreras mostraban experimentos relacionados a sus respectivas áreas de estudio.

Entre los múltiples folletos que me traje, había uno de ingeniería y otro de exactas, que difundian las carreras dictaras en dichas casas de estudio. Ingeniería ofrece en la actualidad 12 carreras: 10 ingenierías, una licenciatura (en sistemas) y una tecnicatura (en construcciones navales). Por su parte, Exactas ofrece 10 carreras y 7 profesorados. Adicionalmente, ambas facultades dictan una carrera en conjunto: Ingeniería en Alimentos.

Otro de los folletos, promocionaba la Semana de la Química, un evento organizado por Exactas y programado para 4,5 y 6 de octubre, donde se realizan charlas, visitas guiadas por laboratorios  de la facultad y actividades docentes.

Pero, sin duda el folleto que más me llamó la atención fue del «Study Abroad Program, University of Buenos Aires». En primer lugar me llamó la atención porque desconocía su existencia. Por lo que dice el folleto, entre otras cosas incluye un curso de 4 semanas de duración: 3 en Buenos Aires y una en Villa la Angostura. Este curso incluye mucha información sobre la Argentina: historia política y social desde la conquista hasta la actualidad, sistema político, economía, geografía, arquitectura, etc. Muy interesante, en el folleto no figura ninguna página web, pero hay dos mails de contacto: cabadie at rec.uba.ar y ibigas at rec.uba.ar.

Resumiendo, la muestra en general me resulto muy interesante, descubrí cosas de la UBA y de nuestra sociedad que desconocía. Sin duda, hay muchas cosas que mejorar en la UBA (y en el país), pero lo bueno es que ese cambio está en nuestra manos, con lo cual, a trabajar.

Workshop de estimación en JAIIO 40

Fue el pasado miércoles en las instalaciones de UTN Córdoba. El curso estaba completo, 25 asistentes, el número que puse como límite para poder realizar los ejercicios. Por la mañana Pablo dictó un workshop de introducción a Scrum, y por la tarde me tocó a mi.

Entre los asistentes, casi todos tenían alguna experiencia con métodos ágiles. A pesar de eso, varios tenían algunos conceptos «flojos», con lo cual tuve que hacer varias explicaciones que no tenia planeadas. Personalmente me gustó como salió, hubo muchísimas consultas y creo que di respuesta a casi todas. Al mismo tiempo, las actividades ayudaron a varios a bajar a concreto algunas de las cuestiones teóricas que hablamos durante la primera hora del workshop. La evaluación (con la clásica técnica de las caritas) fue muy buena 23 caritas felices (varias de ellas muy felices) y dos caritas neutrales.

Una curiosidad, es que entre los asistentes había un technical writer (que se presentó asimismo como documentador). Digo curiosidad, pues si bien trabajo con technical writers (e incluso he «ocupado» ese rol en algún momento), nunca había tenido uno como asistente de un workshop/presentación.

Antes de cerrar el workshop pasé los clásicos avisos parroquiales que incluyeron: Agile Open MDP, Agiles 2011 (¡aprovechen que se extendió el Early Bird!) y Smalltalks 2011. Luego de esto se me acercó un asistente consultando sobre la posibilidad de hacer un Agile Open en Santiago del Estero, con lo cual, si la gente de Santiago se mueve, es posible que hagamos algo por allá.

La breve deck utilizada está disponible aquí. También grabé este screencast que trata sobre algunos temás conceptuales que hablamos durante el workshop.