SlideShare a Scribd company logo
1 of 70
Download to read offline
Lars Kurth 
Community Manager, Xen ProjectChairman, Xen Project Advisory BoardDirector, Open Source Business Office, Citrix 
lars_kurth
Goal: using Effective Communication to come up with the best compromise 
The Big Picture 
Mindset of Collaborative Engagement 
Terse Communication Style 
Dealing with rudeness / inappropriate comments 
Collaborative Communication Patterns 
–High Quality Advocacy 
–High Quality Inquiry 
–The Left Hand Column 
–The Ladder of Inference 
Anti Patterns: 
–How to spot signs of unproductive communication 
Applying Communication Patterns in Code Reviews
Enable you to Efficientlycommunicate with XenProject Developer Community 
This is a 2 way street 
Vinovyn@ Flickr
Building blocks of good communication
Ladder of Inference 
Left Hand Column 
Understanding what you and the other party may think 
High Quality Inquiry 
Asking good questions 
High Quality Explanation 
Explaining your viewpoint and inviting feedback 
Mindset and Style: 
Understanding where the other person is coming from 
How people draw conclusions
Guide what we think Guide how we feel about people and things 
THUS, they influence communication 
Thomas Galvez @ Flickr
Adversarial:Two ideas enter, one idea leaves 
Collaborative:Participants build off of each others’ ideas, working together to create something new 
• 
• 
•
YOU –ADVERSARIAL: 
Assuming there is one best wayto understand complex problems 
Assuming your point of view is complete and addresses allaspects of the situation 
Regarding your viewpoint as fact that should be obvious to others 
Inventing ways to bypass others’ options wile getting them to buy yours 
Minimizing concerns and finding ways to bypass them 
Discounting criticism and considering it a threat 
Searching for data and views that only serve to confirmyour opinionYOU –COLLABORATIVE: 
Assuming there are different waysto understand complex problems 
Assuming your point of view is incomplete and misses someaspects of the situation 
Regarding your viewpoint as hypothesis to be explored with others 
Inventing ways to test or explore options together 
Actively seeking others’ concernsand revising your plan accordingly 
Using criticism to continually improve 
Searching for data and views that might change your opinion
CONTRIBUTOR: 
Get your code looked atas quickly as possible 
May have 1-2 patch series under reviewat a given time 
Understands motivation and backgroundbehind the code(as you wrote it) 
Get your code into the code line, as quicklyas possible and with as few changesas possible 
Cares about the process of contributingbeing predictable 
May not fully understand(or in some cases not care as much about) the long term impactof contributed code 
REVIEWER / MAINTAINER: 
May have a long TODO listof code to look at 
May have to review many different patch seriesfrom many different people 
Has to reverse engineer motivation, design, etc.from code and conversation – needs to understand in order to be able to accept the code 
Wants to ensure that the code does not affect quality, performance, security, etc. in a negative way 
Cares about all open questions and concerns raisedbeing resolved 
Domain expert, who cares deeply about the long term impact of the code
Writethe code (to help you decide whether you need a design discussion, etc.) 
ANDagain before you submitthe code(to help you decide how much information you need to provide) 
Thinkabout the 
–reviewer’s viewpoint 
–the contribution process 
–anatomy of a good patchseries 
Mike Licht@ Flickr
Seth Anderson @ Flickr, croppedReviewers often adopt a terse writing style 
They often write 1000’s of messages
[Contributor] Subject: [Patch v1] Add support for HYPERVISOR_sysctlSigned-off-by: <Name of contributor> <Including the code with no other context> 
[Reviewer] >Signed-off-by: <Name of contributor> Why? 
[Contributor] I'll add authors Signed-off-by before my Signed-off-by in the next patch-set. 
[Reviewer] Sorry, I meant why are you introducing HYPERVISOR_sysctl? 
[Contributor] I use it to get real physical CPUs counter. Also I'll implement a new sysctloperation: XEN_SYSCTL_cpufreq_op. Kernel will use this op to start/stop cpufreqnotification events sending. 
[Reviewer] Please add the explanation to the commit message. Also don't add structsand definitions that you don't need, such as xen_sysctl_readconsoleand XEN_SYSCTL_SCHEDOP_putinfo.
Think about how this email exchange made you feel and share with the group 
Thomas Galvez @ Flickr
Seth Anderson @ Flickr, croppedTerseness can be interpreted as coldness or lack of emotionand can be misinterpreted as rudenessin different cultures 
Terseness can pull a conversation into an adversarial direction as it can trigger an emotional response 
Terseness can lead tomisunderstandings
In this example (and similar ones), the contributor started the review without any context in a terse style 
Reviewers normally adapt their style 
–For newcomers 
–For people where they know they don’t like a terse communication style 
Vinovyn@ Flickr
Two possibilities: 
•Terseness does notbother you you don’t have to do anything 
•Terseness doesbother you 
–Start the review thread with in an appropriate format 
Hi all | Hi <names of maintainers>, please find attached the patch series for XYZ, … Regards 
–If you never contributed to the project before, you can add a quick introduction and some background about yourself and your motivation 
–Normally, this will result in a response in a similar style. If not, you can use the Left Hand Column (see later) and privatelyapproach the reviewer.
A terse communication style usually leaves out contextual informationthat is known in the community. However, for newcomers it is importantto put it back in 
Greetings:“Hi new user X” 
Thanking:“Thank you for submitting this EFG” 
Introductions:“I maintain XYZ” 
Background:“This is used for ABC” Sign-off:“Good luck and I hope the info I provided helps”
How to spotWhat to do if it occurs 
Thomas Ricker @ Flickr, cropped
Acceptable: 
•Objectivefeedback on specific issues in code / designs / proposals / etc. 
•Objectivefeedback based on risk at a certain point in the releasecycle 
Not Acceptable: 
•Personalattack 
•Referring to “track record” of past patches 
•Arguments along the lines of “I know this better, go away” 
•Rejections of patches based on gender, ethnicity, cultural background, believes, etc. or other non-objective feedback 
•Abuse or bullying of any kind
Send an e-mail to community dot manager at xenprojectdot orgoutlining your concern 
A concern should be raised within a few daysof the issue having surfaced, with a reference to the bad behavior on a XenProject mailing list
Ladder of Inference 
Left Hand Column 
Understanding what you and the other party may think 
High Quality Inquiry 
Asking good questions 
High Quality Explanation 
Explaining your viewpoint and inviting feedback 
Mindset and Style: 
Understanding where the other person is coming from 
How people draw conclusions
Clearly state your opinion, proposal, case, background for a patch series, … 
–I (want to) propose an idea/patch/design… 
–Here is an idea/patch/design on how to solve … 
–I suggest that … 
–My point is … 
Offer reasons, assumptions, examples, analysis, … (there can be several) 
–I am assuming that … 
–Here is an example/my analysis/… 
–Here is my thinking (that led to the solution) … 
Seek Challenge 
–Did I miss anything? 
–Do you have any concerns related to the proposal? 
–Are there any assumptions that you don’t share? 
–Is there anything you would change? 
–I think … 
–Consider this … 
–Let’s assume we did … 
–Given that … 
–Let me explain why … 
–The reasons for … are … 
–Are there any concerns that you have? 
–Where is my thinking/proposal unclear? 
–[If there was some differing views beforehand] Do you think there is a way forward that satisfiesboth our views? 
Sentence starters(crutches that help you not forget anything)
Hi all, 
[states the proposal/problem this patch solves] please find attached a patch that solves the following problem:when using pvgrubin graphical mode with vnc, the grub timeout doesn't work. The countdown doesn't even start. With a serial terminal the problem doesn't occur and the countdown works as expected. 
[offers an analysis showing where the problem is suspected] I debugged the issue and identified thatwhen using a graphical terminal, checkkey() returns 0 instead of -1, when there is no activity on the mouse or keyboard. As a consequence grub thinks that the user typed something and interrupts the count down. 
[offers more background information related to the solution] Here is my thinking onhow to fix the issue: we can simply ignore keystrokes returning 0 and avoid the problem. It is safe to ignore 0 as this the NUL character anyway. 
[seeks challenge] Did I miss anything? 
RegardsXYZ 
Note that “sentencestarters” are not strictly necessary, but they do help non-experiencedcontributorsand non-native English speakers
Hello, 
this patchsetadds an implementation of the XEN_DOMCTL_memory_mappinghypercallfor the arm32 architecture. 
As a part of my thesis project (developed with Paolo Valente, in Italy, [1]), I am porting an automotive-grade real-time OS (Evidence's ERIKA Enterprise, [2], [3]) on Xenon ARM, and the port of the OS as a domUhas required the OS to be able to access peripherals performing memory-mapped I/O. As a consequence, the I/O-memory ranges related to such peripherals had to be made accessible to the domU. 
I have been working on this patchsetfor the last weeks after reading a related xen-develdiscussion ([4]), and I had no idea that Eric Trudeau had already proposed to this mailing list an implementation of the hypercall([5], [6]). The code has been tested with Linux v3.13 as dom0 and ERIKA Enterprise as domU. 
Any feedback about the patches is more than welcome. 
[1] http://www.unimore.it/ [2] http://www.evidence.eu.com/ … 
What 
Why, For Whom, Use-Case, Requirements, Implications 
Additional ContextInformation 
Note that there are NO “sentencestarters” 
Requests feedback
Clearly state your opinion, proposal, case, background for a patch series, … 
–This is what normally happens 
–IMPORTANT: Usually part 2 & 3 are omitted 
Offer reasons, assumptions, examples, analysis, … 
–This provides enough contextfor the reviewer to understand your thought process 
–It cuts down the number of iterationsas you are likely to get fewer questions 
–You can direct the reviewerto specific thought processes where you want to get feedback 
Seek Challenge 
–Signals that you are prepared to listen 
–It sets the tone for a collaborative discussion 
–You can direct focus to a specific area which worries you (e.g. have I missed an assumption) 
What, For Whom,… 
Context:Why,How,Assumptions, Examples, Restrictions, Open Issues, … 
Promptsa collaborativestyle
•Explaining a patch/design/RFC/etc. 
–A well structured patch seriesmaps one “HQ Explanation (HQE)”against a one patch(because a good patch does one logical thing and can thus be described using this technique) 
–For a patch series, you can us HQE to describe the use-case aka “what & for whom” (“what & for whom” often makes a better logical mapping for a series than a simple “what”) 
•During a design/patch review when … 
–there is a misunderstandingor potential for a misunderstanding 
–there are several ways to solvethe or an element of the problem 
–you are asked whyyou have chosen a specific approach 
–etc. 
•It can be useful in code comments (with the exception of seeking challenge)
•Acknowledging agreement, confirmation plans to fix something in a review, etc. 
•When a simple answer suffices 
–Remember, that part of the reason to use HQ Explanation is to avoid unnecessary iterations 
–It also signals and invites more comments : thus when the discussion is over there is no need for HQE
Ladder of Inference 
Left Hand Column 
Understanding what you and the other party may think 
High Quality Inquiry 
Asking good questions 
High Quality Explanation 
Explaining your viewpoint and inviting feedback 
Mindset and Style: 
Understanding where the other person is coming from 
How people draw conclusions
Aska question 
–What leads you to …? 
–What’s an example of …? 
–What else have you considered/is wrong/…? 
–What data/assumptions led you to...? 
–Why do you think…? 
–What would it take to do …? 
Disclose your reason for asking (there can be several) 
–I am asking because, … 
–I am unclear why …, so … 
–I have made a different assumption, so… 
–I made a different observation, so … 
Seek Understanding 
–What I hear you say is … is this right? 
–I hear two different points … is this correct? 
–Am I correct, you are assuming …? 
Sentence starters(crutches that help you not forget anything)
•Encourages the expression of diverse opinions, doubts and concerns 
•Helps you find out what you may be missing by encouraging others to identify possible gaps anderrors in your thinking 
•Generates informationfor more informed choices 
•Facilitates insightand adoption of new perspectives 
•Leads to learning, which is important during a code/design review
[Proposer] Can you give me a concrete example of what you mean by Dom0 having to be able to change the frequency of a CPU it does not run on? 
I am not sure I understood your point correctly. In the case of OMAP changing the CPU frequency affects both cores, but I heard that Snapdragon processors might be able to change CPU frequsindependently. 
Can you confirm whether this would be a problem? 
[Reviewer] OK. 
Let's suppose that the platform has 2 physical cpus, each cpuhas 4 cores. Let's also suppose that dom0 has only 2 vcpus, currently running on core0 and core1 of cpu0. 
In this case dom0 must be able to change the frequency of core3 of cpu1, despite not actually running on it. If this can be done without any hacks, then we can go ahead with your proposed approach. 
[Proposer] Thank you for explanation. I think this requires more and deeper investigation, but for sure Dom0 must be able to do this.
•During design / architecture / use-case related discussions to further common understandingof the problem to be solved 
•To get some more informationabout a complex situation. By disclosingthe reason for asking, you provide more detail and you also point others in a direction which causes a problem for you. 
•Very useful to check assumptionsor how someone came to a conclusion(also see Ladder of Inference) 
•When two viewpoints are clashing(Advocacy War) or a discussion goes nowhere(Recycling) and thus there is no resolution 
•This is a technique that reviewers should usewhere appropriate
[Reviewer asking a question, in response to a question about two design options] 
Have you asked yourself whether this information even needs to be exposed all the way up to libxl? 
I am asking, because I believe that the use-case will heavily determine the design of the hypercallinterface. This will also impact your question as to what the best design is. 
I would probably approach the design quite differently depending on whether a) the consumer was a low-level CLI tool (e.g. something such as xenpm), b) whether the consumer is some tool or client that consumes the information using XL, or c) whether the consumer was within a cloud orchestration stack such as openstackor cloudstack. 
From your initial design proposal, I think the answer is b) or c). Would you agree and can you clarify?
Asking 
–This is what normally happens 
–IMPORTANT: Usually part 2 & 3 are omitted 
Discloseyour reason for asking (there can be several) 
–Provides additional contextfor the recipients 
–Allows the asker to highlight specific problems or concerns 
–Guides the conversationin a certain direction (gives the asker some control in influencing the outcome) 
Seek Understanding 
–Links back to the previous speaker’s point/argument/statement/… 
–Signals willingness to collaborate 
–Shows that you listened 
Promptsa collaborativestyle 
Context, Highlightsareasof concern, guides thediscussion, …
Blinking Words Revisited
Blinking Words are words or phrases that take on many possible interpretations, and where definitions blinkbetween different meanings depending upon who hears it. 
People with similar background can interpret terminology that is commonly used in their field very differently. 
Use High Quality Inquiry to avoid issues with Blinking Words!
Sound 
London: Vibrations that travel through the air, noise. Manchester: Good/decent 
Buzzing 
London: A low, continuous humming soundManchester: Happy/excited 
Simon & His Camera @ Flickr 
Trevor Cummings @ Flickr
A: This project is a nightmare, I can’t wait for it to end. 
Identify blinking word, and ask about it 
Q: What makes the project a nightmare? 
A: It’s a nightmare because of myproject manager. 
Listen, identify another blinking word, and ask about it. In this example, we have more of a “blinking phrase”. 
Q: What did your project manager do, to make the situation hard for you? 
A: He complainsabout everything. Then he asks for more information. 
Listen, identify another blinking word, and ask about it. 
Q: Tell me about his biggest complaint? 
…
Ladder of Inference 
Left Hand Column 
Understanding what you and the other party may think 
High Quality Inquiry 
Asking good questions 
High Quality Explanation 
Explaining your viewpoint and inviting feedback 
Mindset and Style: 
Understanding where the other person is coming from 
How people draw conclusions
Assumptions:during conversations (verbal or e-mail) there are actually two conversations taking place 
•Explicit (Right hand column): the words that are spoken or writtenin an exchange between two or more persons 
•Left Hand Column:What the individuals are thinking and feeling but not saying 
Purpose: 
•Become more aware of the assumptions, thoughts and feelings that govern our conversationsand contribute to blocking us 
•We can also use HQ Inquiry to try and uncover what’s in the other person’s left Hand Column 
•This allows us to resolve difficult situationsor conversations which have become stuck
LHC: What Di is thinking & feeling but not saying 
RHC: What Di and Bill are saying 
Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. 
Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. 
Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. 
Di:Well, I’m happy to talk through any ideas you have in mind. 
Bill:I don’t have anything specific in mind. 
Di:Oh well maybe we can meet Thursday and make a list of what needs to be done.
Try and guess what Di was thinking and fill out the Left Hand Column 
Afterwards: we will discuss whether you discovered some insights 
Thomas Galvez @ Flickr
LHC: What Di is thinking & feeling but not saying 
RHC: What Di and Bill are saying 
Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. 
Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. 
Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. 
Di:Well, I’m happy to talk through any ideas you have in mind. 
Bill:I don’t have anything specific in mind. 
Di:Oh well maybe we can meet Thursday and make a list of what needs to be done.
LHC: What Di is thinking & feeling but not saying 
It’s three weeks until camp and I didn’t think he was bothered. I was hoping we would catch up. 
I need to make it clear that I’m willing to take responsibility for some things, but I don’t want to be the one left holding the bag for this. 
He never offers his help until most of the work has been done. Why can’t he get organized earlier? But it’s too late now to bring this up. 
Not helping sooner is the real reason we’re behind. He knows I will do the work and never offers help. 
No he wants me to do it so he doesn’t have to. 
I’ll have it all done by Thursday and just tell him what to do. It is so unfair. 
RHC: What Di and Bill are saying 
Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. 
Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. 
Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. 
Di:Well, I’m happy to talk through any ideas you have in mind. 
Bill:I don’t have anything specific in mind. 
Di:Oh well maybe we can meet Thursday and make a list of what needs to be done.
LHC: What Di is thinking & feeling but not saying 
It’s three weeks until camp and I didn’t think he was bothered. I was hoping we would catch up. 
I need to make it clear that I’m willing to take responsibility for some things, but I don’t want to be the one left holding the bag for this. 
He never offers his help until most of the work has been done. Why can’t he get organized earlier? But it’s too late now to bring this up. 
Not helping sooner is the real reason we’re behind. He knows I will do the work and never offers help. 
No he wants me to do it so he doesn’t have to. 
I’ll have it all done by Thursday and just tell him what to do. It is so unfair. 
RHC: What Di and Bill are saying 
Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. 
Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. 
Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. 
Di:Well, I’m happy to talk through any ideas you have in mind. 
Bill:I don’t have anything specific in mind. 
Di:Oh well maybe we can meet Thursday and make a list of what needs to be done. 
In this example Bill would have left the conversation feeling that there were no concerns. 
Di however would still feel frustratedthat her issuesabout planning, and shared responsibilities hadn’t been raised. 
By mapping the LHC and reflecting Di may choose to raise some of her concernson Thursday and clear the air.
What was unsaid, is a keyreason for misunderstandings 
It is also a key reason that generates frustrations andimpacts your mindsettowards your communication partnerand thus your ability to collaborate 
HQ Explanation and Inquiry are designed to proactively disclose upfront what otherwise would be unsaid and can help 
Vinovyn@ Flickr
Watch a trailer of “What Women Want” on https://www.youtube.com/watch?v=VFwHs7fEUNs
If we are going to be explicit about our LHC, we need to choose our very words carefully! 
Especially in a conversation in public 
Vinovyn@ Flickr
Name What you Feel 
–My concern is / I am concerned that … 
–I get frustrated when… 
–I suggest that … 
–I am impatient with … 
Make an Observation to support your case(there can be several) 
–What I observe / notice is … 
–How I see it … 
–What I hear … 
Redirect (suggest a resolution and invite feedback) 
–What would happen if we …? 
–Given X I suggest …? 
–Shall we move to… 
–We could try out … 
–I believe / feel … 
–It appears that … 
–As far as I can see … 
Sentence starters(crutches that help you not forget anything)
Contributor has proposed a patch series and it turns out that there is disagreement between two reviewers. You are deadlocked because of it. 
You can apply LHC, to try and unblock the deadlock 
[Contributor] Hi X, Y. 
I believe that this patch series is not progressing, because of differing views that have been expressed. 
How I see the situation is that, X supports solving <problem> in <this way>. And Y beliefs that <problem> is best solved in <that way>. 
We could try and set up an IRC meeting to explore the trade-offs in more detail and find a solution. What do you think? 
You would then use a combination of HQ Inquiry and Exploration techniques to get to the bottom of the problem.
I believe that this patch series is not progressing, because of differing views that have been expressed. 
How I see the situation is that, X supports solving <problem> in <this way>. And Y beliefs that <problem> is best solved in <that way>. 
As far as I can see, the cause of this disagreement is that we have not fully explored <use case ABC>. I believe this because of <XYZ>. Would you agree? 
Should we try to explore <use case ABC> some more on the list? What do you think? 
Here we have a HQ Explanationnestedwithin the Left Hand Column
Contributor has proposed a patch series and the maintainer is concerned that the solution is not general enough. The maintainer can apply LHC, to raise the concern 
[Maintainer] 
Based on our discussion about <interface X>, I am concernedthat the interface is not generic enough. 
It appears thatonly <use-case A> has been considered. 
As you know, we cannot change interfaces due to backwards compatibility guarantees. The reason is that we have many large users, who would be impacted by interface changes. Do you see this differently? 
Given, that we cannot change interface later on and we seem to not have considered all use-cases, could I ask you to think about more use cases to test the interface design and get back to me?
During technical discussions we frequently deal with trade-offs and concerns. 
–The LHC pattern is extremely useful, to highlight concerns in a non- confrontational way 
–The Make an Observation segment, ensures that the conversation stays grounded and does not become too personal (whenever emotions are involved, there is potential to damage a relationship) 
–The Redirectsegment, provides an actionable way forwardon how to resolve the concern (aka move past it) and continue to work together
Ladder of Inference 
Left Hand Column 
Understanding what you and the other party may think 
High Quality Inquiry 
Asking good questions 
High Quality Explanation 
Explaining your viewpoint and inviting feedback 
Mindset and Style: 
Understanding where the other person is coming from 
How people draw conclusions
Watch on https://www.youtube.com/watch?v=KJLqOclPqisor http://ed.ted.com/lessons/rethinking-thinking-trevor-maber
Geraint Rowland @ Flickr, cropped 
Observable Data 
Selected Data 
Assumptions 
Conclusions 
Beliefs 
Decision / Actions / Code / Design 
We make Decisions often in split seconds 
And sometimes these are bad decisions
You can use HQ Explanation to verify how you came to a Decision / Proposed Action 
You can use HQ Inquiry to work with someone else to verify how they came to a Decision / Proposed Action 
Vinovyn@ Flickr
•Discussion is not very specific 
•Comments are generalizations 
•Interpretations without explanation 
•Many blinking words without clarification 
•Advocacy wars 
•BUT:note that this technique can be time consuming
Geraint Rowland @ Flickr, cropped 
Observable Data 
Selected Data 
Assumptions 
Conclusions 
Beliefs 
Decision/Actions/… 
Stop! Time to consider my reasoning 
Identify where you are on the ladder 
Work downwards 
•Why have I chosen this course of action? Are there other actions I should have considered? 
•What belief lead to that action? Was it well-founded? 
•Why did I draw that conclusion? is the conclusion sound? 
•What am I assuming, and why? Are my assumptions valid? 
•What data have I chosen to use and why? Have I selected data rigorously? 
•What are the real facts that I should be using? Are there other facts I should consider?
Stop! Time to consider my reasoning 
Identify where you are on the ladder 
Work downwards 
•Why have I chosen this course of action? Are there other actions I should have considered? 
•What belief lead to that action? Was it well-founded? 
•Why did I draw that conclusion? is the conclusion sound? 
•What am I assuming, and why? Are my assumptions valid? 
•What data have I chosen to use and why? Have I selected data rigorously? 
•What are the real facts that I should be using? Are there other facts I should consider? 
You play back HQ Explanationto yourself 
I assumed that … Because … of <reasons> Are my assumptions valid?
Interject the conversation 
You can use the Left Hand Column to do this 
Or you can start from the bottom and work up 
Work upwards 
•Why has he/she chose this course of action? Are there other actions I should have considered? 
•What belief lead to that action? Was it well-founded? 
•Why did he/she draw that conclusion? is the conclusion sound? 
•What is he/she assuming, and why? Are my assumptions valid? 
•What data has he/she chosen to use and why? Have I selected data rigorously? 
•What are the real facts that he/she should be using? Are there other facts I should consider? 
You use HQ Inquiryfor each stage 
What assumptions lead you to <this Decision>? I am asking, because I may be making different assumptions, such as … 
I believe you are assuming … Have any assumptions that should have been considered been missed? 
I am concerned that it is nor clear howwe/you got to <this Decision>. I am observingthat <blinking word is ambiguous>. Shallwe try and explore the assumptions behindthe decision through a series of questions?
Spotting Issues and Resolving them
When … 
•Persuading and convincing dominate 
•Low Quality Explanation 
•There is no HQ Inquiry 
Action Tips: 
•Shift to HQ Inquiry 
•Use Left Hand Column to name the issue 
•Walk others down the Ladder
When … 
•A discussion has no closure 
•The same arguments are recycled with different words 
•Individuals repeat themselves often 
Action Tips: 
•Use HQ Inquiry to test for closure 
•Use Left Hand Column to name the issue 
•Use HQ Inquiry to confirm others feel that their viewpoint is understood
When … 
•A discussion lacks specifics 
•Comments are generalizations 
•Many blinking words without clarification 
Action Tips: 
•Walk down the ladder slowly using HQ Explanation and Inquiry 
•Inquire “Blinking Words” to create common understanding 
•Use HQ Inquiry to get examples, use-cases, specifics
When … 
•Past events become the focus 
•The discussion is focused on justifying past actions/decisions and there is no way forward 
•People are heavily invested in being “Right” 
Action Tips: 
•Use HQ Inquiry to try and understand all contributing factors 
•Use Left Hand Column to point out the issue 
•You and others take responsibility for your parts of the outcome
Applied to Reviews 
Vinovyn@ Flickr
Explaining 
Trade-off 
Observing 
Exploring 
low 
high 
high 
Inquiry 
Explaining
Explaining 
Trade-off 
Observing 
Exploring 
low 
high 
high 
Inquiry 
Explaining 
Useful for explaininga design/patch/series or reasons for such 
(minimize iterations) 
Useful for exploring the trade-offs and implicationsof a design/patch/series(understand a problem) 
Useful for finding a compromiseif there are differing viewson the best technical approach(find a “good” trade-off)
Left Hand Column 
•Good when exploring concerns about trade-offs, design decisions, etc. 
•Can be useful when exploring solutions and discussing trade-offs 
•Can be used to defuse disagreements and conflicts 
•Can be used to deal with Bad Behavior 
Ladder of Inference 
•Can help break down the chain of reasoning that lead to a piece of code, design, etc. 
–Useful when there is disagreement and you want to explain how you got somewhere 
–Or vice versa, to explore how someone else got somewhere (useful technique for reviewers)

