数字を味方につける
庄司先生は初めに、「プログラマ定年説」の話題を持ち出し、「35(歳)」という数字を挙げました。これは数年前、ブログやメディアでも騒がれた「プログラマの定年は35歳なのか」という議題なのですが、ここで庄司先生は「35歳が定年かどうかというのは、実際に35歳でプログラマとして働いている人がいるので正しいとは思いませんが、それより大事なのは、このように数字を見ること」と言います。そして、エンジニアなのだから「数字を見方につける」ことができ、それができればモノの見方が変わるとして、エンジニアの算数の授業を始めました。
ここでは、身の回りに起こる事象を数字で捉え、定量的な考え方をすることで、エンジニアの働き方が良い方向に変わるという仮設のものと、授業が進みました。
なぜ働くのか―自分の幸せのために
そして、米国労働総計局の2006年の調査数字を引用して、「平均的アメリカ人は、起きている時間の半分を仕事に割り当てている」ことを前提として、「人はなんで働くのか、それは対価としての価値のために働いているわけです。ここで言う価値とは、単に経済的価値だけではなく、その人自身にとって価値のあるもの、自身の幸せのために働いているということを再確認しましょう」と、庄司先生は働くことの意義について伝えました。
そして、「価値を得るためには自分の価値を上げていくことが大切」として、「ユニークになる」ことを進めました。
まず、基礎的なことを学ぶ
ユニークになるというのは、つまり、他の人と差別化できるものを持っていることを意味します。それこそが、その人の持つ「価値」になる、と庄司先生は力説します。
それでもユニークになるためには、変わったことをするのではなく、基礎的なことをしっかり学ぶことが重要だそうです。ここで、算数のときに習った図形の面積を求める方程式を例に挙げ、「たとえば(上底+下底)×高さ÷2という台形の面積を求める式がありますが、これは応用の式です。高さ×幅という、四角形の面積を求める式を知っていれば見いだせるのですから」と、算数の授業ならではの説明の仕方で、基礎知識の重要性を訴えました。
物事を定量的に考える
基礎的なことを学ぶのと同時に、定量的な考え方で技術を身につけることも大切と庄司先生は言います。「たとえば、これから1年に1つ、新しいプログラミング言語を学べば、20年で20種類の言語を学べるのです。20個ってスゴイですよね」と、つねに新しいものを探していこうというだけではなく、1年なら1年の単位で習得し、それの積み重ねがどういう結果につながるかを、定量的に把握していることも大切です。
「それから、もし何かを習得するのであれば、自分がよく使うのとまったく逆のものを触ってみるのが面白いです。たとえば、JavaScriptだけしかやってない人はHaskellを触ってみるなど。それがユニークにつながります」。
そして、定量的に物事を考える上で重要なスキルとして、「見積もり能力」を挙げました。エンジニアだからこそ、自分に関わるプロジェクトやプログラムの工数だったり効果を見積もることが大事というもの。それができるようになれば、さまざまなことを定量的かつ効率的に進められるという考え方です。
とにかく目立ってユニークになる
最後に、庄司先生は「とにかくアウトプットを出していくことを心がけましょう。とくに、自分で書いたソースコードを見られることに慣れないとプログラマーはすぐダメになります。だからブログに公開して、人に見られることに慣れてください。ここで大切なことは見られることとおもに、ソースコードの批判は人格批判ではないという点です」と、公開するときの心構えについても触れました。
そして、「“勉強中だからまだ公開できません”では、完成するのはいつなのでしょう? エンジニアたるもの、やらない理由を考えるのではなく、どんどんアウトプットしましょう。それから、日本人は名前を売るのが嫌いと言われていますが、アウトプットともに名前を売ることも大切です。目立つことでユニークになりますし、多くの人から間違いの指摘もしてもらえますし、結果として正しい道に進んで行きやすいからです」と、定量的な考え方とアウトプットの重要性をまとめとした、プログラマならではの授業が終わりました。