OBJECT-ORIENTED PROGRAMMING, SYSTEMS, LANGUAGES and APPLICATIONS
 
 
Program
 


Program (2mb PDF)

Explore
  Invited Speakers
  Onward!
  Panels
  Workshops
Discover
  Research Papers
  Student Research Comp.
  Posters
  Doctoral Symposium
  Educators' Symposium
  Wiki Symposium
  Dynamic Lang. Symp.
Understand
  Tutorials
  Essays
  Practitioner Reports
  Demonstrations
Create
  DesignFest
  Lightning Talks
  FlashBoF
  Instant Arts School Exp.
 
Other Events
 
Resort Map (364kb PDF)
 
Resort Map (JPG)

 

 
Basket
 

view, help

"What is the least understood thing in computing that if only it were understood, everything would change?"

 

 
Page
 

Printer-friendly

 
 
  > Onward! > Breakthrough Ideas



What is the least understood thing in computing that if only it were understood, everything would change?

Glen Vanderburg, Countrywide Home Loans

We have a mania for abstraction, but our brains are optimized for the concrete. We are trained to abstract, to generalize. Butler Lampson famously said "All problems in Computer Science can be solved by another level of indirection." The drive for abstraction isn't wrong; it's an essential part of software development. But we generally do it so irregularly and so poorly, and one reason is that abstraction is somewhat unnatural for us.

We learn best when we can hear, taste, smell, and (especially) touch and manipulate the world. The best programmers are good at a kind of "mental modeling" that allows them to do the same with the abstract components of our field. A good spatial sense and visualization seems to accompany software skill. We need to find better ways to bring the rest of our brains?the parts that are designed for life in the real world--to bear on the problems of programming. We need to build better tools, tools that don?t lock these complex, multidimensional constructs into oversimplified, two-dimensional representations. More importantly, we need to teach and cultivate those mental mapping and modeling skills that the great programmers use instinctively, independent of their tools. We need to program with our whole selves, not just the tiny parts of our brain that are good at abstraction.

 
.