hidekatsu-izuno 日々の記録

プログラミング、経済政策など伊津野英克が興味あることについて適当に語ります(旧サイト:A.R.N [日記])

Kotlin の気に入ったところ、気に入らないところ

前から気になってはいたとはいえ、どうせ実務では使わないだろうしなぁ、と思っていたのだけど、「KotlinがAndroidの正式サポート言語に」というニュースがあり、これはまじめに使う意味があるという気になったのでここ一週間ばかし Kotlin を触ってみている。

人によってはAndroid でサポートされるプログラミング言語がひとつ増えただけじゃないか、と思うかもしれない。しかし、Kotlin だけでなく Swift、Rust、TypeScript と型推論、不変性、関数型、Null 安全性という同じような言語概念を持つ言語が研究レベルでなく仕事で使える形で出てきた今の状況は、まさに Java という GCオブジェクト指向を持った言語が仕事で使えるようになった時と同じようにも感じられる。

業務システム開発の次の言語としての Kotlin の可能性」という記事もあったけれど、今それが実現しつつあるのかもしれない。

正直、どの言語も似たり寄ったりなのでもう少し収斂してほしいところではあるけれども、各社の思惑とかJavaScriptやABI、既存ライブラリとの親和性などそれぞれ多少要件が違うので仕方ないところもある。

もはや懐かしい話になりつつあるけれども、Java も20年ほど前まではメモリ管理できない言語なんて使えない、オブジェクト指向なんて必要ない、起動が遅すぎて使い物にならないと否定される一方で先進的な言語として輝かしい存在だったと記憶している(当時、Java House ML などで活発な議論が繰り広げられていた)。

Java は古臭くスクリプト言語こそが最先端という風潮もしばらく前まではしばしば見られた光景だったけれど、業務アプリ分野に限れば COBOL に代わり Java の一人勝ちという状況が続いている*1スクリプト言語にはスクリプト言語の良さがあるけれども、セキュリティへの対応、(サーバー課金を安くするための)パフォーマンス、並列処理という昨今のコンテキストを考えれば、事前検証可能な(曖昧な言い方にはなるが)カッチリした言語が必要という認識が広まっていたように思う。

型推論の採用によりスクリプト言語のような簡潔な記述と厳密な型チェックを両立しつつ、不変性と関数型で並列処理に対応し、Null 安全性でよりチェックも進化させるという新しい言語群の特徴は、時代の変化に対応したものであり、ある種のイノベーションと呼ぶべきものだ。研究者が見れば、どの言語もあの言語のあの機能のパクリだ、と見えるかもしれないけれども、実際にはそうではない。この20年をかけて、この機能は有用だ、この機能は別のこの機能で代用できる、この機能はすごいけど複雑だからよくない、この言語概念は今なら開発者に受け入れられる、といった小さな実績の積み重ねが、今ようやく次世代言語という形で表に出てきたということだ。

閑話休題。Kotlin を触ってみて、オライリーに倣って、Good Parts / Bad Parts と言いたいところだけど、専門家でもないので、個人的に気に入ったところ、気に入らないところを書いておくに留める。