More Related Content

What's hot

Cloud Native Development on Azure
Cloud Native Development on AzureCloud Native Development on Azure
Cloud Native Development on AzureEran Stiller
 
Understanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache CassandraUnderstanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache CassandraDataStax
 
Securing Systems at Cloud Scale with DevSecOps
Securing Systems at Cloud Scale with DevSecOpsSecuring Systems at Cloud Scale with DevSecOps
Securing Systems at Cloud Scale with DevSecOpsAmazon Web Services
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017Docker, Inc.
 
IP Virtual Server(IPVS) 101
IP Virtual Server(IPVS) 101IP Virtual Server(IPVS) 101
IP Virtual Server(IPVS) 101HungWei Chiu
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문Daniel Seo
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerInstruqt
 
The world of Containers with Podman, Buildah, Skopeo by Seema - CCDays
The world of Containers with Podman, Buildah, Skopeo by Seema - CCDaysThe world of Containers with Podman, Buildah, Skopeo by Seema - CCDays
The world of Containers with Podman, Buildah, Skopeo by Seema - CCDaysCodeOps Technologies LLP
 
Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례Opennaru, inc.
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료rockplace
 
Linux Container Technology 101
Linux Container Technology 101Linux Container Technology 101
Linux Container Technology 101inside-BigData.com
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...Amazon Web Services Korea
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMThe Linux Foundation
 
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-Takakiyo Tanaka
 

