Tag Archives: Collaboration

Learning Machines and the Future of Academics

Institutions will try to preserve the problem to which they are the solution.

– Shirky Principle

Learning, How does it work?

There has been progress and evolution, but the roots of our academic institutions are essentially medieval. For all the progress that has been made, for a variety of technical and social reasons, the whole system is largely hierarchical and based on lineage. Expertise was always a scarce resource and the time and investment to transfer expertise required physical proximity. While we have passed the stage where participation is solely based on exposure to Latin and Greek as a filter to participation, on several levels there is still a strong bias that filters on context and circumstance. Subtle and sublimated as that bias might be, these filters may be least obvious to those who benefit most and have the power to change anything. Consequently, we have not yet fully leveraged available human potential. The present is not evenly distributed.

I did the advanced track of the Artificial Intelligence and Machine Learning classes from Stanford in the last 10 weeks and wanted to share a few thoughts. Technology and efforts like these have the potential to change everything about how people learn.

Information wants to be free. The marginal cost of broadcasting the highest quality lectures from the best teachers on the planet is trending to zero. That is changing everything. Stanford is changing it. MIT is changing it. Khan academy is changing it. Know It, Busuu, and probably a long list of education start ups I don’t even know about are going to be changing it. There is a good chance that this transition disrupts the university system as we now know it. In every sense of the word disrupt.

The two Stanford classes had a slight overlap in topic, but they were qualitatively very different. There are plenty of reviews about the classes already. What I’m interested in is slightly meta.

How do people learn? What is the incentive? What is a measure of progress? And what can they do with the things they learn?

In particular, what is the most effective path to someone being productive in a deeply technical skill?

What Possibility…

Now, back to the Stanford classes. The contrast between the two approaches provoked some thoughts.

Sebastian Thrun started out by stating the purpose of the AI class is 1) to teach you the basics of artificial intelligence and 2) to excite you. They definitely delivered on that purpose. Sebastian and Peter Norvig split time covering an introduction to AI. The format was video lectures with embedded questions at the end of most videos. The format was the same for the lectures, the homework, the mid-term and the final. Watch the video, answer the questions. Done.

The ML class used a different format. This system was also video lectures. Andrew Ng’s presentation in the video medium felt natural and flowing. This class didn’t cover as many topics but almost every topic came with a programming assignment. Questions in the lectures were not graded, but there were weekly review questions and the programming assignment. You were allowed to resubmit the review or the assignment multiple times with no penalty, so you were graded, but getting 100% was really a measure of persistence. (Andrew seemed excited to be teaching people. The thank you he gave in the concluding lecture was so heartfelt, I wanted to give him a hug. Andrew made me feel like it was a true honor for him to teach this. The honor was all mine.)

At the end of AI, you had learned some things from watching videos and got graded for submitting a bunch of forms, at the end of ML, you had learned some things from watching videos and had the opportunity to have working code to train neural networks, support vector machines, k-means clusters, collaborative filtering, etc. On the one hand you have people tweeting their scores on the other you have people BUILDING SELF DRIVING CARS!

By three methods we may learn wisdom: first, by reflection, which is noblest; second, by imitation, which is easiest; and third, by experience, which is the most bitter.

– Confucius

Take The Next Step

Which brings me to the point I really want to make. What is an education? What are academics? The pursuit of knowledge and understanding? These things people are doing and building to help people learn are amazing and inspiring, but that’s only one part of the equation… the dissemination of knowledge, understanding and skill. What about creation?

Scientific journals which at one point served as a filter of quality and point of aggregation, now act as a barrier to access. If the internet does anything, it disintermediates. This current system of publishing slows and prevents the access to information. The ‘publish or perish’ tenure and research grant funding process also creates disincentives to open collaboration. I imagine a future where collaboration in research is open and transparent. Experiments aren’t done in secret and partially explained in publications, but all the methods and results are shared and updated in real time. Like a Github for science. If I can’t replicate results, I open an issue. If I find an interesting pattern or insight, I open a pull request. Everyone can see everything, streams of open data. This has to scare the living hell out of some people. There is a lot of time, money and personal identity tied up in the current system, but its essential inefficiencies are not beneficial or necessary.