気に入ったところ

  • プロパティがある
  • 不変性が作りやすい。遅延評価もできる。
  • 関数型が普通に使える。継承できるし、JavaScript みたいに 関数にプロパティを生やすこともできる。
  • クロージャからローカル変数が更新できる(Java ができないだけという気もするけど)
  • デフォルト引数が指定できる。
  • 移譲による実装の再利用ができる。
  • 検査付き例外がない。今となっては不利益の方が大きいでしょ。どうしても必要なら Either 作ればよいだけだし。
  • Generics に不変、共変が指定できる(Java の総称型以後、C#Scala の経験から議論が収斂し、これが一番使いやすいというね、というコンセンサスが取られた機能のひとつな気がする。is とか async/await も同じ雰囲気を感じる)
  • 従来なら言語機能で実現していたものを、できるだけ通常機能で実現しようとしているところ。タプルとか try-with-resourcs とか synchronized とか。
  • スコープ関数が便利すぎる。
  • == でオブジェクトの比較ができる

気に入ったところは、やはり Java で困っていたところが多い気がする。プロパティや不変性は20年前のコンテキストでは全然重要だと思われていなかったので Java にないのは仕方ないところではあるけれども(JavaBeans も RAD ツールでの必要性から作られている)。

機能がありすぎて初学者は辛いだろうなぁー、とは思いながらも、欲しかった機能は大抵あるので個人的にはすごく満足している。正直、JavaGenerics/Lambda は使いづらすぎるので、Kotlin に移行する意味はあると思う。

気に入らないところ

  • JVM の制約を引きずってる。Array と List が共通のインターフェイスを持っていなかったりとか、ByteArray 型があったりとか。Unsigned 型がないのも同様(C言語からの移植にとても困る)。
  • Null はチェックできても配列のチェックはできない(言語仕様的には範囲外アクセスで null が返ってくれば整合性取れる気がするんだけど、実装的に java.lang.Character への変換が発生してパフォーマンスが落ちるとかの問題があるのかも)
  • 演算子の多重定義が拡張メソッドになっていてインターフェイスになってない。演算子が実装されてるか調べようがない。例えば、ArrayとList の両方に適用できる列挙メソッドを定義するには、一旦 iterator() を呼んで Iterator に変換する必要がある。
  • 不必要にキーワードが変わってる。例えば、static → companion、switch → when とか。trait を interface に戻したのは正しい判断だと思う。
  • 文字列のテンプレートが $ なのは失敗では。外で変換するのも見越して文字列内に${...}を書きたいケースは結構あると思うけどエスケープが必要となると結構困るのでは(例えば、シェルスクリプトの生成とか)。Swift の \(...) は既存のエスケープ文字を流用したという意味で慧眼だと思う。
  • vararg キーワードは微妙では。JavaJavaScript ですら ... で書けるのに。むしろ退化してるような。
  • 実装関連の機能はキーワードじゃなくてアノテーションにしてほしかった。例えば、infix とか const とか。趣味の問題ではあるんだけど。
  • Range に 1..10 みたいな文法が割り当てられている。数値のイテレーションってもはやそんなに重要な言語機能じゃないんだから range(1, 10) で良くない?
  • 関数とクロージャで文法に一貫性がない。この言語仕様なら全部 fun() {} or fun() = xxx とかで良かったんでは。短くするのが流行りというのはわからなくはないけど。
  • ruby みたく false あるいは null が偽という扱いにしてほしかった。
  • クラス変数の扱いが微妙。元々 Kotlin 的には static 不要という論らしい。拡張メソッドがあるから static メソッドいらないのは同意するけど、パッケージに変数やメソッド置けるからいらないでしょ、てのは納得感ない気が。実際 Int.MAX_VALUE は companion object として実装されているし。それに導入するなら static object という名前にしてほしかった。
  • スコープ関数便利だけど数が多すぎて使う時に混乱する。
  • 遅延評価周りはこなれていない印象。lateinit と  lazy() と Delegates.notNull() の使い分けが難しい。 
  • JVM版に dynamic class がない。まぁ、ほとんど使わないんだけどオプション用途だと欲しくなる。Java でオプション的なAPI作る時いつも悩むのよね。遅くていいので実装してほしい(JSON っぽく初期化できるとさらにうれしい)。
  • 気に入らないというほどではないんだけど、Union Type は欲しいかも。val value:(String | Number | Boolean) と書きたいケースはたまにある。すでに TypeScript では実装されているけど、JavaScript との相互変換を考えると必須機能なのかもという気もする。

JVM言語が発祥だったり、Swift とは生まれた時期の都合のあるので仕方ないところも多々あるんだけど。もしかすると、これからしばらくは Swift 同様、言語仕様の小幅な修正はあるかもしれない。

*1:個人的見解で言えば、今ようやく Java は古くなったのであって、スクリプト言語と対比して新旧を比較するのはあまり適当とは思えない。

「なぜビジネス書は間違うのか」にビジネスの本質を見る

なぜビジネス書は間違うのか」は、たまたま見つけた本だったけど、Amazonレビューの評判が良かったので注文してみたら大当たり。類書では「事実に基づいた経営―なぜ「当たり前」ができないのか?(以下、HARD FACTS)」が絶対おすすめの一冊だったのだけど、ビジネスの本質が垣間見えるという意味ではむしろこの本の方が良いかも。

なぜビジネス書は間違うのか

なぜビジネス書は間違うのか

 

 内容としては、ビジネス書では名著とされる「エクセレント・カンパニー 」などをネタに、実際にはフォーチュン500で評価される有名企業がその後、いまいちな業績しかあげられなかったという事実の紹介がメインとなっている。

HARD FACTSでも同じことには触れられていたけれど、成長期と凋落後の当時の記事の比較を見ると、まったく同じ経営制度、経営者の資質に真反対の評価が与えられていることが明白になって面白い。

同書では、多くのビジネス書が陥る問題を「ハロー効果(後光効果)」で説明する。ようは、「成功しているのだから、きっと同社の特徴的な事柄は素晴らしい効果があるに違いない」と考えがちだということだ。

ただ、個人的には「このハロー効果を排除したらどういう結果がでたのか」の方にむしろ興味を惹かれる。

マネジメントの実践事項は業績の差に関連しており、企業パフォーマンスの全分散の10%を説明することが示された。つまり、製造から顧客サービス、人材管理、財務まですべての面にわたって最もよい実践事項を採用した企業はそうでない企業を約10%の確率で上回る傾向があるということだ。これは統計的に有意で、有用な発見である……

なんと、10%! 素晴らしいマネジメントでも、会社の業績をせいぜい1割しか説明できないというのだ。1割といえば平時の業績変動だってそれくらいはある。

本書では、さらに議論を推し進め「永続する業績などいうものは妄想の類」だと喝破する。イノベーションのジレンマを知っていれば理解できる話ではあるが、この本を読み進めるうちに、こちらの方がむしろ本質なのだ、ということに気付かされる。

顧客から見て、選ばれ、利益を上げることが業績に繋がるならば、ビジネスの法則とは、需要があり、客の目にとまり、他社よりよい条件で、利益率を確保しながら、財・サービスを提供する、というだけのことに過ぎない。

過去、競争優位を勝ち得た企業は、一見すばらしい経営により物事を成し遂げたように見えて、ちょうどいいタイミングでリスクを取ったことで結果的に新規事業が上手く行き、差別化に成功しただけであって、単なる勝者バイアスの域を出ないかもしれないということだ。

一方で、勝ち筋も見えてくる。大企業だからといっていつまでも好業績が続くわけではない。そう考えると、当たるかどうかもわからない小さなイノベーションの種を大量にばらまき続けることこそが、むしろ業績を担保し続ける唯一の方法ということなのかもしれない。

事実に基づいた経営―なぜ「当たり前」ができないのか?

事実に基づいた経営―なぜ「当たり前」ができないのか?

 

人材育成試論

気付いてみればすでにアラフォーとなり人生の折り返し地点に来てしまっている。この年齢になると、管理職でなくとも、結果的に若いメンバーが増えてきて、教育・人材育成的なことを考えざるを得なくなってくる。

正直な話、自分の人生だけで精一杯なくらいであり、他人にどうこう偉そうに言える人間ではないのだが、そこに人間関係が存在する以上何らかのスタンスを取る必要がある。個人的には、周りを幸福にする義理はないにしろ、あえて不幸にするのはお互いにとって良いこととはいえないとは思っている。

通常、私の書くエントリは、出来る限り学術的な根拠をベースとし、それを私見で繋ぎ合わせることにしているが、今回は私見の部分が強いことをお断りしておく。もし、学術的に正当化できる/できないみたいな話があれば紹介して頂けると幸いである。

人材育成の必要性

世のブログを読んでいると、こういう人はダメ(あるいはこういう人は素晴らしい)、というスタンスで書かれているものが多い。もちろんその意図は、読んだ人が発奮してダメな状態から脱してほしい、という点にあるのだろう。しかしながら、そのような文章を読んで成長する人は、放って置いても成長するだろうし、一方で発奮して欲しいであろう人々には決して届かないものだ。

個々人の自発性だけに頼るのは限界がある。採用や退職にはお金も労力もかかるわけだから、素晴らしい人を雇い、ダメな人を排除するという発想ではすぐに限界が来てしまう。

そもそも、あなたが Google に勤めているのでもない限り、仕事ができて、頭もよく、コミュニケーションスキルも高いグローバル人材などといったパーフェクト超人を雇い入れることはできない。多くの普通の会社に来るのは、良いところあれば欠点もある普通の人々だ。

人材育成は、今ある戦力を最大限活かすという発想に立った考え方と言える。

人材育成はそもそも可能なのか

企業研修などを見ると、人材育成は可能である、ということが前提としておかれている。ただ、経験的には、仕事のできない人はずっと仕事ができないままだし、優秀な人は放っておいても伸びていく、という実感が強い。あるいは、優秀な人をダメにすることは容易いが、ダメな人を優秀な人材に育て上げるのは難しい、と言い換えてもいい。

このブログでよく言及する「頭のでき―決めるのは遺伝か、環境か」からは、基礎的な能力向上に大きな影響を与えることができる時期はせいぜい小学生くらいまでであって、成人となると不可能ではないにしろかなり難しいと読み取れる。

一方で、「超一流になるのは才能か努力か?」によれば、(身体能力を除けば)才能などというものは存在せず、努力の部分が大きいとされている。しかし同時に、努力をするためには、対象そのものに興味や楽しさを見出し努力を継続できることが必要だとされている。

優しく教えるといった「いい兄貴」的スタンスは、努力するためのきっかけとはなるが、継続する役には立たない。叱ったからと言って伸びるわけではないのは事実である(多くの場合、単なる平均への回帰である)が、優しくしたからと言って伸びるわけでもない。

しばしば、人材育成というと「知識を付ける」「能力を高める」ということに主眼が置かれがちであるが、純粋に能力を底上げする、という方法では教えた時間以下しか伸びないわけだから極めて効率が悪い。当人が対象に興味や楽しさを見い出すよう仕向ける必要がある。

私は英語ができない

前述の考えに従えば、興味・関心を持つことが重要であるようにも思えるが、本当にそうなのだろうか。自分自身を振り返ると、英語やダイエットは10年以上にわたって関心・興味があり何度も挑戦しているが一向にうまくいかない。プログラミングや経済学のようなトピックであれば、自然と手が動くのに英語やダイエットは興味があってもなかなか手がつかない。

どうも、人間の持つ願望と嗜好というのは異なるもののようであり、能力というものは嗜好に基いて開拓されていくようだ。もし、願望と嗜好が一致しているならば、それは大変幸せなことである。おそらく上司の助けがなくとも立派に成長するだろう。しかし、そうでないならどうすればいいのだろうか。ふたつのアプローチがあり得る。

  1. 願望に合うように嗜好を変更する
  2. 嗜好に合うように願望を変更する

願望だの欲求だのと書くと抽象的すぎるなら、嗜好=職人気質、願望=バリバリの営業マンなどと考えればいい。世界を飛び回る営業マンを夢見ているけれども、こつこつとプログラムを書いていくのが得意だ、ということであれば明らかに願望と嗜好がミスマッチだ。

前者のアプローチは夢を追う方法、後者のアプローチは夢よりも現実を取る方法と言える。世間的には前者の方が美しいが、外部から与える人材育成という観点から見た場合うまく行きそうにない。

人材育成という観点からは、嗜好性に合った目標を与えること、もしくは隠れた嗜好性を見つけるという点を重視するのが現実的だろう。もし、願望を重視するという困難なアプローチを取るのだとすれば、相手に相当の覚悟が必要があることを理解させる必要がある。

需要や現在の能力をどう見るか

願望と嗜好を合わせるという方向性に立ったとしても、まだ条件が不足している。まず、願望にしろ嗜好にしろ、その方向にうまく進んだからと言って需要があるかはわからない。ハイヒールが好きなフレンズがうまく女性向け靴サイト構築プロジェクトにありつくことができるのであれば、それは幸せなことだろうが、実際に様々な制約があり、常に自分の希望に合う仕事が見つかるわけではない。

需要がないのでは、そもそも能力を発揮する場が与えられない。需要があったとしても、参入が簡単で供給過剰な分野では、たとえ能力が高くても人より評価されることは難しいだろう。供給に比べ高い需要が望まれる分野、能力を見つける必要がある。

一方で現時点で持っている能力の問題もある。すでに年齢を重ねており、今頃方針を転換しても追いつけない、ということも考えられる。ただ、これに関しては嗜好と進む方向が合っていれば数年で何とでもなるのではと思う。

うまくまとめられなかったその他のトピック

  • 必要は発明の母。必要がない状況でいろいろ教わっても覚えないので、多少無茶でもとりあえず任せてみて、必要性がわかったところで教える方がいいのではないか。できるようになるまで任せない、というのは効率が悪すぎる。
  • 立場が人を作る、と言うが、その立場になって初めて見えてくる景色もあれば、ようやく理解できるようになることもある。満足な能力を身につけるまで立場を与えないよりは、フォローできる範囲については任せた方がよい。
  • 何事も責任の所在を明らかにすべき。これは問題を責めるためではなく、守備範囲を明確にするために必要。

 

あなたの賃金の物語

マクロの視点

  • 国民の賃金水準は、ひとりあたりのGDPで決まる。GDPは国内の総生産であるから、国民の数で割れば、ひとりあたりの生産物の割当が決まることを考えれば当たり前の話ではある。単純に平均賃金を比較しても、国ごとの制度の違い(税制や会社負担の保険料など)の調整が難しいため、適切な比較にならない。
  • 日本のひとりあたりGDP購買力平価換算)は、他の先進国に遅れをとっており、賃金差のほとんどはこれが原因と考えられる。名目GDPで議論している人をしばしば見かけるが、日本は他国がインフレの中、デフレが続いているため、最低でも実質GDPで比較しないと著しく変な結論を導くことになる。
  • 個々人の賃金は、平均的な賃金だけでなく、個々人の能力差、受給バランス、分配で決まる。少なくとも分配に関しては、日本は幸か不幸か欧米に比べて格差は少ない。近年の日本のジニ係数拡大は少子高齢化の影響によるところが大きく、格差が拡大しているわけではない。
  • 賃金水準は労働生産性、すなわち労働者一人あたりの利益と相関があることが知られている。ただし、労働生産性と賃金に関係があることは、同一労働同一賃金を意味するわけではない。同じ仕事をしていても、儲かっている会社の経理は儲かっていない会社の経理より高い賃金を得られるはずである。
  • 資格制度のような供給制限の影響も大きい。日本の場合、企業経営者と並び、医者も高額所得者の大きな割合を占める。

