scieee AI-readable full text Open interactive document viewer

Managing Creativity

SPARKS, MICHAEL

Abstract

Kamaelia is a research and development project. As a result there are reseach phases, development phases and transition between the two. This presentation describes a mechanism for enabling maximum creativity and novelty during the research phase and having a structured process for transitioning that code to a productised form. It does this by having a /Sketches area in the repo and a structured non-/Sketches area where things like tests, repeatability/etc and documentation are required. The process is compatible with what is now called lean software engineering, lean product development and lean startup. This presentation was given at PyconUK 2007.

Full text

[email protected] Managing Creativity Pycon UK, Sept 2007 Michael Sparks Kamaelia Project BBC Research [email protected] Conflicting needs Research ●Don't know what the problem is ●Don't know the solution ●Don't know suitable approach ●Unknown requirements Production ●Know the problem inside out ●Have a solution which must be reliable ●Approach is known and engineered ●Requirements clear, but with scope for growth [email protected] Research ●Don't know what the problem is ●Don't know the solution ●Don't know suitable approach ●Unknown requirements Production ●Know the problem inside out ●Have a solution which must be reliable ●Approach is known and engineered ●Requirements clear, but with scope for growth Conflicting needs How to go from here to here? [email protected] Research ●Don't know what the problem is ●Don't know the solution ●Don't know suitable approach ●Unknown requirements Production ●Know the problem inside out ●Have a solution which must be reliable ●Approach is known and engineered ●Requirements clear, but with scope for growth Conflicting needs More like this! [email protected] Process ●Have an idea ●Build something to see if idea is good ●Review & build systems using it it is a good idea ●Make possible to use in production system ●Make production quality Exploration is very different from polishing [email protected] hackers&painters vs CS ●Hackers & Painters essentially postulates that coding is like painting ●Computer Science essentially postulates that coding is like engineering with solid foundations we can follow sound rules & constraints ●Both are right even though in conflict Huh? [email protected] Building a Building ●Sketch a design ●Collect system requirements ●Build models ●Refine ●Architect building based on physical stresses etc ●Refine ●Build Both engineered & crafted [email protected] Key Trick – Code as Wiki In python terms: Namespaces are one honking great idea -- let's do more of those! -- import this Or wiki terms: Enlarge Space - In order to preserve GlobalResources, create more public space. This reduces limited resource tension. Unlike the RealWorld, land is cheap online. [email protected] Core Approach ●Encourage play - capture results (sketchbooks) ●Encourage system building, component extraction ●Reuse & refine components ●Make testable ●Reimplement as TDD – potentially formalise tests as formal spec ●Version control as core enabler [email protected] Shared Sketchbooks /Sketches [email protected] Shared Sketchbooks: /Sketches ●/Sketches/MPS – this is mine, I can do what I like there. ●Does not have to work ●Can be imperfect ●Everyone else can see it ●eg –/Sketches/MPS/Systems/Paint [email protected] Shared Sketchbooks: /Sketches ●/Sketches/MH – this is Matt's, he can do what he likes there. ●Does not have to work, can be imperfect, etc ●Can copy other people's sketches & extend ●eg –/Sketches/MH/Sketcher [email protected] Shared Sketchbooks: /Sketches ●Can also play with new ideas –Handwriting recognition –3D Page turning –a “record for me” PVR ●GestureRecognition/StrokeRecogniser.py , OpenGL/3fFolding.py, DVB_PSI/PVR.py [email protected] Shared Sketchbooks: /Sketches ●Same goes for anyone else ●Trainee engineers ●Summer of code students ●Anyone else (you?) ●Can get feedback much sooner, and do fast diffs [email protected] What's there? Video annotating whiteboard, P2P swarming radio, IRC clients, pygame experiments, topology visualisation, paint programs, a multicast toolset, shedskin (python to C++) compatible micro-axon, simple reliable multicast experiments, sub-component level experiments, new tools for integration outside kamaelia, networked audio mixer matrix, record everything tv experiments, seaside-like HTTP server, random experiments, tools for multicast of DVB & playback, networking of pipes distribution, gesture (and basic handwriting) recognition, custom PVRs, mobile reframers, 3D video playback, PVR content viewer for mobiles, trusted communications experiments, speex tools, Icecast clients, subtitling tickers, libao tests, early 3D work, bittorrent integration work, DVB tools, weather scraping etc [email protected] Visible Integration [email protected] Visible Integration ●/branches/private_<initials>_Scratch ●Personal version of trunk – may or may not actually be shared. ●Benefits of sharing –Not at the whims of a merger to use new namespaces –Don't corrupt others –Provide mechanism to demo is “OK” [email protected] Visible Integration ●As you go through this process – more detail may emerge, and become clearer making more generally useful – better case for mainline merge [email protected] Hand off branches