俺もエンジニアなので、伝説に残るようなソフトウェアを書きたいし、ソース中に自分の名前やメッセージを秘密で埋め込みたいとか思う。
Windows NT開発物語を描いた、闘うプログラマー(下巻)に、優秀なプログラマーについてこう書かれている。
特に優秀なプログラマーは、抽象の世界なら自由にあやつることができ、問題を記号の観点から捉えている。数学や論理学を身に付けているか、その原理を直感的につかんでいる。本当のところは、コンピュータにしか理解できない言葉を喜んで使う。Write Greate Code vol.1 Understanding Machine (邦訳: ハードウェアを知りソフトウェアを書く)には、こう締めくくられている。(要約)
アセンブリ言語でコードを書けばマシンレベルで考えざるを得ないとしても、高水準言語でコードを書けば抽象度の高いレベルで考えられるようになるというものではない。そして、監訳者の鵜飼さんのコメントでこう締めくくられている。
低レベルで考えながら高レベルのコードを書くのに必要な予備知識を提供する事が、vol1の目的である。
そして、vol2への架け橋として、こう書かれている。
「特 定のコンパイラで高水準言語のステートメントがマシンレベルにどのようにマッピングされるか」が、vol1で語られていない「低いレベルで考え、高いレベ ルで書く」の欠けたパズルの1ピースである。そして、これがWrite Great Codeシリーズ第二巻「Thinking Low-Level, Writing High Level」のテーマである。
「普通の奴らの下を行け」優れたエンジニアになる。
普通の人があいまいに捕らえているようなこのような低レベルの層をしっかりと抑えて、普通の人には書けない様な「グレートコード」を生み出していきましょう。
と 思い、この本を読んでるわけだが、ここに示されている問題に対するアプローチは、プログラミングに特化するものではない。例えば、経営者として新規ビジネスを考える際にも共通の問題解決のアプローチが取れると思う。
「伝説のエンジニア」という言葉に少しでも惹かれた方は購入して実際に読んでいただきたい。
Googleの面接では問題解決能力を非常に重要視する。日本の企業はど うなのだろうか?大企業に就職活動してないので何ともいえない・・・。どうなんだろう?
via Google Japan hiring
We're very interested in learning more about how you approach problem-solving.また、人気ブログ Life is beautifulで、マイクロソフトの面接では「あなたなら、富士山をどうやって動かしますか?」と聞かれるというエントリーを興味深く読んだ。
こ こ半年で、色々な友達から、ブログやmixi なりの言葉が普通に会話に出てくるようになった。「ブログが、何か知らないうちに普及したなぁ」ではなく、ブログとはそもそも何か?なぜ普及した?インフ ラはどうだろうか?今後のどうなる?とか何でもいいのだが、問題に関係してくる変数や作用する(or した)関数を頭の中で宣言し、問題を解く。それを証明する。実に数学的なアプローチであると思う。
と無理やり関数プログラミングの考え方に結びつけた。
新規ビジネスを考える上で、もしエンジニア出身の経営者の強みのようなものがあるとすれば、問題を数学的アプローチで考え、そして解くことができることだと思ってる。
かなり、強引に結びつけたが関数プログラミングは、数学的アプローチを鍛える絶好のツールだと思う。
ということを前から思ってたので、Haskellなどを勉強して思考回路を鍛えてるのだが、LL侍の言葉を借りれば、まさしく"Hellow world!"さえブラックボックスで難しい。。
Cleanという純粋関数言語があるらしいので、今春は数学的アプローチをトレーニングすることを一つの目標としたい。
satoshiさんの自身のブログのコメント中にあったこの言葉で締めたい。
「未来を予想する最前の方法は、未来を自ら創造することである(アラン・ケイ)」
PS:
先 日R30という番組で、陸上競技の為末選手が出ていた。為末選手は、引退後第二の人生として経営者になる事を考えているらしい。陸上は、(オリンピック が終わった次の日から、次のオリンピックから逆算してこの日までには、腕の筋肉を何%落とし、足の筋肉を何%増やし体重を何キロにする。などの緻密な計算 に基づく)目標値の設定の積み重ねの上にメダルがあるらしい。その絶妙な目標設定能力を、自分の強みとして語っていた。これは、楽天について書かれた「楽 天の研究 - なぜ彼らは勝ち続けるか」で書かれた、三木谷社長の能力、絶妙な目標設定と同じであった。