経営者(総賃金の決定者)の視点

  • 人件費は、原材料費などと同様、原価のひとつである。そのため、同じ効果を発揮するのであれば、安くすむ方が望ましい。一方で、従業員は単なる原価ではなく、それ自体が新たなビジネスを産み出し会社を発展させる源でもある。
  • 通常、人件費はあらかじめ総額を決め、分配する形がとられる。優秀な人が増えたので総人件費が増えましたという形だと見通しができないため、その会社の平均的な利益額から妥当と考えられる総人件費を想定し分配するという発想が取られる。そして、利益の増減に従い、その一部をボーナスとして反映する。
  • 一般に、昇進と昇給はセットでなされる。総人件費が決まっている以上、昇進させることができる人数には制限がある。実際のところ、昇給を伴わない昇進は日本では一般的だったりするのだが、むしろマイナスの動機付けをもたらし、退職リスクを高めることが知られている*1。単なる悪習なのでやめたほうがよいのではと思う。
  • 会社にとって有益で重要な人材だと思うのであれば、昇進なしの昇給(時には管理職よりも高い給与を支給する)を検討する必要がある。昇進することで、仕事内容が変わり稀有な能力を発揮できなくなるかもしれない。
  • 一方で、アワード形式での報奨は、(次は受賞できない確率が上がるため)受賞した人々のモチベーションを下げるだけでなく、受賞に近かったにも関わらず受賞を逃した人々のモチベーションも下げるため良い方法ではない。旅行や休暇のようなイベント型の報奨の方が望ましいようだ。
  • 効率的賃金仮説によれば、企業は不正防止のため、生産性に対し妥当な水準より高めの賃金を払うほうが効率的であるとされている。例えば、銀行の高い賃金水準は不正を防ぐために設定されていると考えられる。
  • 学問的には年功序列賃金は、その人の現在の能力ではなくライフサイクル全般を通じて調整された賃金が支払われていると考えられている。高齢になっても高い賃金が支払われているのは、若い時に安い賃金で働かされていた事に対する補償かもしれない。逆に言えば、定年延長後、急激に賃金が下がるのはその補償が終わったからかもしれない。
  • 人間の所有バイアスや効果の持続時間などを考えると、たとえ生涯賃金では同じ賃金が払われたとしても、賃金は上昇し続ける方が望ましい。
  • 女性の賃金は男性より低く出世にも恵まれない傾向にあるが、潜在的な能力自体に男女差があるわけではないことがわかっている。結婚・出産による退職や休職や出世を強く主張しないことがキャリアに影響を与え結果として賃金が上がらない結果に繋がっているようだ。それだけではなく、女性の活躍が制限されている社会では、女性は仕事で役に立つ能力の獲得にそもそも積極的にならない、という逆説的な影響もある。
  • 労働者の意欲や満足度の向上は、業績の向上と密接な関係があるが、業績の向上⇒満足度という因果関係が強い*2。業績が良ければ、結果として解雇も減り、昇給も良く、福利厚生も改善する。それ以上に、業績の良い会社に勤めているというステータスそのものが満足度の向上に繋がっている。
  • 経営者には従業員に幸福をもたらさねばならない義務はない。とはいえ、アルバイトのような非熟練労働者を多用するような業種や労働者を疲弊させるブラック企業は、会社単体で見れば正しい行動であっても、社会全体から見れば長期的な生産性を引き下げ、生活保護費の増大により将来の財政を圧迫する恐れがあり問題がある(合成の誤謬)。とはいえ、原則論としては、このような問題は政府が法的に規制すべきものであって、個々の企業に責任を転嫁すべきものではないとも考えられる。