What's hot (20)

Cloud Native Development on Azure
Cloud Native Development on AzureCloud Native Development on Azure
Cloud Native Development on Azure
 
Understanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache CassandraUnderstanding Data Consistency in Apache Cassandra
Understanding Data Consistency in Apache Cassandra
 
Securing Systems at Cloud Scale with DevSecOps
Securing Systems at Cloud Scale with DevSecOpsSecuring Systems at Cloud Scale with DevSecOps
Securing Systems at Cloud Scale with DevSecOps
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Embedded Hypervisor for ARM
Embedded Hypervisor for ARMEmbedded Hypervisor for ARM
Embedded Hypervisor for ARM
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017
 
IP Virtual Server(IPVS) 101
IP Virtual Server(IPVS) 101IP Virtual Server(IPVS) 101
IP Virtual Server(IPVS) 101
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
The world of Containers with Podman, Buildah, Skopeo by Seema - CCDays
The world of Containers with Podman, Buildah, Skopeo by Seema - CCDaysThe world of Containers with Podman, Buildah, Skopeo by Seema - CCDays
The world of Containers with Podman, Buildah, Skopeo by Seema - CCDays
 
Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례Red Hat Ansible 적용 사례
Red Hat Ansible 적용 사례
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료
 
Linux Container Technology 101
Linux Container Technology 101Linux Container Technology 101
Linux Container Technology 101
 
