ProductiZing Research - PowerPoint PPT Presentation

1 / 23
About This Presentation
Title:

ProductiZing Research

Description:

Results transferred to MS search teams ... 2003-06: Released to Web (RTW) Jan 01. Jan 02. Jan 03. 1-Algorithm. 2-Prototyped. 3-Designed ... – PowerPoint PPT presentation

Number of Views:56
Avg rating:3.0/5.0
Slides: 24
Provided by: johnmiller
Category:

less

Transcript and Presenter's Notes

Title: ProductiZing Research


1
ProductiZing Research
John L. Miller, Software Architect Microsoft
Research Cambridge 11-July 2007
2
Agenda
  • What is Productization?
  • Why is it difficult?
  • Can I do it myself?
  • Advice from the field

3
What is Productizing
  • Migrating research results
  • Affecting an existing product
  • Supplying algorithms and methods
  • Influencing product features
  • Writing shipping code
  • Seeding a new product

4
BM25F An algorithm
  • Algorithm for web search ranking
  • Devised at MSRC
  • Results transferred to MS search teams
  • Product team wrote their own version based upon
    the research algorithm

5
Sideshow a feature
  • Gadget Bar for Windows
  • Prototyped shared at Microsoft years ago
  • Now part of Vistathe Sidebar
  • Product team wrote their own code
  • strikingly similar appearance and features

6
TrueSkillTM Shipping Code
  • Player Ranking and Matchmaking
  • Researched in MSRC
  • Primary code developed by researchers
  • Incorporated with some modifications
  • Basis of matchmaking for most Xbox-360 games

7
Pastry external licensing
  • Pastry / Splitstream / Scribe / Squirrel
  • P2P communication framework, applications
  • Shopped inside of Microsoft, but never
    successfully transferred
  • Licensed to Skinkers for spin-out
  • LiveStation in Beta, recently in the press

8
The visible minority
  • MSRC has dozens of successful tech transfers
  • Many more never started, or fizzled out
  • No appropriate target
  • Best fit already too busy
  • Change in direction / management
  • Lack of resources

9
Why is Productization difficult?
  • Orders of magnitude more work than research
  • It cannot fail vs. it can succeed
  • Requires influencing people you dont have any
    control over
  • Internal work is a priority
  • Existing teams already have lots to do
  • Understanding new technology takes work

10
Productizing PNRP timeline
Jan 01
Jan 02
Jan 03
1-Algorithm
2-Prototyped
3-Designed
4-Implemented
5-Tested
6-Released
  • 2000-10 PNRP proposed as algorithm by Huitema
  • 2001-03 Prototype completed
  • 2 person-months effort
  • Fully functional IPv4 prototype
  • Broader than final product, but not as deep
  • 2002-04 Initial design document first draft
    completed
  • 2-3 person-years effort
  • 40 page protocol spec, 150 page design spec
  • 2002-08 Code-complete
  • 1 person-year effort for dev, 1/2 person year
    for test
  • 2003-04 Test-complete, ship bugs fixed
  • 1.5 person-years effort for dev, 2 person -years
    effort for test
  • 2003-06 Released to Web (RTW)

11
Product Quality
  • Strict coding guidelines
  • Modularity, extensibility, scalability
  • Diagnostics
  • Robustness
  • Prototype
  • Design for majority case
  • Failure exit with apologies
  • Access violation fix, re-run
  • Product code
  • Design for ALL cases
  • Failure work around the problem
  • Access violation angry customers gt
    bulletproofing