管理者(評価者)の視点

  • 従業員の自己評価にはバイアスがある。ほとんどの人が自分の能力は平均よりも上であると考えている(平均以上効果)。特に、能力の低い人ほど自己評価の乖離が大きくなる。
  • 従業員の賃金に関する理解にもバイアスがある。ある研究では、従業員は上長の給与水準を実際より2割ほど高く想像し、同年齢、同資格の給与についても実際より高く見積もっていた。これを踏まえると、妥当な賃金であっても、自分はより低い賃金をもらっているのではないかと感じている可能性がある。
  • 業績評価それ自体が、社員の協力関係を妨げ会社に不利益をもたらす可能性がある。MicrosoftAdobeなど多くの企業では、そもそも業績評価を行わない「ノーレイティングシステム」に移行している。ただし、この方法の元で昇進、昇給をどのように決定するのかというノウハウは十分溜まっていないように見受けられる。
  • 業績評価を行うならば、公平性が重要な役割を果たす。その意味で、誰がみても歴然とした能力差があるところに線を引くことが重要となる。細かい評点は安定性を欠き公平性が失われるため、せいぜい5段階にわけるくらいがよいようだ。
  • 業績評価の結果は、上位5%と下位5%に注目する。下位5%を強制的に退職させるという策(スタックランキング)は社員の協力関係を失わせるため適切ではない。頻繁にフィードバックを行い状況を改善する方法を模索することが重要。一方の上位5%からは、彼らが成功している理由を理解することで人材育成に役立てることができる。
  • 業績評価と人材育成は明確に分ける。業績評価の目的は利益の分配方法であり、その人をどのように育成されるべきかとは切り離されるべきである。
  • 優秀な人材を長くとどめておくには、福利厚生などよりも、直属の上司との良好な関係が重要となる。ある調査では「被用者の35%が、直属の上司の解雇と引き換えなら昇給を諦めてもよいと回答している」。
  • マズロー欲求5段階説は、自己実現欲求を満たせれば賃金など低次の欲求は欠けていてもよい、という逃げ場を与えるので人事に根強い人気があるが、実証的には当てはまりが悪いことがよく知られている。より実証的な当てはまりが良いアルダーファのERG理論によれば、下位の欲求から求め始めるため、やはり十分な賃金は必要ということになる。
  • 動機づけには外発的動機付け(インセンティブ)と内発的動機付け(モチベーション)がある。賃金のような外発的動機付けは、一時的な効果は大きいが慣れが起こり長期的には効果が薄くなる。従業員にとっては内発的動機付けの方がより重要かもしれない。
  • とはいえ昇給の代わりに、従業員の内発的動機付けを強化するよう取り組むことは洗脳と何ら変わらない。従業員の内発的動機付けを妨げない、あるいは支援するならばともかく、それ以上は問題だろう。
  • 労働者の学歴や成績と仕事のパフォーマンスにはあまり関係がなく、むしろ好奇心や粘り強さといった仕事を成し遂げることに対する誠実さが重要となる。
  • 組織にとってマイナスの影響を与える人材は排除する必要がある。そのような人物を放置すること自体が、そうでない従業員に不公平感を感じさせてしまう。

