2024-05-24
2024-05-24
組織を変える5つの対話 - Forkwell Library #52
- 計画と実行の分断
- 開発と品質保証の分断
それらを首尾一貫してやらないと健全なコミュニケーションとフィードバックが妨げられる
主体的に関わった方が仕事は楽しい!
事業部の人と話しながら価値のあるソフトウェアを作っていくことも楽しいよ! → とはいうものの、自分はどうしてもそこには興味を持てないんだよなあ…
「対話」が大切なのはわかるけど…
Evans 本にも書いてあるんだってさ
あなたの対話は機能していますか?
- 言えずに飲み込んでしまっていることはありませんか?
- 相手の言葉から「なぜそう考えるのか」まで掘り下げられていますか?
対話のスキルとは?
- 自己開示
- 自分の考えていることを伝える
- 他者理解
- 相手の考えていることに目を向ける
5つの対話
「あなたのチームは、機能していますか?」→ 名著らしい。表紙は見たことある
約束をする ←→ 説明責任を果たす
理念の共有
心理的安全性の確保
信頼関係の確保
信頼で結ばれた共同体
お互いに声を掛け合う。そのためには信頼関係によるコニュニケーションが不可欠
「組織パターン」という本がある
信頼関係を築くために具体的にどうしたら?
ストーリー(解釈)の一致
お互いのストーリー(解釈)が一致すれば、協力しあうことができる
1. 弱みを見せる
自分の考えや弱みを打ち明ける → うーん、これはリスクもあるし心理的な抵抗もあるなあ
そのためには? → 弱みを見せても大丈夫なんだって雰囲気を作らないといけない?
→ まず相手を受け入れてあげるのが必要なんではないかなあ
2. 言動を一致させる
人間である以上、言動が一致しないことはある
→ 言ったことをきちんと守る 小さくても目に見えることを確実に行う
3. 推論のはしご
相手の行動が期待と違うとき
→ どこで食い違っているのかを明らかにする「推論のはしご」
行動が起きるまでの一連の流れ
お互いの頭の中で起きていることを一歩ずつ確認し、どこでずれているのかを知る
意味を加えたり、信念に基づいて行動する → それは相手の頭の中にしかない
→ それは表に現れないのでこちらで推論するしかない
対話診断とは
考えや感情 | 実際の発言 |
---|---|
考えをきちんと口にしているだろうか? | 相手を知り、自分の意見を変えるつもりで質問しているだろうか? |
オープンソースがいいに決まっている → 決めつけ | |
まとめ
- 一人一人が意思決定の土俵に上がることが大事
- → うーん、組織が大きくなってくるとそれも難しくなってくるのでは?
- そのためには「対話」のスキルを向上させる必要がある
- 信頼を築くためには表層だけでなくお互いの考えの基礎を理解しあう必要がある
質問
Q. 上司から見た自分は信頼されていないと感じる時に自分の能力不足もありつつ、コミュニケーションで打破することは可能なのか
「上司から信頼されていない自分」が自分で作り上げたストーリー(解釈)なのかもしれない
日々のちょっとしたコミュニケーションの積み重ね → 「信頼されているなら上司がこういう行動をするだろう」というのは勝手にそう思っているだけでは?
自分はこう思う、こうしたかった、というのを伝える
自分を主語にする。「私は信頼されていないと感じる」否定できないので「いやそういうつもりじゃないんだけど」と上司も答えやすい
Date.iso8601
https://docs.ruby-lang.org/ja/latest/method/Date/s/iso8601.html
> Date.parse('2024-05-24')
=> Fri, 24 May 2024
> Date.parse('2024-05-24').iso8601
=> "2024-05-24"
Fetch data via API by React hooks
try {
// loading を始める
// 非同期のデータフェッチ
// データから得た一覧を state にセット
} catch (error) {
// キャッチしたエラーをセットする
} finally {
// loading を終了。これは必ず実行される
}
import * as API from '@hoge/api';
import { useEffect, useState } from 'react';
type Options = {
onError?: (error: unknown) => void;
};
export const useContractTemplates = ({ onError = (_error) => {} }: Options) => {
const [templates, setTemplates] = useState<
API.ApiType[]
>([]);
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState<unknown>(undefined);
useEffect(() => {
(async () => {
try {
setIsLoading(true);
const { data } = await API.apiHogeGet();
setTemplates(data);
} catch (error) {
setError(error);
onError(error);
} finally {
setIsLoading(false);
}
})();
}, [onError]);
return { templates, error, isLoading };
};
const { templates, isLoading: isContractTemplatesLoading } =
useContractTemplates({
onError: notifyError,
});
// これが渡される hook 内で useEffect の依存になっている
// useCallback で囲わないと無限ループ
const notifyError = React.useCallback(
(error: unknown) =>
notify({ message: API.getErrorMessage(error), type: 'error' }),
[notify]
);
ターミナルでマウスをクリックすると変な文字が入力される場合の対処法
https://qiita.com/RIckyBan/items/3a3a4f308bc39edfd1f5
$ reset
これはMac のターミナルのことかなあ?