(Aside: Resistance to this is not unlike what we are witnessing with the entertainment/media/copyright lobby that resulted in the SOPA legislation, where entrenched institutions attempt to prolong the last gasp of disrupted models of creating and capturing value. That resistance won’t fix outmoded approaches to servicing markets that no longer exist, it can only stunt the growth of emerging models. Piracy is a distraction. People always made copies and traded media, just the medium has changed. People have also never had a problem trading for something they value. People love to buy stuff they love. Compete in the market. Embrace the opportunities.)

Finally, there would be a benefit to more permeability between academics and industry. There are literally billions, maybe even trillions of dollars worth of technology shelved in universities. Industry loses on the opportunity to greater utilize research and expertise while academics often lose touch with the reality of practice in the wild. We all lose on the prospect of more abundant prosperity. In most cases there is a risk and implied disincentives to transition between the two disjoint worlds, which in some sense don’t even respect each other’s reality. If the system facilitated a properly incentivized flow of people and information in both directions, I can’t help but believe both would be better off.

The open questions now are how quickly the transitions happen and to what extent to those personally attached to the status quo resist. Same story, different stage.

tl;dr We live in amazing times. You can either understand how to build self driving cars or you can’t. You will either help others do it, or you won’t. Get ready for the next level or better, help make it happen. Special thanks to Stanford, Andrew Ng, Sebastian Thrun and Peter Norvig for their contributions to the future.


Working Together… with Techology

If you want to build a ship, don’t drum up people together to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea.

-Antoine Jean-Baptiste Marie Roger de Saint Exupéry

Where to start with this one? and where to finish? The only thing I will really promise is meandering, but I think this is interesting, if not well formed…

The first thing you need is a little context about what is driving my thoughts on this:

  • I’m an XP fanboy. Even if the XP community is manifesting paranoid schizophrenic at this point (more on this in a future post), once you have experienced pairing and have a break through where things start to flow, you can never go back. Everyone working in isolation becomes really painful and is frankly less efficient IMHO, especially over the life of a project.
  • I haven’t found a way to effectively pair working on Puppet‘s core. Mainly because of the ~1000 miles in between myself and Luke. We talk on the phone, open the same files and goto line numbers or sometimes we try sharing the screen. This certainly helps with knowledge transfer, but feels clumsy and never gets the flow that you need to crank out solutions together

So how can a distributed team work together?

I’d been reflecting on a development tool called UNA, one of my personal highlights from Agile 2008, when I saw the Devunity presentation from TechCrunch 50 which set out to provide a similar environment. These types of tools facilitate possibilities for working together that I will try to illuminate, and then I’ll throw in my 2 cents plus interest.

I volunteered to participate in a ‘Coding with the Stars Competition’. This was envisioned as a sort of geek fest Agile development engineering version of ‘Dancing with the Stars’. I was paired with John De Goes. We were the first team eliminated. I admit I was disappointed just a bit, not because we were eliminated, as much as that we didn’t do a good job of portraying the power of what Una enables. In order to be true to the show, the judging was capricious, but at least I’m not bitter about that… :/ (In all seriousness, the whole thing was just for fun and while Una is a great tool when the network isn’t feeble, the collaboration Una enables probably isn’t best demonstrated in 4 minutes of software development ‘theater’ without a lot of setup and backstory.)

Resistance is Futile...

Resistance is Futile...

John is obviously intelligent and intense, which means I automatically like him. Marketing admittedly might not be his strong point (I do appreciate the Gigeresque imagery, though I’m not sure the proverbial ‘everyone else’ can.), but he’s put a lot of time and thought into building software and how people can do it better. Una is the result and when you see John talk about Una, this is obviously a labor of love.

Ok, so what does Una enable? I’m not totally sure, but I know that watching John use it and what I learned using Una for two hours was compelling enough that I’m still thinking about the experience six weeks later.

Una is for all intents a text editor bordering on IDE with a networking component that lets multiple people work on the same files at the same time. I have my cursor, you have yours and when the network packets are flowing, we can see each others work in real time. This is different from sharing a screen, because we can all control what we see and do independently. Whenever anyone saves a file UNA runs the tests and everyone knows how long ago the tests were run because there is a timer which resets after each run.