従業員(個人)の視点

  • 賃金は能力に対し妥当かもしれないし、高すぎたり安すぎたりするかもしれない。自分で客観的に賃金の妥当性を評価することは難しいが、その妥当性に関わらず、各人は自分の幸福を追求する権利がある。
  • 賃金に対し能力が足りないと考えているのであれば、比較優位の考え方に従い、自分の最も得意とする能力を活かせる仕事に付くことを考えるべきかもしれない。自分のやりたい事とできる事は必ずしも一致するわけではない。
  • 超一流になるのは才能か努力か?」によれば、才能と呼ばれるものはなく、(条件付きではあるが)能力は努力に比例するそうだ。逆に言えば、もし能力が目標水準から大きく離れているならば、相応の努力が必要になることを意味する。
  • 幸福度の研究からは、ひとりあたりの年収が700万円を超えたあたりで、むしろ幸福度が下がりはじめるという結果が出ている。これは各国で見られる傾向で日本特有の現象ではない。なお、資産額についても2000万円で飽和するという結果が出ているようだ。
  • 仕事は労苦と賃金を交換するだけの存在ではない。人々は労働による社会参加を通じて満足感を得ている。健康は幸福をもたらす大きな要素であるため、高い賃金を得るために長時間労働をした結果、病気になってしまったむしろ不幸だ。逆に、失業は不幸な出来事と一般には思われているが、余暇の増加が運動時間を増やし健康が回復するためマイナスの効果だけではないことが知られている。
  • 実績や能力と昇進は必ずしも一致するわけではない。評価者である上司が求めることを行い、アピールすることが重要となる。出る杭になることは、決して悪いことではない。一方で、昇進と幸福もまた一致するわけではない。周囲の注目を常に集め、自分の時間を失い、人間不信になることもある。
