SSブログ

一人前になるには10年 [「ソフトウェアエンジニアの心得」講演]

「ソフトウェアエンジニアの心得」と題した話は、講演として行ったり、技術教育として企業向けに行ってきています。基本的には、拙著『プログラマー”まだまだ”現役続行』に沿っていますが、その中で「一人前になるには10年」ということで話をしています。該当部分を拙著から抜粋したのが次の部分です。
一人前になるには10年

 ソフトウェア開発は創造活動であり、創造能力を高めるには、「より良くできないか」という問題意識を常に持ちながら、多くの経験を積んでいくことです。
 リチャード・ガブリエルは、「ソフトウェアを書くことは芸術であり、本当にうまくなるには10年を要する」とも述べています。
 これは、「10年間ソフトウェア開発を経験した人が一人前である」という意味ではありません。実際の開発現場では、単に10年間を過ごしただけであり、一人前といえる経験・知識にはほど遠い人も多いのです。
 デービッド・フーバーとアデワレ・オシニェイェは、『アプレンティスシップ・パターン』の中で次のように述べています。
十分に長い期間続けていれば、「経験者」と呼ばれ始めますが、それがあなたの目標であってはいけません。経験が示すのは、あなたが生き延びてこられたことだけです。学んだ量を示しているのではなく、過ぎ去った時間を示しているだけです。ソフトウェア業界のある部分では、能力の大幅な向上をしなくても、一年で経験したことを10回繰り返すのは非常に簡単です。実際、これは時として、反経験(anti-experience)になることがあります。つまり、年を重ねることが、単に身に付けた悪い癖を強化しているだけの現象です。したがって、あなたのゴールは経験を積むことではなく、スキルが上がることであるべきです。
 いかなる芸術でも、何の練習もなく優れた作品は生み出されません。多くの練習を積み、何が本質的なのか、何がそうでないのかを見極める能力を養っていくことが必要となります。

『プログラマー”まだまだ”現役続行』(p.25)

ずっとC言語でしかプログラミングをしたことがない場合、1990年初頭であれば、オブジェクト指向設計やオブジェクト指向プログラミングをした経験がなくても、不思議ではありませんでした。しかし、今日、10年以上の経験者(実際には「反経験」)が、「オブジェクト指向の指導・教育を会社で受けたことがない」からオブジェクト指向が分からないという答えられる時代ではないと思います。「オブジェクト指向を勉強したことがないから分からない」と言うのであればまだ多少は救いがあるかもしれませんが。

確かに会社での仕事を通して学ぶことも多いです。しかし、会社は、会社にとって必要と思われる投資で無い限り、技術教育に投資したりしません。たとえば、C言語での開発しか行っていない会社が、会社の業務と関係ない言語の教育に投資したりしない訳です。
大多数のプログラマーやシステムアナリストは、自分の専門性が時代遅れにならないように維持することを会社に頼ることはできません。ソフトウェア業界で取り残されないためには、自分から進んで自分の時間(休暇さえも)や自分のお金を投資しなければなりません。
Edward Yourdon, Decline & Fall of the American Programmer
意外に思われる人が多いですが、私自身は、Javaを使用した開発業務に直接従事したことはあまりありません。今は、作成されたJavaコードのレビューなどは行っていますが、そのようなJavaの製品コードのレビューを行うようになったのも2009年以降です。実際の製品開発で1993年以降(2008年まで)使用してきた言語は、C++です。

振り返ってみると、私自身は、会社で新たな技術を教育してもらったという記憶があまりありません。仕事で使うために初めての開発でC言語を学び、C++も独学に近く、Javaも1996年から趣味で学んでいるという状況です(Mesa言語だけは、Xerox社内の言語なので会社で覚えましたが)。会社で教えることはあっても教えてもらったという経験は非常に少ないです。

私自身は、実際には、多くのことを書籍を通して学んできたのだと思います。そして、学んだことを実際の開発で実践することを繰り返してきたのだと思います。今日私自身がレビューなどを通して指導していることのほとんどは、書籍で学んで実践して経験して、その中で本質的だと理解した事柄に基づいているのだと思います。
Read Any Good Books Lately?

新しい知識と見識を得るために、私は常に本を読んでいます。一冊の良い本を選べば、他の人が何十年もかかって修得してきた見識を、数日で得ることができます。それなのに、なぜ、何年もかかって試行錯誤により学ぶのですか。非常に大きな差ですよ。もし、チームのメンバーが一年間に6冊の見識深い本を読んだとしたら、そのことがメンバーの仕事にどのような影響を与えるか想像してみてください。
Steve Maguire, Debugging The Development Process
自分の知識のなさやスキルの低さを「会社で教えてもらったり指導してもらったことがない」と言い訳しているようでは、20年たっても一人前になることはないかと思います。

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0