I admit that this seemed a bit disconcerting in the beginning, but after a couple hours of working together with John, some really interesting things started to happen. We started working ‘together’…

How many times have you watched someone type and witnessed a typo? Usually, you point something like that out and the person will go back and fix it. No big deal, right? 5 seconds of ‘hey’, ‘right there’ and it’s fixed. But what if you could just fix it? And while he (or she) could see you fix it, the break in concentration goes from 5 seconds to maybe one. After about the first hour of working together, this type of thing started happening, spontaneously and organically. The cadence of test driven pairing potentially changes from syncopated keyboard switches to an almost surreal flow. The communication really started to go ‘into the code’ and the oral cues became less and less necessary (this probably wasn’t the best thing for the ‘competition’, que sera, sera)

And this was only after an hour of working with a tool I’d never seen before and a person I’d never met! Imagine what might happen after working this way all the time with a talented team… Honestly, I’m not really sure, but based on what I saw from the TC50 presentation Devunity also sees some of the same potential.

This is where my two cents starts, but first I need to introduce a few more ideas (I did promise ‘meandering’). I really really really like data, and I especially like figuring out interesting ways to take lots of data from different places and present it in a way that facilitates understanding.

For he today that sheds his blood with me shall be my brother...

'For he today that sheds his blood with me shall be my brother... ' --Big Will

At some point in the past, I also enjoyed playing multi-player real time strategy games. My favorite games enable epic battles with all manner of complexity in the viable strategies (ok, and an occasional zerg rush). A critical skill one develops playing these types of games is keeping an eye on the mini map. Players develop an intuitive notion of critical places on the map. Just one pixel of certain colors anywhere might warrant investigation, but flashes of color in certain places require immediate attention or the game is lost. The mini-map also let’s you know what your allies are doing, where they might be winning or losing, and is critical for any sophisticated coordination.

In parallel, people have put a lot of energy into tools that let you analyze the quality of code, particularly Object Oriented code.

What if we had a tool that took an OO code base, generated a view of it in a ‘mini-map’, maybe several views, like the class hierarchy, the dependency/call graphs, and the file layout, then using color we super impose more data, like cyclomatic complexity and test coverage. (I know some Java IDEs are pretty close to being able to do this)

Now what if we can update this mini-map data in real time and use it as feedback in an environment like UNA?

We know the critical pieces of the code, and have a sense of the aesthetics and metaphors that code embodies. What if we not only get feedback when we run our tests, but we see green and red cascade across the mini map in the places other team members are working? Or we can see cyclomatic complexity increase? Or new untested code… (Too bad you can’t fix problems like that by pushing ‘A’ and clicking the mini-map to direct a screen full of your hydralisks… *shrug*)

The team will start to intuitively know ‘what’ colors ‘where’ warrant investigation, or perhaps even immediate action. The battle unfolds transparently and with a clear sense of where the team might be winning or losing.

Take it a step farther, what if instead of version control being based on file sets, the whole ‘battle’ is recorded, keystroke for keystroke. Not only can any point be recovered, but that is some serious data about how everyone works. I’m not even sure where that would lead. I do know that new information enables optimization, both specific and systemic improvements. Tactics and strategies can’t help but evolve. (hopefully not draconian notions of productivity…)

While we’re at it, let’s put VOIP channels in this thing and facilitate/record dialog, too.

I can’t think of a single human endeavor that doesn’t benefit from observation, analysis and reflection. The code review process would go from looking at the static result to watching the journey. Root cause analysis potentially reveals more about ‘how’ and ‘why’, instead of just groping at ‘what’. What could this feedback reveal about how we work, and how we work together? As I stated in the beginning, I don’t know… but it sounds pretty cool, no?

I not sure where the line is between enabling productivity and gratuitous indulgence, but the technology is all there, it’s just a matter of hooking the right things together in interesting ways.

I’m certainly not going to build anything like this anytime soon, but if someone reading this does, and you happen to make a whole lot of money revolutionizing collaborative software development, just promise to buy me one nice dinner, and you probably owe John one too, unless you are John, in which case run with it. (I’m partial to sushi, but I’m open to other options. If you devote your life to building this and lose everything, I’ll buy you dinner. Omakase Onegaishimasu)


%d bloggers like this: