幸福度を最大化するためのエンジニアの働き方をまとめてみた


# 背景
先日、[科学的な適職](https://amzn.to/2GK7mqC)という本を読みました。この本での適職とは、「自分が幸せになる仕事=適職」であり、どのような仕事、仕事の仕方であれば幸福になれるかどうかが書かれています。つまり、この本に書かれているのは「どのような仕事を選べば幸福になるのか」ではなく、**「どのような仕事をすれば、幸福になるのか」** に重きをおいてその具体的なアドバイスがたくさん掲載されています。今回は、幸福度を最大化することが、仕事のパフォーマンスを最大化に繋がると信じている私が、**エンジニアの仕事をするにあたって、どのような仕事の仕方をしていけば、今以上に幸福を最大化することができるか**をまとめてみました。


> あくまで[科学的な転職](https://amzn.to/34rdmMS)の本を僕なりに解釈したものです。以下を実行したことにより、必ず幸福度が最大化するという保証はございません。

# やった方がいいこと
以下本からの引用
> ❶自由：その仕事に裁量権はあるか
❷達成：前に進んでいる感覚は得られるか
❸焦点：自分のモチベーションタイプに合っているか
❹明確：なすべきことやビジョン、評価軸はハッキリしているか
❺多様：作業の内容にバリエーションはあるか
❻仲間：組織内に助けてくれる友人はいるか
❼貢献：どれだけ世の中の役に立つか

## 自由：その仕事に裁量権はあるか
ある程度の自由が必要です。具体的にエンジニアだと以下のようなことかと思います。

* リモートワーク(場所の自由)
* マクロマネジメント(何時に何をやったかの報告がないかどうか)


## 達成：前に進んでいる感覚は得られるか
少しでも前に進んでいる状況が得られているかが大切です。開発物のフィードバックが存在するか（開発物がどのように製品に影響したかを把握できる)

## 焦点：自分のモチベーションタイプに合っているか
少し補足します。心理学には制御焦点理論[^1]というものがありまして、自分のモチベーションタイプによってモチベーションに影響するというものです。なお、自分のモチベーションタイプていうのは二元論ではなくバランスなので、どちらの動機が自分のタイプであるかどうかを見極めることが大切です。以下、具体的なタスクです。

### ポジティブな結果を目指すようなタスク
* マークアップ(自分が作ったものがダイレクトに反映される)
* パフォーマンスチューニング(パフォーマンス改善によって、ダイレクトにプロダクトに反映される)

### ネガティブな結果を目指すタスク
* リファクタリング（負債を解消して、未来の負の影響を取り潰す）
* セキュリティ対策(リスクコントロールして、未来の負の影響を取り潰す)
* QA(全般)(テストをして、未来の負の影響を取り潰す)

## 明確：なすべきことやビジョン、評価軸はハッキリしているか
* 会社にビジョン、ミッション、バリューが存在し、それが浸透しているか
* OKR, KPIなどの組織全体で追うべき指標が存在し、自分が行うタスクに紐づいている
* エンジニアの評価軸が存在しているか(etc. 単位時間あたりのコード量の多さによって評価が査定されるということ)

## 多様：作業の内容にバリエーションはあるか
エンジニアの業務は多岐に渡ります。プロダクト機能考案、パフォーマンスの点検、データ分析などなど、、、
**ただマークアップコーディングを行うだけではなく、QAやバックエンド業務、設計にも少しでも携われているか、はたまた携わることができる状況になっているか**というのが多様にあたるかと思います。また、自分はこれしかやらないと決めるのではなく、様々な業務にチャレンジする姿勢が大事です。


## 仲間：組織内に助けてくれる友人はいるか
スタートアップだと、エンジニア1人の状態などはざらにあります。エンジニアの業務は専門知識が必要なことが多いので、エンジニア1人だと、周りがサポートできない状況もありえます。また、職場の環境によってはエンジニア同士のコミュニケーションが盛んではなく1人作業になるかと思います。**同程度の業務知識をもち、サポートができる環境（納期がきつく、サポートできる時間がない,
コミュニケーションができない雰囲気ではない環境）を作る**ことで、エンジニアの幸福度は高まります。

## 貢献：どれだけ世の中の役に立つか
自分が行っているタスクがどのように世の中に貢献しているかを把握することも大切です。
具体的にいうと、以下のことを把握していることが大切です。
* 自分が携わっているこのサービスは社会にどのような影響をもたらしうるか
* 今行っているタスクはそのサービスにどのように影響するか

自分が行うタスクについて、ただタスク内容だけしか把握できていないのであれば、「このタスクを行うことでどのような影響ができるか」と聞いたりして、**幸福度を高めるためのコミュニケーション**を積極的にしていきましょう。

# やってはいけないこと
以下本からの引用
> ❶ワークライフバランスの崩壊
❷雇用が不安定
❸長時間労働
❹シフトワーク
❺仕事のコントロール権がない
❻ソーシャルサポートがない
❼組織内に不公平が多い
❽長時間通勤

## ワークライフバランスの崩壊
* 出勤日時が決まっていて、プライベートな時間を設けることができるか

## 雇用が不安定
* 雇用されるかどうかが、来月末でもわからない状況になっているか

## 長時間労働
週あたり25 ~ 30時間の労働時間が一番パフォーマンスが高いです。50時間を超えると、認知機能が下がります。具体的にいうと、テスト項目の洗い出しに時間がかかったり、単位時間あたりのコーディング量が減少したりします。

## シフトワーク
仕事の時間が決まっていないとどこが仕事かどうかが脳で認知できなくなり、慢性的なストレスを脳に与えることになります。この時間は仕事。この時間はプライベートと、キッパリ決まってることが必要です。
組織的に気をつけるべきこととしては

* meetingの時間を固定(この時間~この時間にはmeetingを入れないようにする)
* releaseの時間を固定（突発的なタイミングでのリリースなどをしない)

## 仕事のコントロール権がない
コントロール権がないというのは、「仕事の行う順番が自分で決めることができない、仕事のやり方の規約が多い」です。行う順番は人それぞれでいいやり方とは異なりますので、組織で決定づけるのはよくないです。また規約が多いこともマイナス要素です。ある程度の規約は全体パフォーマンスをあげることができますが、規約が多すぎることも問題です。

## ソーシャルサポートがない
組織内に頼れる人、質問ができる人が存在するかも重要です。悩みをいつでも吐き出せるような状況があると、エンジニア以外の人も助けられるような状況ができたりするかと思います。
おすすめなのはチャットツールに、[分報](http://c16e.com/1511101558/)を導入することです。

## 組織内に不公平が多い
明確と自由に紐づいている内容なので割愛します。

## 長時間通勤
通勤している場合、通勤時間がどれくらい長いか（リモートワークであれば、この問題は発生なし）


# 最後に
上記はまだ本のさわり程度で、本にはまだ根拠となる学問的な知識や参考論文などがふんだんに掲載されています。もっと詳しく知りたい方は[こちら](https://amzn.to/2GK7mqC)をご覧ください。

また、上記全てを実行することは理想ですが、様々な背景により実現できないことも多々あるかと思います。大事なのは、**このようなことを念頭においた上で、日々幸福度を最大化するための働き方を模索し、仕事のパフォーマンスをあげること**だと思います。

仕事のパフォーマンスをあげるために、何かしらの参考になれば幸いです。また、具体例として出したこと以外にも何かしらのプラクティスがあるかと思います。「こんなのもあるよー」と思う方はぜひこちらの記事にコメントしていただけると具体例に追加したりしますのでどしどし募集してます。

[^1]: 人が目標達成をする動機の焦点は、ポジティブな結果を目指す「促進焦点」とネガティブな結果の回避を目指す「予防焦点」の2つがあるという、動機と目標達成の関連についての理論(詳しくは[こちら](https://uxdaystokyo.com/articles/glossary/regulatory-focus-theory/))