抽象と具象の間:Goはなぜ気持ちいいのか。

 

てなわけで、思うところをつらつらと書いてみる。ポエムだから、意味はあまり理解しようとしないほうがよい。

Go言語とは

Go (プログラミング言語) - Wikipedia

 

手続き型のコードは分かりにくいのか?

→簡単な問題をとく場合は分かりやすい。コンピュータに対して、何をさせているのかが明確。ただし、複雑な問題を解く場合は分かりにくい。複雑な問題を解く場合は、詳細な情報が脳の処理能力を圧迫するから。複雑な問題を分かりやすくするために人間は問題を抽象化して、情報量を圧縮する。

 

オブジェクト指向や関数型は分かりやすいのか?

→オブジェクトや関数は手続きが抽象されたもの。抽象化された語彙に習熟している人にとっては分かりやすい。逆に、ある分野の初学者がいきなり抽象的な理論、専門用語を使って何かを説明されてもわからないようにその抽象を理解できないものにとっては分かりにくい。

オブジェクト指向や関数型のプログラムを理解しやすい、と感じる人は、オブジェクト指向や関数型が解決しようとしている問題を良く理解している人。抽象化は進めば進むほど、エキスパートにとってははるかに難しい問題を解くことが可能になる反面、問題領域の初学者にとってハードルを上げることになる。

 

人の問題と解決策の理解を促進するものは、抽象的な理論そのもの(オブジェクトや関数)でも、問題や解決策の赤裸々な記述(手続き)でもなく、抽象と具体を行き来するプロセスだと思う。

 

Goに備わった簡便な抽象化の仕組みであるインタフェースは手軽に問題を抽象化するが、具体的なコードと非常に近いところにある。

 

例えるなら、Javaが高校数学、Scalaが大学レベルの数学を駆使して問題を解けるようにするのに対して、Goは中学レベルの数学を利用して問題を解かせようとしている感じ。

 

その意味で、分散処理プラットフォームみたいな、高度な技術にJavaScalaが好まれる、というのはわかる。

 

自分が最も尊敬するワインバーグの言葉に「小学校4年生が解けるより難しい問題を解こうとしているなら、何かが間違っている。」っていうのがある。

 

大抵の実践プログラマたちにとって、学術的で高尚な問題をとく、というよりも日常のありふれた問題を解くのが仕事だろう。

 

go言語の仕様には、ともすると問題を難しく考えすぎる自分らに対して、地に足のついた問題解決を促すメッセージを多分に含んでいる気がする。

 

「シンプルに考えよう。これで充分でしょ!」って。

 

新卒入社は大企業か、ベンチャー(中小企業)、どっちがいいのか?

(2019/04 更新)この記事は少し古くなっている。現在では色々事情は違う

 

下記のような記事があったり

nabeharu.hatenablog.com

 

まあ、こんなツイートがあったりする中で

 

思うところと、上から目線で新入社員へのアドバイスを少々。

自分の経験

  • 中規模企業の教育子会社(小規模)に入社→BtoBの研修屋で、中小、大企業の若手育成でなんとなく、状況を察する。
  • 大企業の教育子会社→親会社に出向。大企業の中で仕事する。OJTトレーナーとかもやった。

 

転職のしやすさについて

転職活動の経験も踏まえて

  • 中小→大企業、大企業→中小も当然0ではない。
  • 中小では、多くの企業が未経験者歓迎のポテンシャル採用やっている。大抵、実績とくに関係なくコミュ力と地頭でいける。
  • 大企業では、一時期氷河期の採用抑制を調整するため、第二新卒採用が活発になったこともあったけど、季節もの。離職率も低いので、狭き門と思う。
  • 中堅では、中小でも会社によるけど、経験を重視した専門家、マネージャ募集とかはあると思う。また、BtoBでは大企業が顧客である場合が多く、大企業経験が求められる場合はある。
  • 大企業ではマネージャ採用は少ない。一部スペシャリストとか、実績を買われて、とかはある。IT系は今はPM含めてかなり募集しているみたい。

→ざっくりいうと、大企業行った方が、選択肢は広がりやすい、というのは多分確かと思う。ただ、それも3年目ぐらいまでで、それ以降は、実際の経験が問われるから転職のしやすさは職務次第になってくる。

 

成長について

自分自身はどうなのか、は棚上げするけど、大企業で全然成長できない例も、ベンチャーで残念な感じになる例も知っている。成長に適した環境かどうかも大企業、中小企業それぞれで色々ある。

 

大企業でしか学べないものがあるというより、ベンチャーで学びにくいもの、大企業で学びにくいものが色々あるという印象。

 

また、会社の規模や成長フェーズというよりも、会社の文化や戦略に依存する場合もある。とはいえ、これは学生が見抜くのは相当難しいと思う。

 

仕事をしているだけでは成長できない場合は、色々自己啓発に励む必要があり、それを仕事に生かすよう頭を使う必要があるのは大企業、ベンチャー問わずある。

 

原則として成長の環境としては大企業/ベンチャーではどっちもいい部分、悪い部分があるとしか言えない。

 

ただ、若手はどこも体力勝負だと思うけど、

結論

個人的には、「迷ったら、大企業」でいいと思う。理由は選択肢の広さ。また、入社前とギャップは常にあることを覚悟すること。3年くらいは色々悩んで、方向転換してもいいと思う。

 

大企業へ入社した人への参考意見

大抵の場合、自分の実力以上の給料と評価を世の中からもらうことになる。大企業のブランドや地位がない自分がどの程度なのか、お金はどこから来ているのか、は常に意識した方がいい。また、自分が死ぬまでに、業績が悪化してリストラが行われることは前提でキャリアを考えること。

 

ベンチャー/中小企業へ入社した人への参考意見

運が悪いと社内に手本となる人が見当たらない場合も十分ありえる。その場合は社外の勉強会や読書を通じて、勉強すること。できればメンターとなる人を探すこと。(でも変な自己啓発系にひっかからないように。。。)

組織に問題があるのであれば、組織を動かしやすいメリットを生かして、若手であろうと、自分が先頭を切って組織を変えるつもりで動くこと。

 

 新入社員への参考意見

  • 組織がどれだけサポートするかはどもかく、成長の責任は自分にあることが大前提であることを意識すること。
  • 基本的には、若手は量をこなさないと仕事が分からないと思うから、量をこなすことを拒絶しないこと。その上で、自分の体力、精神力の限界を見極めること。
  • 失敗、そして怒られることを恐れないこと。1年仕事して、こっぴどく怒られることが一度もなかったなら、多分それはリスクをとってない=仕事していない。

 

 

 

ニーバーの祈りと採用と人材育成

下記の記事を読んで、

NAKAHARA-LAB.NET 東京大学 中原淳研究室 - 大人の学びを科学する: 採用時に見極めなければならないのは本当に「コミュニケーション能力」なのか?

■変わりやすいもの
 ・リスク志向性
 ・知識や技術
 ・教育の水準
 ・仕事経験
 ・自己に対する認識
 ・コミュニケーション
 ・第一印象
 ・顧客志向
 ・コーチング能力
 ・目標設定
 ・エンパワーメント

■変わることはかわるが、変わりにくいもの
 ・判断能力
 ・戦略的スキル
 ・ストレスマネジメント
 ・適応力
 ・傾聴
 ・チームプレー
 ・交渉スキル
 ・チームビルディング
 ・変革のリーダーシップ
 ・コンフリクトマネジメント

■変わりにくいもの
 ・知能
 ・創造性
 ・概念的能力
 ・部下の鼓舞
 ・エネルギー
 ・情熱
 ・野心
 ・粘り強さ

 

みなさんはどう思いますか、とのことなので、自分の第一印象(あくまで印象ね。)

総論として、違和感はあまりない。(繰り返すけど印象)

一部、中原先生と解釈が異なっているのは、以下の2点

  • 変わりやすいものとしての「コミュニケーション」はビジネスマナーとか、メールの書き方とか、そういうものなので、就活で重視されているコミュ力は「変わることはかわるが、変わりにくいもの」にあるような「チームワーク」、「傾聴」、「適応力」のようなものではないか。
  • 「変わりにくいもの」は生まれつき、もしくは幼少期の環境によるものと捉えるとよいのではないか。つまり「概念的能力」のようなものは大学などの高等教育では向上させられないものなのではないか。高等教育で向上させられるのは、持って生まれた個々人の「概念的能力」を「現実の課題に活用」する「判断能力」や「戦略的スキル」の方なのではないか。

 

違いをうみだすもの

上記の印象を持ったあと、はたと、この3つの分類が採用や教育に対する企業や個人、社会のメンタルモデルを整理する上で非常に有用なのではないか、と思った。

 

おそらく、「変わりやすいもの」がいわゆるハードスキルや職場の経験によって培われるものであるなら、「育成・教育」の対象となることに反対する人はそうはいないはず。そして、「変わりにくいもの」が一定程度個人の資質として存在することについても多くの人が同意するだろう。

 