ワーク・ルールズ!―君の生き方とリーダーシップを変える

ワーク・ルールズ!―君の生き方とリーダーシップを変える

 

 

「権力」を握る人の法則 (日経ビジネス人文庫)

「権力」を握る人の法則 (日経ビジネス人文庫)

 

 

組織についてのエトセトラ

先日、「HIGH OUTPUT MANAGEMENT」を読んだ。インテルの創業者であるアンドリュー・S・グローブが書いた本で、当時の経営者はみんな読んでいたらしい。他の本で任天堂の岩田元社長などが実践していると書かかれていたワン・オン・ワン*1などはもしかするとこの本が元ネタなのかもしれない。

全体としてはなかなか面白い本ではあるのだけれども、さすがに1980年代に書かれただけあって古臭いところも多い。例えば、第一章の内容はTOC(制約理論)の方がわかりやすいと思うし、計測の重要性が強調される一方でどうやれば計測できるかという説明はまったくない。昨今書かれたものであれば、この本で書かれているような話を前提として、もう一歩進んだ議論がなされていると思う。

とはいえ、変な内容が書かれているわけでもなく、根拠は薄いものの興味深い話もあり、なかなか面白く読めた。しかし、これは問題なのでは、という記述もなかったわけではない。それは、二重所属組織、いわゆるマトリックス組織の推奨だ。

マトリックス組織とは、職能別の組織と事業分野別の組織でマトリックス上に配置し、各社員はふたつの組織に常に属すような組織形態のことを言う。

このマトリックス組織、どうも1980年代には大流行をしたらしいのだが、その後、実際の運用が難しすぎ、大半の企業では廃止されたようだ(今でもやっているのはIBMくらいか)。

マトリックス組織の問題は、誰でもすぐに気付くだろうけれども、上司が二人いることで指示命令系統に競合が発生してしまうことにある。提唱する人々が言うには、二人の上司がうまくコミニケーションを取り協力することでより組織が活性化するはずだ、ということらしいのだが楽天的すぎやしないだろうか。だいたい、上司同士がうまく協力できたとしても、部下からすれば両方の顔色を伺いながら作業をしなければならないのだから非効率の極みである。

とはいえ、ではなぜ、明らかに問題があるマトリックス組織を聡明なグローブが推奨するに至ったのか。不思議に思い、該当箇所を何度か読み返してみた。

ひとつ気付くのは、グローブは必ずしもマトリックス組織を「素晴らしいから導入すべき」と述べているわけではないということだ。むしろ、他の方法では対応できないからセカンド・ベストとして導入するしかない、と書かれている。

なぜ他の方法ではダメなのか。その理由は職能別組織、事業分野別組織というふたつの組織形態は両方とも無くてはならないからだ。システム開発会社を例に考えてみよう。職能別組織の例は営業部、開発部などがそれにあたる。このような組織形態は、社内の人的リソースを職能に応じて特化して管理することで目標設定、評価、教育を効率化するために必要となる。一方で事業分野別組織の例は、プロジェクトと言い換えてもよいだろう。市場の要請、すなわち受注した案件の規模に応じて組織を柔軟に構成することが求められる。どちらの組織形態も重要であり、一方を切り捨てることはできない。

沼上幹組織戦略の考え方」でも触れられているように、職能別組織と事業分野別組織というのは不可分なものではなく、どの会社でも組み合わせた組織形態を取るのが一般的だ。職能別組織を基本としながら、その時々の状況に応じて事業分野の重要度に応じて組織を組み替えるということが行われている。

