to bot or not: how bots can support collaboration in software engineering (icgse 2016)

70
To Bot or Not: How Bots can Support Collaboration in Software Development Margaret-Anne (Peggy) Storey University of Victoria @margaretstorey ICGSE 2016

Upload: margaret-anne-storey

Post on 15-Apr-2017

695 views

Category:

Software


1 download

TRANSCRIPT

Page 1: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

To Bot or Not: How Bots can Support Collaboration in Software Development

Margaret-Anne (Peggy) StoreyUniversity of Victoria@margaretstorey

ICGSE 2016

Page 2: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Acknowledgements: Alexey Zagalsky, Carlene Lebeuf (UVic)Alexander Serebrenik, Bin Lin (TU Eindhoven)

Page 3: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Kevin Kelly, Futurist: “You’ll be paid in the future based on how well you work with robots.”

Page 4: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

http://interestingengineering.com/programmer-automates-job-6-years-boss-fires-finds/

Page 5: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

1968 1980 1990 2000 20101970

Developer tools over time Towards the social programmer…

Storey et al., ICSE FOSE 2014

Page 6: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

How developers stay up to date using Twitter

How developers assess each other based on their development and networking activity

How a crowd of developers document open source API’s through Stackoverflow

How developers share tacit knowledge on

How developers coordinate which code is committed and accepted through GitHub

Page 7: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

1968 1980 1990 2000 20101970

Developer tools over time Towards the social programmer…

Surveyed over 2,500 devs

Storey et al., ICSE FOSE 2014

Page 8: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Challenges 2

3. Community

Economic/Geographic/Demographic (23)

economic constraints (poor internet) (2)

censorship (2)

cultural barriers(3)

minorities (2)

time zones (12)

technological contraints (2)

Participation (21)participating in (12)

difficulty joining(1)

intimidation (ability or skills) (9)

need for mentors (2)

involving others (9)lack of involvement (2)

finding right people (4)

convincing others (to participate) (2)

managing community (1)

1. Developer

Distractions & Interruptions (36+)

Keeping up (45)not enough time (3)

keeping up with technologies (34)

Keeping up with projects (8)finding good examples (3)

Design comprehension (2)

Bug comprehension (1)

Code comprehension (2)

Privacy (6+)

Collaborating with others (27)code sharing (7)

(tool support for) pairing (3)

activity watching (3)

getting feedback (5)

explaining code (4)

code review (5)

6. Content

Quantity (5)

Quality (39)obsolete information (5)

spam (4)

saving/retrieving historical data (3)

finding niche content (4)

poor quality (23)

Noise (23)

5. Channels/tools

Channel/tool overload (19)

Channel/tool fragmentation (45)Fragmented communication over tools (42)

tool adoption (reluctance) (3)

Usability and Learnability (27)

tool documentation (lacking) (4)

vendor lockin (5)

tool friction18)

buggy tools (2)

(too many) notifications (5)

time to learn (5)

media literacy (22)

anonymous (not wanted) (1)

Lacking tool support (33)

poor coordination tools (2)

poor project management tools (3)

search (inadequate) (10)

poor mobile support (3)

no one tool fits all (10)

poor communication tools (5)

2. ProjectCoordination (19)scheduling (3)

taking ownership (1)

no roadmap (1)

distributing work (7)

workflow friction (4)

task understanding (1)

code conflicts (1)

Technical, organizational issues (13)

project documentation (1)

code quality (1)

organizational constraints (5)outside communication discouraged (1)

many social tools specific to open source (1)

timely release of government data (1)

proprietary services (3)

standards (2)

licensing (2)

managing requirements (2)

poor project management (1)

4. Social

People issues (20)

dealing with people (11)

attitude (of other developers) (9)

Communication (105)missing communication (3)

communicating with users (18)

slow responses (7)

language (barriers) (19)

miscommunication (26)

not synchronous (6)

urgent communication (1)

communication takes effort (9)

not f2f (16)

M. Storey, et al., How Social and Communication Channels Shape and Challenge a Participatory Culture in Software Development, Transactions on Software Engineering, to appear.

Page 9: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