対して、「変わることはかわるが、変わりにくいもの」は「長期に亘る、体系的、継続的トレーニング」が必要である。

そのため、組織や人によって、これを「変わりやすいもの」側として捉えるか「変わりにくいもの」側として捉えるか、によって、採用・人材育成の方針に如実な違いが出てくると思う。

 

就職活動で、「コミュ力」を重視するのは、仕事において非常に重要な「チームプレー」や「傾聴」を「変わりにくいもの」として捉え、施策によって変えることに本気になっていないことを意味するかもしれない。

 

そして、高等教育のようなもので養成することができる「判断能力」を「変わりにくいもの」として捉えることは大学や大学院教育の軽視につながる。

 

個人的な実感としても、傾聴やチームプレイはきちんとしたトレーニングを継続的にうけることで劇的に変化する。また、判断能力等については、大学でしっかりと学問をやった人とそういった経験のない人とでは明確に違うと感じる。(もちろん、単純な仕事の成果という意味では、いろいろな別の要素が絡むので、一概には言えない。)

 

一般的な傾向として、外資系企業は変わることはかわるが、変わりにくいもの」を「変わりやすいもの」側として捉え、専門教育を評価し、リーダーシップトレーニングに莫大な投資をする。

 

対して伝統的に日本企業は変わることはかわるが、変わりにくいもの」を「変わりにくいもの」側として捉え、採用時には重視するが、教育は「変わりやすいもの」に偏り、コミュニケーショントレーニングも「福利厚生」的な位置づけにする場合が多い。また、高等教育の有効性を無視する。

 

人はどこまで変われるのか、というのは教育者にとって、永遠の問い

 

神よ、恩寵を私に与えて下さい
変えられないものを静穏に受け入れるために
与えて下さい 
変えるべきものを変える勇気を
そして、変えられないものと変えるべきものを
区別する賢さを私に与えて下さい 

引用元:ニーバーの祈り - Wikipedia

 

ずっと考え続けるということ

この本読んで。一つ、考えたことをメモ。

ヤフーとその仲間たちのすごい研修

ヤフーとその仲間たちのすごい研修

 

 

この手の現実の課題解決をすることを通じて、参加者の学習と成長を狙うっていうの「アクションラーニング」といわれるもの。GE社のワークアウトっていうのが有名。

 

GE社のワークアウトは、社内課題の解決をコンサルタント的に選抜されたメンバーが行うもの。リーダーシップ教育の一環。要求される価値観とビジネススキルはある程度共通の水準を求められるし、コミットも要求される。

 

この研修は、そうとうにバラバラな組織から集められてきているし、どこまで対象の課題にコミットするか、もモチベーション維持が難しいもの。最初の設計から、効果的な提案がどんどん出てくるとは企画者も想定していなかっただろう。

 

そして、「現実の仕事でも、限られた時間の中で結果を出さなければならないのだから」とまあ、失敗も許容する覚悟で実施したという。

 

限られた時間で答えを出すこと

この研修そのものは様々な狙いがあるのでそれはいいとして、個人的にあまり魅力的に感じられなかった。

 

それは「自分自身が参加してもいい提案ができるイメージは湧かない。」という至極私的な理由。

というのは、この「提示されたどんな課題に対しても、限られた時間で答えを出す」っていう所謂コンサルタント的な思考は自分はとても不得手だから。

 

この研修の参加者も、多分「限られた時間で答えをだす」のが得意な人と不得意な人で、相当スキルレベルの開きがあるように思う。

 

なぜなら、次に書くようにこの研修の題材になっている「地域振興」について「ずっと考え続けている」人はいないだろうから。

 

ずっと考え続けるということ

普通の仕事では、コンサルタント的な思考が得意な人が、常にそうでない人を圧倒するとは限らない。というのは、所謂優秀な人のカテゴリに、「ずっと考え続けている人」っていうのがいると思うから。

 

これは、自分が片足を突っ込んでいるソフトウェアエンジニアの世界の優秀なエンジニアたちを思い浮かべている。彼らはずっと考え続けて、ずっと試行錯誤している。よいソフトウェアとは何か、よい言語とは、よい設計とは、よいマネジメントとは。

 

思考が深くて、実験を繰り返しているから、技術の進歩にもついていける。部外者が全く新しいもの、異なるものと考えていることに対して、自分なりの答えを素早く導き出すことができる。

 

深くものを考えない人にとって、「限られた時間で答えをだす」人との違いを区別するのが難しいだろう。

 

DeNAの南場社長の本で、あっという間にエンジニアがとても使いやすいアプリを作ったって話。あれ、多分、休日とかにいろいろ試行錯誤して似たようなもの作ったことがあったんだと思うんだよね。。。