Introducing DevOps
Introducing DevOpsIntroducing DevOps
Introducing DevOps
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
 
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
IBMが新しいJava EEコンテナを作っているらしい -Libertyプロファイルとは-
 
Android Virtualization: Opportunity and Organization
Android Virtualization: Opportunity and OrganizationAndroid Virtualization: Opportunity and Organization
Android Virtualization: Opportunity and Organization
 

Similar to Xen Project Contributor Training Part 3 - Communication v1.0

Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0The Linux Foundation
 
Part C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docxPart C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docxsmile790243
 
User centered design workshop
User centered design workshopUser centered design workshop
User centered design workshopPatrick McNeil
 
Basic Engineering Design (Part 7): Presenting the Solution
Basic Engineering Design (Part 7): Presenting the SolutionBasic Engineering Design (Part 7): Presenting the Solution
Basic Engineering Design (Part 7): Presenting the SolutionDenise Wilson
 
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationWhy Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationAllison Corbett
 
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...DevDay.org
 
Design Process | Tool 02: Scenario - Tool 03: Wireframe
Design Process | Tool 02: Scenario - Tool 03: WireframeDesign Process | Tool 02: Scenario - Tool 03: Wireframe
Design Process | Tool 02: Scenario - Tool 03: WireframeGessica Puri
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2Ankit Dubey
 
Agile software development
Agile software developmentAgile software development
Agile software developmentHemangi Talele
 
(E book pdf) thinking in patterns with java
(E book   pdf) thinking in patterns with java(E book   pdf) thinking in patterns with java
(E book pdf) thinking in patterns with javaRaffaella D'angelo
 
Xen Project Contributor Training Part 2 - Processes and Conventions v1.0
Xen Project Contributor Training Part 2 - Processes and Conventions v1.0Xen Project Contributor Training Part 2 - Processes and Conventions v1.0
Xen Project Contributor Training Part 2 - Processes and Conventions v1.0The Linux Foundation
 
