Brandt, Joel Example-Centric Programming
<p>May 28, 2010 6:37 PM
 
    PhD  student at Stfd...  great idea.  OPPORTUNISTIC Prog see way below...
Advisor introduced him,  Scott Klemmer.
 
He developed a program called BLUEPRINT in the Adobe FLEX coding environment to
help with web search to find examples of code for program development.
 
This is a great idea, great talk.  It reminds me of how much more productive
coders are now than in my day.
 
See the video below.   say u're trying to remember the HTML to take data in a form.
U can easily locate it on the web and then copy and paste/ modify.
 
By 2012  13M people will do programming on their jobs, ob which only 3 M  will be
prof coders  (USA).  impt to make it easy.  Scientists, engrs, etc
 
They first did a study to find out how people used the web to help in programming.
Observed 20 people writing code for a project  ? blding a chat room.
 
20 S's  had  basic knowledge (not advanced) of  PHP,  JavaScript, and HTML.
They had only 2.5 hours to complete project  and spent  19% on the web.
LEARNING  (eg  reading tutorials) ...  new skills
CLARIFYING  prior knowledgge or transferring knowledge from other languages
REMINDING:  using web as external memory.
 
LEARNING:  eg  reading an AJAX  tutorial or JS tutorial.
 
only want to learn just enuf to do the TASK at hand....
just in time  learning.
Clarification ...  "language analogies"  with other langs.
 
Reminder...  basically a web-enabled  "auto-complete:  to augment their memory.
 
BLUEPRINT was their coding search environment....
it automatic.  tells the web abt their program environment, language and situation...
provides CONTEXT automatically.
 
queiries  to the web  can be
CODE only   (eg  if user is looking for  API  examples)
ENGLISH ONLY  (eg  with tutorials on langs)
or  code + English
 
programmers freq look for example code to clarify syntax.
 
they tried this out in Adobe FLEX 3  environment...  got lots of use;
users generate better code, faster.  tried study for 12 months at Adobe Labs.
 
 
Opportunistic Programming is a method of software development that <b>emphasizes speed and ease of development</b> over code robustness and maintainability. Coding in this way allows individuals to explore many ideas quickly, which has an important place in the overall sofware engineering process. <b>Steps like prototyping, ideation and discovery </b>are often best accomplished by building a functional piece of software quickly and easily without the typical concerns of a broader-scale software engineering project. Through fieldwork and a laboratory study, we are focusing on five characteristics of opportunistic programming: building software from scratch using high-level tools, adding new functionality through copy-and-paste, atypically rapid iteration, considering code to be impermanent, and facing a unique set of debugging challenges. Using results from these two projects, we plan on developing tools aimed at <b>opportunistic programming that focus on debugging, code foraging and reuse, and documentation</b>.
 </p>