ご本人がどうとらえているのかは分からない。でも、本からはそういう認識は読み取れなかった。

不格好経営―チームDeNAの挑戦
 

 

 

そして、彼らは年をとると、素晴らしい教師になる。「限られた時間で答えをだす」だけしかやってこなかった人はよい教師には多分なれない。

 

もちろん、この2つの思考タイプは排他的なものではないし、両方備えている人はもちろんいるが、傾向のひとつとして、自分のキャリアを考えたり、人を評価したりするときにちょっと考えてもいいものだと思う。

 

 

 

独断と偏見に基づく非プログラマ向けIT本

こんな本あったので。。。

 

個人的なお勧め本を

 ITの基礎知識
ディジタル作法 −カーニハン先生の「情報」教室−

ディジタル作法 −カーニハン先生の「情報」教室−

 

 

 

ソフトウェアの20世紀―ヒトとコンピュータの対話の歴史

ソフトウェアの20世紀―ヒトとコンピュータの対話の歴史

 

 

プログラマとはどんな人か

技術わからなくてもなんとなくわかるもの

 

プログラミングの心理学 25周年記念版

プログラミングの心理学 25周年記念版

 

 

 

システム管理者の眠れない夜【新装改訂版】―本当に価値のあるシステムを求めて―

システム管理者の眠れない夜【新装改訂版】―本当に価値のあるシステムを求めて―

 

  

ピープルウエア 第3版

ピープルウエア 第3版

 

 

闘うプログラマー[新装版]

闘うプログラマー[新装版]

 

 

オープンソースの思想とかもわかる!

スティーブズ(1)

スティーブズ(1)

 

 

 

アート・オブ・コミュニティ ―「貢献したい気持ち」を繋げて成果を導くには (THEORY/IN/PRACTICE)

アート・オブ・コミュニティ ―「貢献したい気持ち」を繋げて成果を導くには (THEORY/IN/PRACTICE)

 

 

プロマネ

 

 

 

アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)

アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)

 

 

 

『研修設計マニュアル』読後感

 これ読んだ。

研修設計マニュアル: 人材育成のためのインストラクショナルデザイン

研修設計マニュアル: 人材育成のためのインストラクショナルデザイン

 

 読みながらしたツイート

導入課題を読んで

第1章、第2章を読んで

第3章〜第5章を読んで

第6章〜第7章を読んで

 

感想

人材育成担当になって、当惑している人には、ちと盛り込みすぎで敷居が高い気がする。下記の本の方が良い。

 

企業内人材育成入門

企業内人材育成入門

 

 

ある程度わかってきた人が「研修にこだわらないやり方」を模索する時にはいい本。そういうことを書いている本はあまりない。

 

この本に書いていないこと

どうやって設計するのか、つまり、学習対象の分析については薄いので、別の本を参照する必要がある。

個人的には研修に限らず、人材育成施策立案が有効か否かを分けるポイントは、「学習対象への理解の深さ」だと思っている。

これはいいシステムを設計できるエンジニアがシステム化対象の業務の深い理解が必要とされることと丁度同じ関係。

 

だから、現場のハイパフォーマーが必ずしも適任ではないし、そのレベルまで必要というわけでもないが、彼らとガチで議論できるだけの知識と技能を教育設計者は持っているべき。

逆に、幾つかの分野でそのレベルの現場で使われるスキルに対する理解がない人がいくらIDを勉強してもあまり効果的ではないと思う。

 

 

 

PBLとかアクションラーニングとか、その辺

アクションラーニングやPBL(Project-Based-Learning)の肝は「経験の設計」だ。

 

種々の制約から、アクションラーニングやPBLの対象となる経験がそのまま現実世界(real-world)と同じ文脈を用意できることは稀。なんらかの形での妥協が必要になる。その際、その妥協が学習者が体験する経験にどういう影響を与えているのか、期待する学習効果をあげているのかを注意深く検討しなければならない。

 

妥協した結果、学習効果をほとんど持たなくなってしまう場合も多くあると思われる。むしろ、現実世界で必要となるスキル(どのようにスキルを活用するのか、といういわゆるメタスキルも含む)やマインドの分析/定義を行うことを断念し、PBLの名目で「あたかも実践的」なだけの研修でごまかしていることって多いんではないだろうか。。。

 

結局のところ、必要なのは分析であり、仮説と検証。体感型の研修で学習目標を明確にしないものであっても「現実世界の意思決定構造」の分析は不可欠のはず。