B. Lin, A. Zagalsky, M.-A. Storey, and A. Serebrenik. Why developers are slacking off: Understanding how software teams use slack. CSCW 2016 (poster paper).

Page 10: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

To Bot or Not?What is a Bot

How Bots play a role in SE

Enhancing (Global) Software Development with Bots

Risks and Research Opportunities

Page 11: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

To Bot or Not?What is a Bot

How Bots play a role in SE

Enhancing (Global) Software Development with Bots

Risks and Research Opportunities

Page 12: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

What is a bot?

A bot is an application that performs automated, repetitive, pre-defined tasks.

From setting an alarm, to telling you today’s weather forecast, to gathering and broadcasting information.

Page 13: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Going back in time… 1966

Page 14: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Bots — 1988IRC provided a platform and language for writing your bots

Page 15: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)
Page 16: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)
Page 17: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)
Page 18: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Defining Bots?

From scripts to processes to agents to apps to integration to bots… An emergent software concept…

One definition:

Conduits between users and services typically through a conversational UI

Page 19: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Dimensions of Bots

What they do… How autonomous… How intelligent… How to interact with them… Where they dwell… How they are created…

Page 20: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

What they do!Good Bots:•Chatbots•Crawlers•Transactional bots• Informational bots•Monitoring (health, vulnerabilities)

•Art bots•Game bots

Bad Bots:• Hackers• Spammers• Scrapers• Impersonators• Fraud

Page 21: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

How autonomous…

Pull mode: User initiates the interaction

Push mode: Bot initiates the interaction

May have a combination of both

Page 22: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

How intelligent…Some follow simple rules… (SLT) passing control to human if needed

More intelligent bots use NLP and AI, learning over time

https://techcrunch.com/2016/07/30/the-human-role-in-a-bot-dominated-future/

Page 23: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

How to interact with Bots

“In conversational UIs, personality is the new UX”

How people interact with them influenced by gender, personality, metaphor used etc

http://www.fastcodesign.com/3054934/the-next-phase-of-ux-designing-chatbot-personalities

Page 24: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Where Bots dwellOn the internet at large or on particular platforms/networks such as:

• Facebook (11,000 bots in 3 months) • Microsoft • Telegram • Kik • Slack

…….

http://www.theverge.com/2016/7/1/12072456/facebook-messenger-bot-growth

Page 25: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Microsoft: the operating system of the future isn’t Windows, but "conversation as a platform”

Page 26: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

aims to replace apps “one bot at a time”

Page 27: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)
Page 28: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Howdy launched Botkit, a library of "building blocks for building Slack bots”

Microsoft Bot connector:

Requires APIs and developer ecosystem… bottom up..

How they are created

Page 29: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

https://www.packtpub.com/application-development/building-slack-bots

Page 30: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

To Bot or Not?What is a Bot

How Bots play a role in SE

Enhancing (Global) Software Development with Bots

Risks and Research Opportunities

Page 31: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

“Scaling to 1000’s of developers — automation is required!” [Jacek Czerwonka]

Page 32: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Software development Bot roles

Code Bots Test Bots DevOps Bots Support Bots Documentation Bots Entertainment Bots

Storey and Zagalsky, Disrupting Developer Productivity One Bot at a Time, FSE Visions and Reflections Track 2016 (to appear) Categories also inspired by Sven Peter: https://svenpet.com/talks/rise-of-the-machines-automate-your-development/

Page 33: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Code BotsMake coding activities more efficient/effective through integration of services and task automation:

• Commit code automatically (after review/tests)

• Update/create tasks/issues/bugs (BugBot)

• Conduct/facilitate peer review (find reviewers)

• Automatically merge pull requests (Travis)

Page 34: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

http://www.wired.com/2015/10/the-most-important-startups-hardest-worker-isnt-a-person/

Page 35: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Test botsBots that help test or detect bugs or code quality issues:

• Run static analysis tests (FindBugs)

• Open issue for code quality concern (Freud)

• Monitor technical debt over time

• Test UI changes

• Detect flaky tests

• Balance tests

Page 36: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

https://coveralls.io/

Page 37: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

DevOps Bots

Help teams manage complex build, deployment from within their chat environment:

