talking, questions and learning

Posted: February 3rd, 2010 | Author: Alex | Filed under: Artificial Intelligence | No Comments »

In How Pair Programming Really Works [PDF], Stuart Wray discusses four mechanisms that contribute to successful pair programming practice. The author uses findings from cognitive psychology and neuroscience to provide evidence for his conclusions. There are some followup discussions at computingnow, reddit and hacker news.

I found particularly interesting the discussion around talking to develop understanding:

Around 1980, as computer science undergraduate students at the University of Cambridge, my friends and I noticed a strange phenomenon that we called expert programmer theory. When one of us had trouble getting our programs to work, we’d describe the nonfunctioning state of our code to each other over coffee. Quite often, we’d realize in a flash what was wrong and how to solve it. These epiphanies were quite independent of the other person having any real understanding of our problems—the listener often seemed little wiser about the subject.

I have experienced similar scenarios and this can be both relieving (finally solved the problem!) and frustrating (why didn’t I think of this a few minutes ago?).

Explaining something to another person or even an object can help the person’s own understanding. Wray points out that it is helpful, if we can talk to an expert, even if that expertise is large based on perception. The main reason seems to be that that person would be more likely to ask us deep questions that we can ponder or that may influence our thinking.

The ability to ask questions that are most appropriate for the given situation seems most valuable: Questions that don’t require too large a leap, but rather motivate the person to advance just a little further – questions that stimulate thinking.

What if software that we use daily asked us questions?

Lots of scenarios are conceivable, but here is one example. Imagine a news website that attaches to each article a module that contains at least one interesting question, such as “Do you think this policy change will effectively solve problem XYZ?”, “What do you think of senator X’s position on Y?”, “What if the economic situation in Y would change in Z way?” and so forth. These would be meaningful questions, based on the content of the article and meant to stimulate intelligent discourse (readers could leave responses and discuss amongst themselves). These questions would also ideally be automatically generated.

If we can accept that good questions at the right time can help our understanding and that deeper understanding is generally a good thing, then I think we will benefit from giving software more of an ability to ask questions – for our own benefit.


From offline shopping to wanting an Internet sense

Posted: December 16th, 2009 | Author: Alex | Filed under: Uncategorized | No Comments »

Shopping online has fundamentally changed my expectations and comfort level, when I buy things in general. I noticed this clearly, when I recently ventured to a local shopping mall to attempt some not-yet-too-late holiday shopping – offline.

I do a significant portion of my shopping on the Internet and I have come to appreciate customer reviews, recommender systems and many other features that have become common at a lot of online stores. I often take information provided by those systems into account when making buying decisions. I have gotten used to those features and – as I realized on that day at the mall – I miss them in their absence.

Usually, I am content to satisfice, but when I am in the store without access to those familiar features, I feel a bit deprived, as if one of my senses were shut off. I like that imagery, too: The idea of an additional sense, based on Internet data is an intriguing one.

The following video shows how MIT’s Sixth Sense may have the potential to act as an additional sense to equip you with the features that you may have gotten used to on the Internet.

I wonder when we will routinely wear devices that integrate cameras, microphones, displays/projectors, etc. and that continuously scan our surroundings and have the ability to feed us data about it back in real time. It could be a version of Sixth Sense using discreet packaging.

Quick access to product reviews, as we look at a book or CD in a store sounds like a useful feature. Maybe sunglasses (and their integrated display) could provide directions as we are walking. It could also display quick stats regarding our surroundings, incl. a warning of nearby danger. The potential for applications seems endless.

In the meantime, I am of course still stuck with unfinished shopping.


Peter Norvig on Innovation in Search and Artificial Intelligence

Posted: December 9th, 2009 | Author: Alex | Filed under: Artificial Intelligence, Search | 2 Comments »

Peter Norvig gave this presentation at Citris on September 2. He emphasizes (with several recent examples), how the usage and availability of large data models and increased computing power improves problem solving approaches.

A lot of interesting subjects are covered in the presentation. Here are references to projects or papers that are mentioned:

Also discussed: Text segmentation, statistical machine translation, MapReduce, Web bias and more.


Nature and nurture in software development

Posted: December 2nd, 2009 | Author: Alex | Filed under: Uncategorized | No Comments »

Over on the Seattle 2.0 blog, Anthony StevensAre Great Programmers Born, or Made? posed an interesting question that also generated insightful thoughts in the comments. I am very intrigued by this topic and the direction of some of the research in this area. So, here is my take on it.

Intuitively, I think, we tend to read that question as Are great programmers born xor made? – understanding it such that it is either one or the other. I believe that is false: It is not one or the other; it is both, at least to some degree. However, the ratio is important.

Innate ability, such as a baseline degree of brain capacity is absolutely required, maybe measured as at least average IQ. That baseline or innate ability is the smaller part of the whole.

I would argue that it helps to be strong at abstract and critical thinking, logic, mathematics, pattern matching/prediction, memory and recall, and so forth. However, those are largely skills. They serve as very useful prerequisites or corequisites, but they are learnable. The same is true for other skills in software development, such as deep understanding of programming language usage, the ability to follow code style guidelines, writing good unit tests, coming up with “clean” designs, etc.

From what I understand, deliberate practice is key to acquiring expertise in an area. I provided some notes on that in Accelerated Learning with AI systems?, though with a slightly different angle. Mary Poppendieck very much relates this principle to software development in her presentation Deliberate Practice in Software Development that she gave at Agile 2009.

When I first taught myself programming (Turbo Pascal, if you are curious), it felt like it came easy to me. It was also great fun, which served (at least partly) as motivation for me to learn and experiment more, eventually turn it into a profession.

If you either “have it” or “don’t have it,” then there does not really seem to be a chance for greatness for the person who is missing that innate ability. On the other hand, if training/deliberate practice can play such a significant role, then there are options: The opportunity of a new challenge. I think, this should be very encouraging.

Practice.