Lionaroid技術ブログ

Androidやドローンに関する技術的な記事やiRacingなどのシミュレータに関する記事

プログラマー"まだまだ"現役続行

以前から読書の習慣があるのですが、最近は「技術系」というよりは、「考え方」であったり「生き方」を考えさせられる本を良く読んでいます。

その中でも特に面白かった本をレビューしたいと思います。
今回は、柴田芳樹著の「プログラマー"まだまだ"現役続行」(技術評論社)について、自分なりにまとめの意味も含めてレビューしたいと思います。
※まだ読み始めたばかりなので、レビューは追記しながらになるかと思います。


第2章:プログラマー現役続行

生涯現役でプログラマーとして生きて行くためにステップアップすべきレベル

レベル1: 初心者
  • プログラミングの基礎知識やコンピュータに関する基礎知識が不足している
  • 例えば、ハッシュテーブルやO表記の意味が理解できない。
レベル2: 見習い
  • 指導を受けながら簡単なプログラミングができる
  • バグの原因に対して仮説を立て、検証し、結果を他人に説明できない
レベル3: 初級職人
  • 見習いレベルの実践は可能。但し、時々指導が必要
  • 少し複雑で高度な問題に対して、設計やコーディングをレビューしないと不安なレベル
レベル4: 中級職人
  • 必要な技術を仕事上自然に自動的に使っている
  • 若手を指導できる訳ではないが、新たな技術を学ぶ習慣もない
  • 過去の開発業務で実践した技術については問題なく開発を遂行できるレベル
  • C言語しか知らない組込みソフトウェア開発者の多くはこのレベルに留まる
レベル5: 上級職人
  • 新たな技術も含めて自分で常に学習を行い、自然と実践できている
  • 新しい技術を使用する難易度の高い開発であっても、難なくこなしてしまう
  • 人を育てるという意識より、自分自身が新たに何かを学ぶことにしか興味がない
レベル6: 名人
  • 技術を完全に消化していて、いつルールを破るべきかを知っている
  • 技術記事などを執筆している
  • 中級職人以下の職人を上級職人にすべく、組織に対して教育・指導を行っている
レベル7: 匠
  • 専門書を著作し、講演し、技術を拡張する方法を業界に問う
  • よりよい方法で職人を育成するための方法を探究している
  • 自分でコードを書くことが無くても、設計やコードをレビューして、技術を継承している


個人的な経験を省みても納得できる点が多く、うまくレベル分けされているなぁと感じました。
私はいくつかの会社で開発を経験しましたが、驚くべきことに何年も開発をしていながら「レベル1」に留まり続けている開発者も実際にいました。

自分自身をデバッグするプログラムは、O(∞)になることが証明されている、と言っても意味が全く通じないのです・・・本当に情報系の大学を卒業したのか、と疑いたくなる瞬間です。
そうではなくとも、「スタック」や「レジスタ」の意味すら分からない開発者も居たりします。
感覚的にはWeb系やWindows系開発者に、そういった人が多い気はしますね。普段あまり意識しないからでしょうか。。。

そのような特殊な方は別にして、著者が言うように大抵はレベル4か、あるいは3でしょう。
コーディング能力はそこそこ高い方だと思うのに、「どうしてそんな仕様にしてしまうのか」という人もいました。こういう人はレベル3ぐらいなんでしょうかね。

さて、他人はともかく自分はどうかと言うと、手前味噌である上に傲慢と言われることを覚悟して述べると、「レベル5」辺りでしょうか。

レベル1は学生時代と情報処理試験の勉強で嫌というほどやりました。
レベル2や3は社会人1年生の時にデバッグ手法と他人に対する説明、コードレビューの大切さを叩き込まれ(実際に設計やコードをレビューされ)たので、クリアしているでしょう。
レベル4は何年もこの業界にいれば、あとは姿勢の問題です。

一方、レベル6や7の執筆や講演という意味では少しかじってはいますが、そもそも今身につけている技術を完璧とは思っていません。
何より、レベル5の「人を育てるという意識より、自分自身が新たに何かを学ぶことにしか興味がない」とか、もうそのまんまなので(w
客観的に見ても、レベル6や7の壁は厚そうですね。


第2章は技術者としてどうあるべきか、深く考えさせられると同時に、明確な目標が持てる章でした。