• Stakeholders gain awareness while learning

• Monitor running services

• Coordinate team schedules (who is on call)

• Measure and analyze workflow, improve feedback

ChatOps are "putting tools right in the middle of the conversation" - Jesse Newland, GitHub

Page 38: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

“Chatting with your infrastructure might seem strange at first but it's easy to see the benefits. A timeline of who's deploying what and deployments that are so easy anyone can trigger them.’' https://skillsmatter.com/skillscasts/7629-devops-for-slackers-deploying-code-with-a-chat-bot

https://www.pagerduty.com/why-pagerduty/it-operations/

Page 39: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Interact with users (at scale) to offer support:

• Answer frequently asked questions (consult and then build up knowledge base)

• Analyze user feedback, identify and triage most important bugs to fix

Support Bots

Page 40: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)
Page 41: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Documentation BotsBots that produce documentation from developer artifacts:

• Author release notes from commit messages

• Integrate analytics and visualizations into reports and dashboards

• Translating documentation on the fly

• Find/aggregate answers/documentation from community resources such as Stack Overflow or Youtube

Page 42: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)
Page 43: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

https://bvasiles.github.io/papers/chi16bot.pdf

Page 44: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Entertainment Bots

Bots that can entertain, amuse, play games!

http://www.wired.com/2016/05/giphy-google-gifs-gifts-world-keyboard/

Page 45: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

SE Bot Roles

Code Bots Test Bots DevOps Bots Support Bots Documentation Bots Entertainment BotsCollaboration is everywhere…

Storey and Zagalsky, Disrupting Developer Productivity One Bot at a Time, FSE Visions and Reflections Track 2016 (to appear)

Page 46: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Collaboration…

Awareness Coordination Communication

"ChatOps is a collaboration model that connects people, tools, processes, and automation into a transparent workflow" - Sean Regan, Atlassian

“The team with the most situational awareness wins” — Mary Poppendieck, Lean Software Development

Page 47: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

http://bots.apievangelist.com/organizations/slackbots/

Page 48: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)
Page 49: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

"The real potential of bots isn’t going to be realized with one person using one bot (that’s the old app model), but with multiple people having a normal conversation while the bots augment the stream with relevant context and functionality. This is a pretty far-reaching evolution of how humans interact with technology. It’s cognitively ergonomic."

https://www.linkedin.com/pulse/bots-get-serious-my-two-new-investments-from-general-catalyst-libin

Page 50: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

To Bot or Not?What is a Bot

How Bots play a role in SE

Enhancing (Global) Software Development with Bots

Risks and Research Opportunities

Page 51: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

How to design Bots?

Metaphor matters! The writing matters! Command line or conversational UI? Principles but which ones?

"The software must be doing a good job, because people know it’s a robot, but still feel the need to say ‘thank you.’”

https://blog.kik.com/2016/03/14/three-golden-rules-for-bot-development/

“Avoid rhetorical questions”“Watch for notification overload”

“Build in a kill switch”

Page 52: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Preliminary productivity framework of design elements for bots

Efficiency — do things faster

Effectiveness —work towards meaningful goals

M. Storey and A. Zagalsky, Disrupting Developer Productivity One Bot at a Time, FSE 2016 Visions and Reflections Track, 2016, To appear.

http://www.productiveflourishing.com/a-general-theory-of-productivity/

Page 53: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

EfficiencyAutomate: repetitive/tedious tasks

Help developers stay in flow: reduce disruptions, distractions provide support /eliminate context switching

Page 54: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

EffectivenessImprove decision making:

capture, analyze data share knowledge across team members

Support team cognition: provide situational awareness support team communication

Regulate individual and team tasks and goals…

Page 55: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

M. Arciniegas-Mendez, A. Zagalsky, M.-A. Storey, and A. F. Hadwin. Regulation as an enabler for collaborative software development. CHASE, 2015.

Page 56: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

EffectivenessImprove decision making

Support team cognition

Regulate individual and team tasks and goals:initiate and track reminderssupport coordination across tasksvisualize progresspromote/adapt to team culture

M. Arciniegas-Mendez, A. Zagalsky, M.-A. Storey, and A. F. Hadwin. Regulation as an enabler for collaborative software development. CHASE, 2015.

