まつもとゆきひろが語る「ビューティフルコード」×「プログラマ35歳定年説」 聴講記
まつもとゆきひろが語る「ビューティフルコード」×「プログラマ35歳定年説」に行ってきた。
内容、発言等で間違い等あれば修正しますのでご指摘を。
入場
人の入りはだいたい70〜80人程度。
裏で「Webデベロッパの祭典+ちょっとアキバ気分で。」がやっているので、エンジニアが分散したかもしれない。
第一部「ビューティフルコード」
Matz自己紹介
普段はネタを使い回すことが多いが、川井さんに頼まれたんで今日は新ネタを持ってきた。
コードの美とは?
- コードとはなにか
- ソフトウェアは美しいのか
コードは工業製品ではない
よくある誤解
- ソフトウェア工場
- 大量生産しない
- コピーは一瞬
コード=設計 (not 生産)
- 職人芸
- 一品もの
- 善し悪しがある→工業製品生産とは違うことを無視されがち
コードは実用品
- 実用に供してナンボ
- 用の美→茶器みたいなもの
コードは読み物
- CODE READING
- 教材
- 知識の宝庫
- オープンソース
パワーの美
- 「できない」を「できる」に
- アルゴリズムの力→処理速度が100倍、1000倍に!
不可能を可能に
Rubyの文字列処理
効率の美
- 生産性
- 簡潔さ
簡潔さは力なり
「Succintness is Power」 (Paul Graham)
簡潔さは力?
- Brooksの生産性不変の法則
- 本質に集中できる
- 実行可能擬似言語
JavaのHelloWorld
class Sample { public static void main(String[] args) { System.out.println("HelloWorld!"); } }
Rubyでは・・・
puts "HelloWorld!"
冗長の排除
- DRY(Don't Repeat Yourself)
Matz<昔?はソースの行数で仕事量を計っていた
怠惰のための勤勉
- 手抜きは美しくない
- 苦労を見せびらかすのは粋じゃない
水鳥のごとく
- 水上は優雅に
- 水面下では懸命に
現実は複雑だ
- ソフトウェアも複雑
- 避けがたい現実
- 現実を直視する
人の心は単純じゃない
- 単純さが好き⇔複雑さも好き
- 簡単な問題がいい⇔難しい問題がいい
人間にフォーカス
- 思いやりはうれしい
- 優しいものは美しい
- 人間のためのソフトウェア
バランス
- 用は人間がどう感じるか
- 唯一の正解がない
- 非理系的
思考の流れ
○をして、〜して、〜する
Rubyでの例
puts ARGF.each.take(n)
Haskellでの例
main = do cs < - getContents putStr (unlines (take n lines cs))
- 人間がどう感じるか
- 人間は進化する
- 新たな知識
- 慣れ
- 最適化
人間を進化させる
- 現状に安住するより前向きに進みたい
- 長い目で見た効率
内面の美
- 外には見えない
- 外面ほど価値観が変化しない(アルゴリズム、ユークリッドの互除法→今でも使われている)
- コードに内在
- プログラマには(内面の美にも)感心を持ってほしい
コードはアートだ
- 人間のために
- 製品ではなく作品
プログラマ=アーティスト?
- アートを作る人
- 自覚があるか
アーティストとは?
- 作業員ではない
- 歯車ではない
- 創造的
- 自発的
アーティストの条件
- 自覚
- 自発
- プログラマ一人一人がアーティストであってほしい
美しいコード
○理解に基づいたコード
- 人間(外面の美)
- 機械(外面の美)
「理解」が鍵
- どれだけ知っているか
- どれだけ理解できるか
- どれだけ考慮できるか
質疑応答
今まで見た中で美しいと思ったコードは?
- 自分の書いたコードw
- Emacs(正直読みにくいが美があると思う)
好きな食べ物は?(会場笑)
- 加熱したトマトが好きなんで、イタリア料理なんかが好きですね
アーティストはセンスが必要だと思うが、プログラマのセンスとは?
- プログラミングが好きだという自覚(誰かに強制されるのではなくて、自発的に勉強、行動すること)
第二部「プログラマ35歳定年説を切る!」
全部は追い切れないので、重要と思ったやりとりを中心に
登壇者
- Matz
- ジェイブレイン 修行氏
- ウェブキャリア 川井氏
プログラマ35歳定年説〜よく言われる理由
- 後進に道を譲り、管理をするように会社に言われる
- 35歳で知力、体力の限界がくる
現状
- 40以降で生き残ったプログラマは給料が1.8倍にはなっている
- IT業界から違う業界に流れている
- Matz<まず、この3人の中で僕が一番年上と言うことに驚愕w
- 体感としては事実であるとは感じている(友人、知人などの状況を垣間見て)
日本の会社、給与制度
- 年齢が上がるとともに総合職、管理職みたいになっていく
- Matz<実際に(35歳でプログラマを続けるのは困難と)感じている人がいるという事実は怖い
- ブルックスの法則の話
- 人がいっぱいいてもコミュニケーションロスが生まれる→いまだに理解している管理者が少ないのでは?
- Matz<そういう待遇をうけている人は会社を移るべき。転職してもマイナスになりにくい職業。もっと転職して、淘汰を促すべきでは。
- 川井氏<資格が無い→客観的な評価がわかりづらい
- 修行氏<この業界も評価が難しい。「あの人はがんばっている」など曖昧な評価になりがち
- 修行氏<センスの話もあるが、自分の市場価値を上げる方法が必要なのでは
- 川井<仙石(KLabのCTO)さんの話「プログラマの35歳は、医師や弁護士の国家試験みたいなものでは?→むしろ向かない人は35歳で管理に回るべき」
- Matz<大筋で同意なんだが、周りにも優秀なエンジニアでも40過ぎで「最近コード書いていない」みたいな人も多い→立場が管理者になっている
- Matz<なぜ日本ではソフトウェア開発の価値は認めてもらえないのか??
- Matz<「ソフトウェアを書いたことがない上級エンジニア」とやらがいるのはおかしい
- Matz<プログラマの上級職が無いのが問題・・・フェロー?(場内爆笑)
なぜプログラマの価値が認められないのか?
- Matz<会社の経営者が価値を認めてくれないのが問題
- Matz<物言えるプログラマが出てこないと駄目
- 修行氏<IT業界は技術が陳腐化しやすい→常にフォローする必要がある
- 修行氏<自分の価値をいっそう上げる行動も必要だろう
- 川井氏<プログラマの世間のイメージが悪い(スーパーハカー、アキバ系...)→発注しているお客さんに仕事の内容が理解されない
- 川井氏<例えば月9でキムタクがプログラマやるとか、漫画とかにスーパープログラマ出すとかイメージ戦略も必要では。
- Matz<自分で行動しないと変化が起きない
- Matz<世間的な価値を高めていく行動の積み重ねが必要!
- Matz<実例:「オープンソースを作る→名刺代わりに売り込み→もっと待遇の良い会社に転職」
- 川井氏<会社の仕事のみにとらわれないことが重要
海外のプログラマ
- 川井氏<海外ではどうなんです?
エンジニアへのアドバイス
まとめ
- 35歳定年説は存在する
- 個人よりも日本の組織体質に原因がある
○打破するためには (※TrinityT自身での勝手なまとめです)
- 自分のやりたいことができない、キャリアパスが無い会社ならば転職も視野に
- 会社に頼っていたのでは駄目。とにかく自ら行動。勉強。
補足
- 修行氏<転職は大変になっている。競争率がすごい上がっている。
- 修行氏<去年と同じことをやっていたのでは抜かれる=市場価値が落ちていると認識した方が良い
- 川井氏<30歳までには自分の方向性きめるべき→無理してプログラマを選ぶ必要はない
- 川井氏<開発の経験をするのはほかの職業に比べても価値がある
- 川井氏<20代前半の若いエンジニアの考え方はかなり進んでいる。
- Matz<自分の人生は他人に決められない
- Matz<他の人と同じことをしないこと(茨の道かもしれないが)