このとき、どこまで事業分野別組織の組み換えが必要なのかは、その企業が市場のニーズにどこまで迅速な対応を求められるか、によることになる。グローブはインテルでの経験から組織構造が市場ニーズに柔軟に対応できることを目指したということなのだろう。

ここでふと、最近の業績評価の流れとこの議論が関係していることに気がついた。近年、アドビやマイクロソフトなど業績評価そのものをやめ個人への頻繁なフィードバックに変える企業が増えている。Googleのように採用や昇進・昇給を従来の管理職から取り上げ、独立させている企業もある。もしかすると、このような流れは、市場のニーズに沿って事業分野別の組織形態の自由度を高くする(すなわち組織=プロジェクト)ために、職能別組織を解体しようとする動きなのかもしれない。

社内の要請と市場の要請では後者の方が重要なのは自明だろう。市場の要請に応えるための組織はどのような形態を取るべきか。なかなか面白い論点のように思える。


【2017/05/05 追記】

「How google works」で著者らは、組織は独立採算制にせず、機能別組織(この記事で言う職能別組織)にすべだと主張している。その理由として特定のプロダクトで組織化すると、自分の事業部のことだけしか考えなくなり、情報や人々の流れが阻害されることをあげている。

ただし、これは組織化することに共通するデメリットではないかと思う。営業機能を分割することで、技術者は営業のことを考えなくなるし、その逆も同じだろう。いずれにせよデメリットを理解した上で、組織構造は検討する必要があるということではある。

*1:上司と部下の一対一面談を頻繁に行う手法。

「ダメな統計学」お勉強メモ

レックス・ラインハート著「ダメな統計学」は、いわゆるトンデモ統計批判の書ではない。ここで説明されるのは、科学者が意図せず間違って使用している確率・統計の手法についてだ。科学者ならば統計についての知識水準は高いものがあるのだろうと思っていたが、実際にはそうではないようだ。ある論文によれば、公刊されたほとんどの論文に問題があるとのこと。

ダメな統計学: 悲惨なほど完全なる手引書

ダメな統計学: 悲惨なほど完全なる手引書

 

 本書は平易に書かれているので読み進めることはできるのだが、前提となる知識が不足しているため、なかなか理解が難しい。過去、確率・統計には何度か挑戦しているのだが、いまだに分かった感がない。残念ながらこの本を読んでも系統だった理解には程遠い。というわけで、今回は、本書のお勉強メモだと思っていただきたい(誤解している部分もあると思うので、思う所があれば指摘願いたい)。本書には面白い事例の紹介に多くのページが割かれているが、そちらは買って読んでもらうとして、ここでは定義や結論を中心に抜粋(場合により補足)した。

第1章 統計的有意性入門

  • p値:有意確率。仮説検定手法のひとつで、結論が誤っているならば驚くべきことである確率。経験的に、5%有意(p値<0.05)とか1%有意(p値<0.01)で判断する。結果が単一値で求まり便利なため広く使われている。
  • 偽陽性:間違った結論を正しいとしてしまうこと
  • 偽陰性:正しい結論を間違っているとしてしまうこと
  • p値の誤解1:統計的に有意である=効果が大きい、ことを意味するわけではない
  • p値の誤解2:統計的に有意ではない=効果がない、ことを意味するわけではない
  • p値の誤解3:p値=偽陽性率と解釈してはいけない。期待する偽陽性率を有意水準として定め、有意か否かの判断をするためだけにしか利用できない。
  • p値の問題1:同じ観測データを使っても、観測されていないデータの違いで異なる値が出る(問題設定がp値に影響する)
  • 有意性を見たいのであれば、信頼区間を使う方が適切。

第2章 検定力と検定力の足りない統計

  • 検定力:偶然と効果を区別する確率。経験的には、検定力が80%以上あれば良しとされる
  • 小さな効果を調べるには、多くのデータがないと十分な検定力が得られない
  • データが足りないと、分散が大きくなり効果が誇張される
  • データ群にデータ数のばらつきがある場合(例えば、都道府県ごとの人口が影響する調査)は、縮小処理(データ群に対する重み付け)が有効だが、本当に極端な現象が起こっていることを隠してしまう場合がある
  • 効果を見たいのであれば、有意性検定や検定力を見るかわりに、信頼区間を見るべき。有意でも信頼区間の広い結論は解釈が困難なことがわかるし、信頼区間にゼロが含まれていても、狭ければ効果が小さいことを示唆しているのかもしれない。
  • 信頼区間の応用例として、リコメンデーションの機能に信頼区間の下限を重みを使うことで、より適切な評価ランキングが実現できるという例が挙げられている。

第3章 疑似反復:データを賢く選べ

  • 疑似反復:独立していないデータを繰り返し取得すること
  • 交絡因子:有意な結果をもたらす隠れた原因
  • データ数は多くても、独立でないため意味がない。独立でないデータは平均化などの処理を行う必要がある(計測誤差は減るという意味では意味がある)
  • データの入手ルートが異なる場合、系統誤差が発生する可能性がある。主成分分析を行うことで入手ルートごとの偏りを補正することができる。
  • 有意=効果がある、ではない。交絡因子が原因となっている可能性など、きちんと結論を導き出せる実験の設計が必要