Agile Software Development.ppt
Agile Software Development.pptAgile Software Development.ppt
Agile Software Development.pptabdulwehab2
 
Rapid Prototyping in UX Design
Rapid Prototyping in UX DesignRapid Prototyping in UX Design
Rapid Prototyping in UX DesignStephen Denning
 
Introduction to Design Thinking
Introduction to Design ThinkingIntroduction to Design Thinking
Introduction to Design ThinkingAmmad Nasir
 

Similar to Xen Project Contributor Training Part 3 - Communication v1.0 (20)

010821+presentation+oti.ppt
010821+presentation+oti.ppt010821+presentation+oti.ppt
010821+presentation+oti.ppt
 
Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0Xen Project Contributor Training - Part 1 introduction v1.0
Xen Project Contributor Training - Part 1 introduction v1.0
 
On System Design
On System DesignOn System Design
On System Design
 
Part C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docxPart C Developing Your Design SolutionThe Production Cycle.docx
Part C Developing Your Design SolutionThe Production Cycle.docx
 
User centered design workshop
User centered design workshopUser centered design workshop
User centered design workshop
 
Basic Engineering Design (Part 7): Presenting the Solution
Basic Engineering Design (Part 7): Presenting the SolutionBasic Engineering Design (Part 7): Presenting the Solution
Basic Engineering Design (Part 7): Presenting the Solution
 
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationWhy Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
 
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
 
Design Process | Tool 02: Scenario - Tool 03: Wireframe
Design Process | Tool 02: Scenario - Tool 03: WireframeDesign Process | Tool 02: Scenario - Tool 03: Wireframe
Design Process | Tool 02: Scenario - Tool 03: Wireframe
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
(E book pdf) thinking in patterns with java
(E book   pdf) thinking in patterns with java(E book   pdf) thinking in patterns with java
(E book pdf) thinking in patterns with java
 
L05 Design Patterns
L05 Design PatternsL05 Design Patterns
L05 Design Patterns
 
Xen Project Contributor Training Part 2 - Processes and Conventions v1.0
Xen Project Contributor Training Part 2 - Processes and Conventions v1.0Xen Project Contributor Training Part 2 - Processes and Conventions v1.0
Xen Project Contributor Training Part 2 - Processes and Conventions v1.0
 
Agile Software Development.ppt
Agile Software Development.pptAgile Software Development.ppt
Agile Software Development.ppt
 
Os Leung
Os LeungOs Leung
Os Leung
 
Rapid Prototyping in UX Design
Rapid Prototyping in UX DesignRapid Prototyping in UX Design
Rapid Prototyping in UX Design
 
AgileWarsaw: Spikes
AgileWarsaw: SpikesAgileWarsaw: Spikes
AgileWarsaw: Spikes
 
Eng design 4
Eng design 4Eng design 4
Eng design 4
 
Introduction to Design Thinking
Introduction to Design ThinkingIntroduction to Design Thinking
Introduction to Design Thinking
 

More from The Linux Foundation

ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleThe Linux Foundation
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...The Linux Foundation
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...The Linux Foundation
 
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...The Linux Foundation
 
XPDDS19 Keynote: Unikraft Weather Report
XPDDS19 Keynote:  Unikraft Weather ReportXPDDS19 Keynote:  Unikraft Weather Report
XPDDS19 Keynote: Unikraft Weather ReportThe Linux Foundation
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...The Linux Foundation
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxThe Linux Foundation
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...The Linux Foundation
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderThe Linux Foundation
 
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...The Linux Foundation
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...The Linux Foundation
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixThe Linux Foundation
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdThe Linux Foundation
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...The Linux Foundation
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DThe Linux Foundation
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsThe Linux Foundation
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...The Linux Foundation
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...The Linux Foundation
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...The Linux Foundation
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEThe Linux Foundation
 

More from The Linux Foundation (20)

ELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made SimpleELC2019: Static Partitioning Made Simple
ELC2019: Static Partitioning Made Simple
 
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
XPDDS19: How TrenchBoot is Enabling Measured Launch for Open-Source Platform ...
 
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
 
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
 
XPDDS19 Keynote: Unikraft Weather Report
XPDDS19 Keynote:  Unikraft Weather ReportXPDDS19 Keynote:  Unikraft Weather Report
XPDDS19 Keynote: Unikraft Weather Report
 
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
XPDDS19 Keynote: Secret-free Hypervisor: Now and Future - Wei Liu, Software E...
 
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, XilinxXPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
 
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
XPDDS19 Keynote: Patch Review for Non-maintainers - George Dunlap, Citrix Sys...
 
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, BitdefenderXPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
XPDDS19: Memories of a VM Funk - Mihai Donțu, Bitdefender
 
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...OSSJP/ALS19:  The Road to Safety Certification: Overcoming Community Challeng...
OSSJP/ALS19: The Road to Safety Certification: Overcoming Community Challeng...
 
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making... OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
 
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, CitrixXPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
XPDDS19: Speculative Sidechannels and Mitigations - Andrew Cooper, Citrix
 
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltdXPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
XPDDS19: Keeping Coherency on Arm: Reborn - Julien Grall, Arm ltd
 
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
XPDDS19: QEMU PV Backend 'qdevification'... What Does it Mean? - Paul Durrant...
 
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&DXPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
XPDDS19: Status of PCI Emulation in Xen - Roger Pau Monné, Citrix Systems R&D
 
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM SystemsXPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
XPDDS19: [ARM] OP-TEE Mediator in Xen - Volodymyr Babchuk, EPAM Systems
 
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
XPDDS19: Bringing Xen to the Masses: The Story of Building a Community-driven...
 
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
XPDDS19: Will Robots Automate Your Job Away? Streamlining Xen Project Contrib...
 
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
 
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSEXPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
XPDDS19: Core Scheduling in Xen - Jürgen Groß, SUSE
 