12
Example Prototype
void DrawBox(HDC dc, int x, int y) bool
bGot false HPEN p, op if (dc
NULL) dc GetDC(NULL) bGot true
p CreatePen(PS_SOLID, 10, RGB(0, 255,0))
op SelectObject(dc, p) Rectangle(dc, x,
y, 200, 200) SelectObject(dc, op)
DeleteObject(p) if (bGot) ReleaseDC(dc)
13
Example Product Quality
// Pen of 10 pixels for drawing box const int
MY_PEN_WIDTH 10 // Green pen for our box
color const COLORREF GREEN_PEN_RGB RGB(0,
255,0) // All boxes we draw are 200 x 200 const
int MY_BOX_WIDTH 200 const int MY_BOX_HEIGHT
200 HRESULT DrawBox( IN HDC
hContext, IN int iXOffset, IN int
iYOffset ) BOOL fFreeDC FALSE,
fRet FALSE int iRet 0 HRESULT hrRet
S_OK HPEN hpNew NULL, hpOld NULL
// // Get the default screen DC if we don't
already have one. // if (NULL
hContext) hContext GetDC(NULL)
if (NULL hContext)
hrRet HRESULT_FROM_WIN32(GetLastError(
)) TraceMessage(MYAPP_ERROR,
L"s(d) - Unable to get screen DC 0x08x",
__TFUNCTION__, __LINE__, hrRet) goto
Cleanup fFreeDC
TRUE
// // Create a green pen, and select it
to draw our rectangle // hpNew
CreatePen(PS_SOLID, MY_PEN_WIDTH,
GREEN_BRUSH_RGB) if (NULL hpNew)
hrRet E_FAIL TraceMessage(MYAPP_E
RROR, L"s(d) - Unable to create pen 0x08x",
__TFUNCTION__, __LINE__, hrRet) goto
Cleanup hpOld SelectObject(hContext,
hpNew) if (NULL hpOld)
hrRet E_FAIL TraceMessage(MYAPP_ERROR,
L"s(d) - Unable to select our new pen 0x08x",
__TFUNCTION__, __LINE__, hrRet) goto
Cleanup // Draw the actual rectangle
// fRet Rectangle(hContext, iXOffset,
iYOffset, MY_BOX_WIDTH, MY_BOX_HEIGHT) if
(FALSE fRet) hrRet
HRESULT_FROM_WIN32(GetLastError())
TraceMessage(MYAPP_ERROR, L"s(d) - Unable to
Draw the rectangle 0x08x", __TFUNCTION__,
__LINE__, hrRet) goto Cleanup

Cleanup // Clean up the new brush, and
select the old brush if there was one //
if (NULL ! hpNew) if (NULL !
hpOld) HPEN hpTemp
SelectObject(hpOld) if (NULL !
hpTemp) hrRet
HRESULT_FROM_WIN32(GetLastError())
TraceMessage(MYAPP_ERROR, L"s(d) - Unable to
reset Pen to original 0x08x", __TFUNCTION__,
__LINE__, hrRet) else
hpOld NULL

DeleteObject(hpNew) hpNew NULL
// If we allocated a DC, free it. //
if (fFreeDC) iRet
ReleaseDC(hContext) if (0 iRet)
hrRet E_FAIL
TraceMessage(MYAPP_ERROR, L"s(d) - Unable to
release a default DC! Will be fatal soon
0x08x", __TFUNCTION__,
__LINE__, hrRet) else
hContext NULL
return(hrRet)
14
Other Productization work
  • Funding, business model, management
  • Testing, release management, product support
  • Marketing, technical evangelism

15
Can I productize it myself?
  • If youre a renaissance person, sure!
  • A better question should you?
  • Engineering not as easy as it looks
  • LOTS of work
  • Opportunity cost is high
  • Forza 2 people x 2.5 years
  • .NET Generics 1 person x 3 years

16
How does Microsoft Cope?
  • Researchers focus on research
  • RSDEs sometimes help with productization
  • MSR Program Managers
  • Introductions, relationship help
  • Product / Research Events
  • TechFest research showcase
  • Mindswaps
  • Other avenues for transfer
  • External licensing
  • Spinout

17
How to Succeed
  • Identify your transfer goal
  • Choose your technology carefully
  • Pick the right target team
  • Communicate
  • Persistent and flexible
  • Keep perspective

18
Identify your transfer goal
  • Is the priority transferring your technology, or
    influencing a product?
  • What direction will you accept?
  • just in time research for team?
  • Transfer your original research
  • What is success?
  • Team evaluates technology?
  • Team adjusts course based on your work?
  • Your research in the hands of users

19
Choose your technology
  • Not all research is appropriate for
    productization
  • How risky is it?
  • How practical is it?
  • How much work is it to adopt?
  • What is the cost-benefit analysis?

20
Picking the right partner
  • Does your work align with their goals?
  • Do they have a good track record?
  • Do they have a future?
  • Is there mutual respect?
  • Are they at the right stage in the product cycle?
  • What is their commitment level?

21
Communicate
  • Build / maintain trust and respect
  • Identify potential issues before they become
    problems
  • Identify key contributors, owners, and establish
    rapport
  • Technical evangelism is an ongoing requirement
  • Be flexible, adaptable, and patient

22
Keep perspective
  • Its one project of many you will work on
  • Its one project of many THEY will work on
  • What are the chances its the most important work
    youll ever do?
  • People outlive projects

23
Summary
  • Productization is tough but worthwhile
  • Set your own goals, understand other peoples
    goals
  • Communicate, be persistent, and patient
Write a Comment
User Comments (0)
About PowerShow.com