第4章 p値と基準率の誤り

  • 基準率:調査対象のうち有効なものが含まれる確率 
  • p値は効果がある場合の確率ではなく、あくまで効果がないとしたら驚くべき結果が出る確率。そのため、調査対象に無効な対象が含まれている場合には、偽陽性の確率が上がり有意であるからといって正しいとは言えなくなる。
  • 何度も同じ調査を繰り返す場合も同じ現象が起こる。
  • 複数回調査した場合はp値を回数で割ることで偽陽性の確率を下げることができるが、検定力が下がる(ボンフェローニ法)。より良い方法としてベンジャミーニ=ホッホベルク法がある。

第5章 有意性に関する間違った判断

  • p値は効果の大きさを表さない。そのため、ふたつの調査対象の比較をするときは、それぞれ単独で調査して算出したp値を比較しても意味がなく、両方を直接比較する必要がある
  • ふたつのグループのそれぞれの平均に統計的有意差があるかを調べる場合には t 検定を使う

第6章 データの二度づけ

  • 大量のデータから有効性の高そうなデータだけを抽出し分析すると、誇張された結果が得られる
  • 特徴的なデータだけを集めると平均への回帰によって、存在しない効果があるかのように見えてしまう
  • 効果が出た時点で調査をやめると、特徴的なデータが多く含まれた状態になりやすいため、誇張された結果が得られる

第7章 連続性の誤り

  • データを不必要に分割して分析するのは偽陽性が増すためやめるべき。回帰分析を使えば、あえて分割して分析する必要がない。
  • どうしても分割したい場合には、コンセンサスのある外部の基準に従うこと。データを上手く分離できる最適な基準を選ぶと、p値が良い分割となり誇張された結果が得られてしまう。

第8章 モデルの乱用

  • データに比べ変数の数が多い場合、過剰適合が起こる。
  • 重要な変数を選んでいく段階的回帰(ステップワイズ法)は、何度も比較する場合と同様、偽陽性が発生し、過剰適合が起こりやすくおすすめできない。変数を選ぶ基準に赤石情報量規準(AIC)やベイズ情報量規準(BIC)を使うとある程度過剰適合を抑えることはできる。
  • データを教育用と検証用にわけ交差検証を行うと過剰適合しているかの確認が可能。
  • 相関と因果は違う。
  • シンプソンのパラドックス:全体の傾向と部分の傾向では異なる場合がある
  • ランダム化試験なしに交絡因子を防ぐことはできないが、一方でランダム化試験が現実的にはできない場合も多い

第9章 研究者の自由:好ましい雰囲気?

  • 研究者はデータや手法だけでなく分析目的すらも自由に選ぶことができる。そのため、結果として研究者にとって都合の良い結果を導きやすいというバイアスがある。
  • 探索的研究と確認的研究を混同すべきではない。研究目的、手法を決めてから分析をするべき。

第10章 誰もが間違える

  • 統計手法に長けていない問題以前に、そもそもp値を正しく計算できていないケースも多い(「ネイチャー」掲載論文の38%でp値に誤字や掲載間違いがあったそうだ)
  • 再現できない研究成果も多い。医学で最も引用されている研究論文の四分の一が刊行後に再試験されておらず、三分の一が後で誤りか誇張されていることが発覚している。

第11章 データを隠すこと

  • データを公開しないことで論文の問題を隠す場合がある。
  • 効果がない、という研究は発表されにくいため、メタ分析をすると効果がある方に偏りが生じてしまう。

第12章 何ができるだろうか

  • p値を使わず信頼区間と効果量推定を使え。
  • まじめに学ぶには時間がかかるので統計学者を外注しろ。

読後の感想

  • 確率統計よくわからんなぁ、と思っていたがみんなわかっていないのだということがわかって安心した(おい)
  • 時系列分析とか正規分布でない場合の注意事項について知りたかったのだけど、載っていなかったのが残念。

 

新・工数見積りの海を彷徨う

前回までのエントリにて、IPAソフトウェア開発データ白書 2014-2015 を元に機能数から工数見積りを行う方法について検討してきた。

先日、IPAソフトウェア開発データ白書 2016-2017が公開されたため、改めて数値の算出を行おうと思う。ただ、前回と同じことをやっても面白くないので、前々から試してみたかった標準工期からの乖離度をパラメータに加えてみることにしてみた。

先に言っておくと、これが意外なほどうまくいかない。標準工期に比べて短納期になるほど機能数に比べ工数が大きくなるように思えるが、実際のデータを散布図で見てみるとまったくそんなようには見えない。

f:id:hidekatsu-izuno:20161221225506p:plain

標準工期からの乖離率で調整した工数を使いロバスト回帰をかけてみたが、結果は同様で、むしろ工期の乖離を考えないほうが残差が少なかったりする。

というわけで、最終的には標準工期からの乖離率は考えないことにした。前年のデータと比べると次の通り前回の数値より一割ほど上振れしている。

工数[開発5工程/人時]=131.33×画面数+78.55×帳票数+61.29×バッチ数