Page 57: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Self regulation

Page 58: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Co-regulation

Page 59: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Shared regulation

Page 60: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

http://meekan.com/slack/

Shared regulation

Page 61: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

To Bot or Not?What is a Bot

How Bots play a role in SE

Enhancing (Global) Software Development with Bots

Risks and Research Opportunities

Page 62: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Risk #1Will Bots Change how people relate to one another? “Children are learning that it’s safer to talk to a computer

than to another human.” Sherry Turkle

www.nytimes.com/2015/08/04/science/for-sympathetic-ear-more-chinese-turn-to-smartphone-program.html?_r=0

Page 63: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Risk #2

What ethical framework should we use for Bots?

Is deception ok? What about privacy of information that is more likely to be shared by users with Bots? Misuse of sentiment analysis? Stalking?

Page 64: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Risk #3Be careful what you wish for!

Page 65: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Risk #4When not to Bot!

Information/interactions are not discoverable Interactions may be ephemeral (in Chat platforms) Reduced opportunities for serendipity and learning Direct manipulation better for complex tasks May bring new disruptions and complexities [Code Drones to the rescue? Acharya et al, ICSE 2016]

Page 66: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

“Bots are a test bed for experiments in the area of artificial intelligence” [Leonard, Andrew. Bots: The Origin of the New Species]

Ease adoption of automated software engineering

How do these “virtual team members” impact (global) software developers as well as the projects they participate on?

Research opportunities

Would adding “botpower” to a late project make it later?

Page 67: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

To Bot or Not?What is a Bot

How Bots play a role in SE

Enhancing (Global) Software Development with Bots

Risks and Research Opportunities

Page 68: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

@margaretstorey

Page 69: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

References M. Storey, The Evolution of the Social Programmer, Mining Software Repositories

(MSR) 2012 Keynote http://www.slideshare.net/mastorey/msr-2012-keynote-storey-slideshareM. Storey et al., The (R)evolution of Social Media in Software Engineering, ICSE

Future of Software Engineering 2014, http://www.slideshare.net/mastorey/icse2014-fose-social-media http://chiselgroup.files.wordpress.com/2014/01/fose14main-storey-submitted.pdf

M. Arciniegas-Mendez, A. Zagalsky, M.-A. Storey, and A. F. Hadwin. Regulation as an enabler for collaborative software development. In Proceedings of the Eighth International Workshop on Cooperative and Human Aspects of Software Engineering, pages 97-100. IEEE Press, 2015.

B. Lin, A. Zagalsky, M.-A. Storey, and A. Serebrenik. Why developers are slacking off: Understanding how software teams use slack. In Proceedings of the 19th ACM Conference on Computer Supported Cooperative Work and Social Computing Companion, pages 333{336. ACM, 2016.

M. Storey and A. Zagalsky, Disrupting Developer Productivity One Bot at a Time, FSE 2016 Visions Track, 2016, to appear.

M. Storey, L. Singer, F. Figueira Filho, A. Zagalsky, and D. German, How Social and Communication Channels Shape and Challenge a Participatory Culture in Software Development, Transactions on Software Engineering, to appear.

Page 70: To Bot or Not:  How Bots can Support Collaboration in Software Engineering (ICGSE 2016)

Additional references(in addition to links throughout the talk)

Leonard, Andrew. Bots: The Origin of the New Species. Wired Books, Incorporated, 1997.

M. P. Acharya, C. Parnin, N. A. Kraft, A. Dagnino, and X. Qu. Code drones. In Proceedings of the 38th International Conference on Software Engineering Companion, ICSE '16, pages 785-788, New York, NY,USA, 2016. ACM.

M. Poppendieck and T. Poppendieck. Lean Software Development: An Agile Toolkit. Addison-Wesley, 2003.

A, Murgia, D. Janssens, S, Demeyer, and B, Vasilescu. 2016. Among the Machines: Human-Bot Interaction on Social Q&A Websites. In Proceedings of the 2016 CHI Conference Extended Abstracts on Human Factors in Computing Systems (CHI EA '16). ACM, New York, NY, USA, 1272-1279.