Human Aspects of Agile Software Engineering

This is a very interesting way of looking at Agile. The talk is a based on an assumption – that the people involved in software development processes deserve more attention. I agree with the many of the points made in the talk, particularly around the intangible nature of the software we build. Which is one of the reasons we are still, as an industry, trying to discover the best practises, and a true sense of engineering discipline.

Its well worth watching this talk, especially to get a different perspective on Agile, focusing on the social and cognitive effects. She used the Prisoners Dilemma to illustrate some of these points and to be honest I had never thought of Software Engineering in those terms, yet as a metaphor it fits so very well,

in software engineering this is reflected in the fact that software is an intangible product so sometimes we cannot verify that our colleagues behave in the same way … so what Agile software development does is it banishes the inability to verify that co-operation is reciprocated, by increasing the process transparency, in such a way it banishes the working assumption of the prisoners dilemma.

Teaching kids to code

Really interesting talk, that demonstrates Greenfoot a development environment designed to make it easy for novices to learn programming in Java.

The students at high school levels might not be as commited to programming and we have tried to create an interesting program that should engage the student. In order to do this, we acknowledge that students has different opinions on what might be interesting. Hence, we sought to create a flexible environment that could be customised for the specific group of students. Furthermore, in the design of greenfoot we considered the different learning styles of students.

I’m not sure if I agree entirely with this approach but I do welcome anything that helps engage students. On reflection though the top down pedagogical approach to teaching and learning that Greenfoot encourages is something I am in favour of.

Adaptive Algorithms for Online Optimisation


The online learning framework captures a wide variety of learning problems. The setting is as follows – in each round, we have to choose a point from some fixed convex domain. Then, we are presented a convex loss function, according to which we incur a loss. The loss over T rounds is simply the sum of all the losses. The aim of most online learning algorithm is to minimize *regret* : the difference of the algorithm’s loss and the loss of the best fixed decision in hindsight. Unfortunately, in situations where the loss function may vary a lot, the regret is not a good measure of performance. We define *adaptive regret*, a notion that is a much better measure of how well our algorithm is adapting to the changing loss functions. We provide a procedure that converts any standard low-regret algorithm to one that provides low adaptive regret. We use an interesting mix of techniques, and use streaming ideas to make our algorithm efficient. This technique can be applied in many scenarios, such as portfolio management, online shortest paths, and the tree update problem, to name a few.

Pretty interesting tech talk, I found the notion of minimising regret quite interesting, but only really because I have heard of this before, but never experienced a real world implementation of this. I first heard of the significance of regret in learning from Alan who captured this vividly in an essay he wrote called The Adaptive Significance of Regret which he wrote back in 2005. In fact he even showed me some PHP code he wrote that modelled regret, which at the time I remember finding somewhat amusing … but right now it it feels far more significant.