Trade-offs in managing risk and technical debt in industrial research labs: an experience report

Nowadays, industrial research labs operate like startups. In a relatively short amount of time, researchers are expected not only to explore innovative ideas but also show how the new ideas can add value to the organisation. One way to do this, especially when developing tools, is to construct usable prototypes. When the technology underlying the research tool is highly complex or niche, like program analysis, field trials with potential users also help explaining and demonstrating the benefits of the tool. Getting support from potential users helps demonstrate value to the organisation, which in turn justifies conducting more extensive research and investing more resources to enhance the initial prototype. Thus, research that involves the construction of tools need to manage both short and long term risk, and the technical debt that arises throughout the lifecycle of a research prototype. As not all prototypes will result in a technology transfer, one has to carefully manage the project resources dedicated to paying the technical debt. For example, failure to pay the debt early in the project might result in unstable prototypes that can have a negative influence on potential customers and make technology transfer harder. On the other hand, over committing resources to reduce the technical debt might result in slower research progress and failure to show improvement over state-of-the-art. In this paper, we will present experience reports from two dynamic program analysis projects. at Oracle Labs Australia.

[1]  Manu Sridharan,et al.  TAJ: effective taint analysis of web applications , 2009, PLDI '09.

[2]  StadlerLukas,et al.  Practical partial evaluation for high-performance dynamic language runtimes , 2017 .

[3]  Tony Gorschek,et al.  Exploration of Technical Debt in Start-ups , 2017, 2018 IEEE/ACM 40th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP).

[4]  Robert L. Nord,et al.  AUTOMATICALLY DETECTING TECHNICAL DEBT DISCUSSIONS , 2019 .

[5]  Sukyoung Ryu,et al.  SAFE: Formal Specification and Implementation of a Scalable Analysis Framework for ECMAScript , 2012 .

[6]  Christian Wimmer,et al.  Practical partial evaluation for high-performance dynamic language runtimes , 2017, PLDI.

[7]  Kelly Blincoe,et al.  Embracing Technical Debt, from a Startup Company Perspective , 2018, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[8]  Ronald Ramlogan,et al.  Forsaking innovation: addressing failure and innovation behaviour variety , 2019, Technol. Anal. Strateg. Manag..

[9]  Lori L. Pollock,et al.  How and When to Transfer Software Engineering Research via Extensions , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[10]  Adam Wolisz,et al.  Walker: DevOps Inspired Workflow for Experimentation , 2019, IEEE INFOCOM 2019 - IEEE Conference on Computer Communications Workshops (INFOCOM WKSHPS).

[11]  Arie van Deursen,et al.  Crawling Ajax-Based Web Applications through Dynamic Analysis of User Interface State Changes , 2012, TWEB.

[12]  Orges Cico Technical Debt Trade-Off - Experiences from Software Startups Becoming Grownups , 2019, ICSOB.

[13]  Saurabh Sinha,et al.  Lessons from the tech transfer trenches , 2016, Commun. ACM.

[14]  Tony Gorschek,et al.  Software Development in Startup Companies: The Greenfield Startup Model , 2016, IEEE Transactions on Software Engineering.

[15]  Haiyang Sun,et al.  Efficient dynamic analysis for Node.js , 2018, CC.

[16]  François Gauthier,et al.  AFFOGATO: runtime detection of injection attacks for Node.js , 2018, ISSTA/ECOOP Workshops.