Recently uploaded

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Xen Project Contributor Training Part 3 - Communication v1.0

  • 1. Lars Kurth Community Manager, Xen ProjectChairman, Xen Project Advisory BoardDirector, Open Source Business Office, Citrix lars_kurth
  • 2. Goal: using Effective Communication to come up with the best compromise The Big Picture Mindset of Collaborative Engagement Terse Communication Style Dealing with rudeness / inappropriate comments Collaborative Communication Patterns –High Quality Advocacy –High Quality Inquiry –The Left Hand Column –The Ladder of Inference Anti Patterns: –How to spot signs of unproductive communication Applying Communication Patterns in Code Reviews
  • 3. Enable you to Efficientlycommunicate with XenProject Developer Community This is a 2 way street Vinovyn@ Flickr
  • 4. Building blocks of good communication
  • 5. Ladder of Inference Left Hand Column Understanding what you and the other party may think High Quality Inquiry Asking good questions High Quality Explanation Explaining your viewpoint and inviting feedback Mindset and Style: Understanding where the other person is coming from How people draw conclusions
  • 6. Guide what we think Guide how we feel about people and things THUS, they influence communication Thomas Galvez @ Flickr
  • 7. Adversarial:Two ideas enter, one idea leaves Collaborative:Participants build off of each others’ ideas, working together to create something new • • •
  • 8. YOU –ADVERSARIAL: Assuming there is one best wayto understand complex problems Assuming your point of view is complete and addresses allaspects of the situation Regarding your viewpoint as fact that should be obvious to others Inventing ways to bypass others’ options wile getting them to buy yours Minimizing concerns and finding ways to bypass them Discounting criticism and considering it a threat Searching for data and views that only serve to confirmyour opinionYOU –COLLABORATIVE: Assuming there are different waysto understand complex problems Assuming your point of view is incomplete and misses someaspects of the situation Regarding your viewpoint as hypothesis to be explored with others Inventing ways to test or explore options together Actively seeking others’ concernsand revising your plan accordingly Using criticism to continually improve Searching for data and views that might change your opinion
  • 9. CONTRIBUTOR: Get your code looked atas quickly as possible May have 1-2 patch series under reviewat a given time Understands motivation and backgroundbehind the code(as you wrote it) Get your code into the code line, as quicklyas possible and with as few changesas possible Cares about the process of contributingbeing predictable May not fully understand(or in some cases not care as much about) the long term impactof contributed code REVIEWER / MAINTAINER: May have a long TODO listof code to look at May have to review many different patch seriesfrom many different people Has to reverse engineer motivation, design, etc.from code and conversation – needs to understand in order to be able to accept the code Wants to ensure that the code does not affect quality, performance, security, etc. in a negative way Cares about all open questions and concerns raisedbeing resolved Domain expert, who cares deeply about the long term impact of the code
  • 10. Writethe code (to help you decide whether you need a design discussion, etc.) ANDagain before you submitthe code(to help you decide how much information you need to provide) Thinkabout the –reviewer’s viewpoint –the contribution process –anatomy of a good patchseries Mike Licht@ Flickr
  • 11. Seth Anderson @ Flickr, croppedReviewers often adopt a terse writing style They often write 1000’s of messages
  • 12. [Contributor] Subject: [Patch v1] Add support for HYPERVISOR_sysctlSigned-off-by: <Name of contributor> <Including the code with no other context> [Reviewer] >Signed-off-by: <Name of contributor> Why? [Contributor] I'll add authors Signed-off-by before my Signed-off-by in the next patch-set. [Reviewer] Sorry, I meant why are you introducing HYPERVISOR_sysctl? [Contributor] I use it to get real physical CPUs counter. Also I'll implement a new sysctloperation: XEN_SYSCTL_cpufreq_op. Kernel will use this op to start/stop cpufreqnotification events sending. [Reviewer] Please add the explanation to the commit message. Also don't add structsand definitions that you don't need, such as xen_sysctl_readconsoleand XEN_SYSCTL_SCHEDOP_putinfo.
  • 13. Think about how this email exchange made you feel and share with the group Thomas Galvez @ Flickr
  • 14. Seth Anderson @ Flickr, croppedTerseness can be interpreted as coldness or lack of emotionand can be misinterpreted as rudenessin different cultures Terseness can pull a conversation into an adversarial direction as it can trigger an emotional response Terseness can lead tomisunderstandings
  • 15. In this example (and similar ones), the contributor started the review without any context in a terse style Reviewers normally adapt their style –For newcomers –For people where they know they don’t like a terse communication style Vinovyn@ Flickr
  • 16. Two possibilities: •Terseness does notbother you you don’t have to do anything •Terseness doesbother you –Start the review thread with in an appropriate format Hi all | Hi <names of maintainers>, please find attached the patch series for XYZ, … Regards –If you never contributed to the project before, you can add a quick introduction and some background about yourself and your motivation –Normally, this will result in a response in a similar style. If not, you can use the Left Hand Column (see later) and privatelyapproach the reviewer.
  • 17. A terse communication style usually leaves out contextual informationthat is known in the community. However, for newcomers it is importantto put it back in Greetings:“Hi new user X” Thanking:“Thank you for submitting this EFG” Introductions:“I maintain XYZ” Background:“This is used for ABC” Sign-off:“Good luck and I hope the info I provided helps”
  • 18. How to spotWhat to do if it occurs Thomas Ricker @ Flickr, cropped
  • 19. Acceptable: •Objectivefeedback on specific issues in code / designs / proposals / etc. •Objectivefeedback based on risk at a certain point in the releasecycle Not Acceptable: •Personalattack •Referring to “track record” of past patches •Arguments along the lines of “I know this better, go away” •Rejections of patches based on gender, ethnicity, cultural background, believes, etc. or other non-objective feedback •Abuse or bullying of any kind
  • 20. Send an e-mail to community dot manager at xenprojectdot orgoutlining your concern A concern should be raised within a few daysof the issue having surfaced, with a reference to the bad behavior on a XenProject mailing list
  • 21. Ladder of Inference Left Hand Column Understanding what you and the other party may think High Quality Inquiry Asking good questions High Quality Explanation Explaining your viewpoint and inviting feedback Mindset and Style: Understanding where the other person is coming from How people draw conclusions
  • 22. Clearly state your opinion, proposal, case, background for a patch series, … –I (want to) propose an idea/patch/design… –Here is an idea/patch/design on how to solve … –I suggest that … –My point is … Offer reasons, assumptions, examples, analysis, … (there can be several) –I am assuming that … –Here is an example/my analysis/… –Here is my thinking (that led to the solution) … Seek Challenge –Did I miss anything? –Do you have any concerns related to the proposal? –Are there any assumptions that you don’t share? –Is there anything you would change? –I think … –Consider this … –Let’s assume we did … –Given that … –Let me explain why … –The reasons for … are … –Are there any concerns that you have? –Where is my thinking/proposal unclear? –[If there was some differing views beforehand] Do you think there is a way forward that satisfiesboth our views? Sentence starters(crutches that help you not forget anything)
  • 23. Hi all, [states the proposal/problem this patch solves] please find attached a patch that solves the following problem:when using pvgrubin graphical mode with vnc, the grub timeout doesn't work. The countdown doesn't even start. With a serial terminal the problem doesn't occur and the countdown works as expected. [offers an analysis showing where the problem is suspected] I debugged the issue and identified thatwhen using a graphical terminal, checkkey() returns 0 instead of -1, when there is no activity on the mouse or keyboard. As a consequence grub thinks that the user typed something and interrupts the count down. [offers more background information related to the solution] Here is my thinking onhow to fix the issue: we can simply ignore keystrokes returning 0 and avoid the problem. It is safe to ignore 0 as this the NUL character anyway. [seeks challenge] Did I miss anything? RegardsXYZ Note that “sentencestarters” are not strictly necessary, but they do help non-experiencedcontributorsand non-native English speakers
  • 24. Hello, this patchsetadds an implementation of the XEN_DOMCTL_memory_mappinghypercallfor the arm32 architecture. As a part of my thesis project (developed with Paolo Valente, in Italy, [1]), I am porting an automotive-grade real-time OS (Evidence's ERIKA Enterprise, [2], [3]) on Xenon ARM, and the port of the OS as a domUhas required the OS to be able to access peripherals performing memory-mapped I/O. As a consequence, the I/O-memory ranges related to such peripherals had to be made accessible to the domU. I have been working on this patchsetfor the last weeks after reading a related xen-develdiscussion ([4]), and I had no idea that Eric Trudeau had already proposed to this mailing list an implementation of the hypercall([5], [6]). The code has been tested with Linux v3.13 as dom0 and ERIKA Enterprise as domU. Any feedback about the patches is more than welcome. [1] http://www.unimore.it/ [2] http://www.evidence.eu.com/ … What Why, For Whom, Use-Case, Requirements, Implications Additional ContextInformation Note that there are NO “sentencestarters” Requests feedback
  • 25. Clearly state your opinion, proposal, case, background for a patch series, … –This is what normally happens –IMPORTANT: Usually part 2 & 3 are omitted Offer reasons, assumptions, examples, analysis, … –This provides enough contextfor the reviewer to understand your thought process –It cuts down the number of iterationsas you are likely to get fewer questions –You can direct the reviewerto specific thought processes where you want to get feedback Seek Challenge –Signals that you are prepared to listen –It sets the tone for a collaborative discussion –You can direct focus to a specific area which worries you (e.g. have I missed an assumption) What, For Whom,… Context:Why,How,Assumptions, Examples, Restrictions, Open Issues, … Promptsa collaborativestyle
  • 26. •Explaining a patch/design/RFC/etc. –A well structured patch seriesmaps one “HQ Explanation (HQE)”against a one patch(because a good patch does one logical thing and can thus be described using this technique) –For a patch series, you can us HQE to describe the use-case aka “what & for whom” (“what & for whom” often makes a better logical mapping for a series than a simple “what”) •During a design/patch review when … –there is a misunderstandingor potential for a misunderstanding –there are several ways to solvethe or an element of the problem –you are asked whyyou have chosen a specific approach –etc. •It can be useful in code comments (with the exception of seeking challenge)
  • 27. •Acknowledging agreement, confirmation plans to fix something in a review, etc. •When a simple answer suffices –Remember, that part of the reason to use HQ Explanation is to avoid unnecessary iterations –It also signals and invites more comments : thus when the discussion is over there is no need for HQE
  • 28. Ladder of Inference Left Hand Column Understanding what you and the other party may think High Quality Inquiry Asking good questions High Quality Explanation Explaining your viewpoint and inviting feedback Mindset and Style: Understanding where the other person is coming from How people draw conclusions
  • 29. Aska question –What leads you to …? –What’s an example of …? –What else have you considered/is wrong/…? –What data/assumptions led you to...? –Why do you think…? –What would it take to do …? Disclose your reason for asking (there can be several) –I am asking because, … –I am unclear why …, so … –I have made a different assumption, so… –I made a different observation, so … Seek Understanding –What I hear you say is … is this right? –I hear two different points … is this correct? –Am I correct, you are assuming …? Sentence starters(crutches that help you not forget anything)
  • 30. •Encourages the expression of diverse opinions, doubts and concerns •Helps you find out what you may be missing by encouraging others to identify possible gaps anderrors in your thinking •Generates informationfor more informed choices •Facilitates insightand adoption of new perspectives •Leads to learning, which is important during a code/design review
  • 31. [Proposer] Can you give me a concrete example of what you mean by Dom0 having to be able to change the frequency of a CPU it does not run on? I am not sure I understood your point correctly. In the case of OMAP changing the CPU frequency affects both cores, but I heard that Snapdragon processors might be able to change CPU frequsindependently. Can you confirm whether this would be a problem? [Reviewer] OK. Let's suppose that the platform has 2 physical cpus, each cpuhas 4 cores. Let's also suppose that dom0 has only 2 vcpus, currently running on core0 and core1 of cpu0. In this case dom0 must be able to change the frequency of core3 of cpu1, despite not actually running on it. If this can be done without any hacks, then we can go ahead with your proposed approach. [Proposer] Thank you for explanation. I think this requires more and deeper investigation, but for sure Dom0 must be able to do this.
  • 32. •During design / architecture / use-case related discussions to further common understandingof the problem to be solved •To get some more informationabout a complex situation. By disclosingthe reason for asking, you provide more detail and you also point others in a direction which causes a problem for you. •Very useful to check assumptionsor how someone came to a conclusion(also see Ladder of Inference) •When two viewpoints are clashing(Advocacy War) or a discussion goes nowhere(Recycling) and thus there is no resolution •This is a technique that reviewers should usewhere appropriate
  • 33. [Reviewer asking a question, in response to a question about two design options] Have you asked yourself whether this information even needs to be exposed all the way up to libxl? I am asking, because I believe that the use-case will heavily determine the design of the hypercallinterface. This will also impact your question as to what the best design is. I would probably approach the design quite differently depending on whether a) the consumer was a low-level CLI tool (e.g. something such as xenpm), b) whether the consumer is some tool or client that consumes the information using XL, or c) whether the consumer was within a cloud orchestration stack such as openstackor cloudstack. From your initial design proposal, I think the answer is b) or c). Would you agree and can you clarify?
  • 34. Asking –This is what normally happens –IMPORTANT: Usually part 2 & 3 are omitted Discloseyour reason for asking (there can be several) –Provides additional contextfor the recipients –Allows the asker to highlight specific problems or concerns –Guides the conversationin a certain direction (gives the asker some control in influencing the outcome) Seek Understanding –Links back to the previous speaker’s point/argument/statement/… –Signals willingness to collaborate –Shows that you listened Promptsa collaborativestyle Context, Highlightsareasof concern, guides thediscussion, …
  • 36. Blinking Words are words or phrases that take on many possible interpretations, and where definitions blinkbetween different meanings depending upon who hears it. People with similar background can interpret terminology that is commonly used in their field very differently. Use High Quality Inquiry to avoid issues with Blinking Words!
  • 37. Sound London: Vibrations that travel through the air, noise. Manchester: Good/decent Buzzing London: A low, continuous humming soundManchester: Happy/excited Simon & His Camera @ Flickr Trevor Cummings @ Flickr
  • 38. A: This project is a nightmare, I can’t wait for it to end. Identify blinking word, and ask about it Q: What makes the project a nightmare? A: It’s a nightmare because of myproject manager. Listen, identify another blinking word, and ask about it. In this example, we have more of a “blinking phrase”. Q: What did your project manager do, to make the situation hard for you? A: He complainsabout everything. Then he asks for more information. Listen, identify another blinking word, and ask about it. Q: Tell me about his biggest complaint? …
  • 39. Ladder of Inference Left Hand Column Understanding what you and the other party may think High Quality Inquiry Asking good questions High Quality Explanation Explaining your viewpoint and inviting feedback Mindset and Style: Understanding where the other person is coming from How people draw conclusions
  • 40. Assumptions:during conversations (verbal or e-mail) there are actually two conversations taking place •Explicit (Right hand column): the words that are spoken or writtenin an exchange between two or more persons •Left Hand Column:What the individuals are thinking and feeling but not saying Purpose: •Become more aware of the assumptions, thoughts and feelings that govern our conversationsand contribute to blocking us •We can also use HQ Inquiry to try and uncover what’s in the other person’s left Hand Column •This allows us to resolve difficult situationsor conversations which have become stuck
  • 41. LHC: What Di is thinking & feeling but not saying RHC: What Di and Bill are saying Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. Di:Well, I’m happy to talk through any ideas you have in mind. Bill:I don’t have anything specific in mind. Di:Oh well maybe we can meet Thursday and make a list of what needs to be done.
  • 42. Try and guess what Di was thinking and fill out the Left Hand Column Afterwards: we will discuss whether you discovered some insights Thomas Galvez @ Flickr
  • 43. LHC: What Di is thinking & feeling but not saying RHC: What Di and Bill are saying Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. Di:Well, I’m happy to talk through any ideas you have in mind. Bill:I don’t have anything specific in mind. Di:Oh well maybe we can meet Thursday and make a list of what needs to be done.
  • 44. LHC: What Di is thinking & feeling but not saying It’s three weeks until camp and I didn’t think he was bothered. I was hoping we would catch up. I need to make it clear that I’m willing to take responsibility for some things, but I don’t want to be the one left holding the bag for this. He never offers his help until most of the work has been done. Why can’t he get organized earlier? But it’s too late now to bring this up. Not helping sooner is the real reason we’re behind. He knows I will do the work and never offers help. No he wants me to do it so he doesn’t have to. I’ll have it all done by Thursday and just tell him what to do. It is so unfair. RHC: What Di and Bill are saying Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. Di:Well, I’m happy to talk through any ideas you have in mind. Bill:I don’t have anything specific in mind. Di:Oh well maybe we can meet Thursday and make a list of what needs to be done.
  • 45. LHC: What Di is thinking & feeling but not saying It’s three weeks until camp and I didn’t think he was bothered. I was hoping we would catch up. I need to make it clear that I’m willing to take responsibility for some things, but I don’t want to be the one left holding the bag for this. He never offers his help until most of the work has been done. Why can’t he get organized earlier? But it’s too late now to bring this up. Not helping sooner is the real reason we’re behind. He knows I will do the work and never offers help. No he wants me to do it so he doesn’t have to. I’ll have it all done by Thursday and just tell him what to do. It is so unfair. RHC: What Di and Bill are saying Bill:Di, we’re a bit behind with our organisation for the camp perhaps we should meet after school. Di:I’ve been very concerned about the camp but I’ve been very busy with reports and family stuff. But, of course, we can squeeze in a meeting. Bill:Well it’s occurred to me that we could use better coordination between us. There are probably some ways I could help. Di:Well, I’m happy to talk through any ideas you have in mind. Bill:I don’t have anything specific in mind. Di:Oh well maybe we can meet Thursday and make a list of what needs to be done. In this example Bill would have left the conversation feeling that there were no concerns. Di however would still feel frustratedthat her issuesabout planning, and shared responsibilities hadn’t been raised. By mapping the LHC and reflecting Di may choose to raise some of her concernson Thursday and clear the air.
  • 46. What was unsaid, is a keyreason for misunderstandings It is also a key reason that generates frustrations andimpacts your mindsettowards your communication partnerand thus your ability to collaborate HQ Explanation and Inquiry are designed to proactively disclose upfront what otherwise would be unsaid and can help Vinovyn@ Flickr
  • 47. Watch a trailer of “What Women Want” on https://www.youtube.com/watch?v=VFwHs7fEUNs
  • 48. If we are going to be explicit about our LHC, we need to choose our very words carefully! Especially in a conversation in public Vinovyn@ Flickr
  • 49. Name What you Feel –My concern is / I am concerned that … –I get frustrated when… –I suggest that … –I am impatient with … Make an Observation to support your case(there can be several) –What I observe / notice is … –How I see it … –What I hear … Redirect (suggest a resolution and invite feedback) –What would happen if we …? –Given X I suggest …? –Shall we move to… –We could try out … –I believe / feel … –It appears that … –As far as I can see … Sentence starters(crutches that help you not forget anything)
  • 50. Contributor has proposed a patch series and it turns out that there is disagreement between two reviewers. You are deadlocked because of it. You can apply LHC, to try and unblock the deadlock [Contributor] Hi X, Y. I believe that this patch series is not progressing, because of differing views that have been expressed. How I see the situation is that, X supports solving <problem> in <this way>. And Y beliefs that <problem> is best solved in <that way>. We could try and set up an IRC meeting to explore the trade-offs in more detail and find a solution. What do you think? You would then use a combination of HQ Inquiry and Exploration techniques to get to the bottom of the problem.
  • 51. I believe that this patch series is not progressing, because of differing views that have been expressed. How I see the situation is that, X supports solving <problem> in <this way>. And Y beliefs that <problem> is best solved in <that way>. As far as I can see, the cause of this disagreement is that we have not fully explored <use case ABC>. I believe this because of <XYZ>. Would you agree? Should we try to explore <use case ABC> some more on the list? What do you think? Here we have a HQ Explanationnestedwithin the Left Hand Column
  • 52. Contributor has proposed a patch series and the maintainer is concerned that the solution is not general enough. The maintainer can apply LHC, to raise the concern [Maintainer] Based on our discussion about <interface X>, I am concernedthat the interface is not generic enough. It appears thatonly <use-case A> has been considered. As you know, we cannot change interfaces due to backwards compatibility guarantees. The reason is that we have many large users, who would be impacted by interface changes. Do you see this differently? Given, that we cannot change interface later on and we seem to not have considered all use-cases, could I ask you to think about more use cases to test the interface design and get back to me?
  • 53. During technical discussions we frequently deal with trade-offs and concerns. –The LHC pattern is extremely useful, to highlight concerns in a non- confrontational way –The Make an Observation segment, ensures that the conversation stays grounded and does not become too personal (whenever emotions are involved, there is potential to damage a relationship) –The Redirectsegment, provides an actionable way forwardon how to resolve the concern (aka move past it) and continue to work together
  • 54. Ladder of Inference Left Hand Column Understanding what you and the other party may think High Quality Inquiry Asking good questions High Quality Explanation Explaining your viewpoint and inviting feedback Mindset and Style: Understanding where the other person is coming from How people draw conclusions
  • 55. Watch on https://www.youtube.com/watch?v=KJLqOclPqisor http://ed.ted.com/lessons/rethinking-thinking-trevor-maber
  • 56. Geraint Rowland @ Flickr, cropped Observable Data Selected Data Assumptions Conclusions Beliefs Decision / Actions / Code / Design We make Decisions often in split seconds And sometimes these are bad decisions
  • 57. You can use HQ Explanation to verify how you came to a Decision / Proposed Action You can use HQ Inquiry to work with someone else to verify how they came to a Decision / Proposed Action Vinovyn@ Flickr
  • 58. •Discussion is not very specific •Comments are generalizations •Interpretations without explanation •Many blinking words without clarification •Advocacy wars •BUT:note that this technique can be time consuming
  • 59. Geraint Rowland @ Flickr, cropped Observable Data Selected Data Assumptions Conclusions Beliefs Decision/Actions/… Stop! Time to consider my reasoning Identify where you are on the ladder Work downwards •Why have I chosen this course of action? Are there other actions I should have considered? •What belief lead to that action? Was it well-founded? •Why did I draw that conclusion? is the conclusion sound? •What am I assuming, and why? Are my assumptions valid? •What data have I chosen to use and why? Have I selected data rigorously? •What are the real facts that I should be using? Are there other facts I should consider?
  • 60. Stop! Time to consider my reasoning Identify where you are on the ladder Work downwards •Why have I chosen this course of action? Are there other actions I should have considered? •What belief lead to that action? Was it well-founded? •Why did I draw that conclusion? is the conclusion sound? •What am I assuming, and why? Are my assumptions valid? •What data have I chosen to use and why? Have I selected data rigorously? •What are the real facts that I should be using? Are there other facts I should consider? You play back HQ Explanationto yourself I assumed that … Because … of <reasons> Are my assumptions valid?
  • 61. Interject the conversation You can use the Left Hand Column to do this Or you can start from the bottom and work up Work upwards •Why has he/she chose this course of action? Are there other actions I should have considered? •What belief lead to that action? Was it well-founded? •Why did he/she draw that conclusion? is the conclusion sound? •What is he/she assuming, and why? Are my assumptions valid? •What data has he/she chosen to use and why? Have I selected data rigorously? •What are the real facts that he/she should be using? Are there other facts I should consider? You use HQ Inquiryfor each stage What assumptions lead you to <this Decision>? I am asking, because I may be making different assumptions, such as … I believe you are assuming … Have any assumptions that should have been considered been missed? I am concerned that it is nor clear howwe/you got to <this Decision>. I am observingthat <blinking word is ambiguous>. Shallwe try and explore the assumptions behindthe decision through a series of questions?
  • 62. Spotting Issues and Resolving them
  • 63. When … •Persuading and convincing dominate •Low Quality Explanation •There is no HQ Inquiry Action Tips: •Shift to HQ Inquiry •Use Left Hand Column to name the issue •Walk others down the Ladder
  • 64. When … •A discussion has no closure •The same arguments are recycled with different words •Individuals repeat themselves often Action Tips: •Use HQ Inquiry to test for closure •Use Left Hand Column to name the issue •Use HQ Inquiry to confirm others feel that their viewpoint is understood
  • 65. When … •A discussion lacks specifics •Comments are generalizations •Many blinking words without clarification Action Tips: •Walk down the ladder slowly using HQ Explanation and Inquiry •Inquire “Blinking Words” to create common understanding •Use HQ Inquiry to get examples, use-cases, specifics
  • 66. When … •Past events become the focus •The discussion is focused on justifying past actions/decisions and there is no way forward •People are heavily invested in being “Right” Action Tips: •Use HQ Inquiry to try and understand all contributing factors •Use Left Hand Column to point out the issue •You and others take responsibility for your parts of the outcome
  • 67. Applied to Reviews Vinovyn@ Flickr
  • 68. Explaining Trade-off Observing Exploring low high high Inquiry Explaining
  • 69. Explaining Trade-off Observing Exploring low high high Inquiry Explaining Useful for explaininga design/patch/series or reasons for such (minimize iterations) Useful for exploring the trade-offs and implicationsof a design/patch/series(understand a problem) Useful for finding a compromiseif there are differing viewson the best technical approach(find a “good” trade-off)
  • 70. Left Hand Column •Good when exploring concerns about trade-offs, design decisions, etc. •Can be useful when exploring solutions and discussing trade-offs •Can be used to defuse disagreements and conflicts •Can be used to deal with Bad Behavior Ladder of Inference •Can help break down the chain of reasoning that lead to a piece of code, design, etc. –Useful when there is disagreement and you want to explain how you got somewhere –Or vice versa, to explore how someone else got somewhere (useful technique for reviewers)