So-net無料ブログ作成

第16期、第17期「プログラミング言語Java」コースを開始 [プログラミング言語Java教育]

4月から私にとっては通算第16期と第17期になる「プログラミング言語Java」コースを開始しました。第16期は、月初めの金曜日で、第17期は月末の金曜日に開催します。今回は、4月から開始なので、来年3月に終了する予定です。

第16期は私が講師です。しかし、教育者としての技術者の育成も目的として、第17期は社内の中堅エンジニアが講師であり、私は補助講師という立場です。

【追記:2012年11月16日】
残念ながら第17期の中堅エンジニアを講師として育てることは途中で頓挫してしまい、結局、私が講師を行っています。

教育と場 (3) [プログラマー現役続行]

ソフトウェア開発では、画一的に教育で教えられることだけで済むことはなく、コミュニケーションを取りながら、こまごまとしたことを指導や指摘を行っていく必要があります。

延べ1,000人以上に教育を行っても、日々の開発業務で指導を受けない人達が伸びていく可能性は低いです。現場のエンジニアとコミュニケーションを取ることなく、一人で教えて指導するには限界があると当初からあきらめてしまうと、組織としては実は全くエンジニアのスキル向上が行われないのかもしれません。たとえば、一人で教えられる範囲は限界があるからと当初からあきらめて、ウェブベースの教育コースを用意しても、コースを用意した側の自己満足に終わってしまうのではないかと思います。

1999年頃から様々な教育を行ってきましたが、確かに人によってはそれらの教育(特に「プログラミング言語Java教育」)をきっかけとして一人で成長していった人もいたかとは思います。しかし、教育を受けた中でも、成長していった人達の大多数は、日々の開発業務で直接私と一緒に仕事をした(若い)人達です。

日々の開発業務で一緒に仕事をするというのは、教育では教えきれないことも話しますし、コードや設計のレビューもしますし、一緒にデバッグしたりディスカッションしたり、さらに、一緒に飲む機会も多くなります。つまり、必然的に日々多くのコミュニケーションを取ることになり、様々なコミュニケーションの場を通して、私自身の考えや経験を伝えていくことになります。

(「教育と場」、「教育と場 (2)」)

ソフトウェア開発組織が持つべきカルチャー 014 [ソフトウェア開発組織が持つべきカルチャー]

知識教育だけではなく、良い行動パターンを促進する

技術の伝承と良い習慣の伝承」とも関連しますが、日本の企業でソフトウェア技術教育(特に新卒新人の技術教育)を担当している部門やグループは、何を教えたかということで教育体系をまとめようとする傾向があると思います。しかし、個々の教育コースの内容を見ると浅かったりします。

ソフトウェア技術というのは、毎年新しいものが登場し続けますので、すべてを教育コースで教えることはできません。そのため、ソフトウェアエンジニアに身に付けてもらうことは、知識だけではなく、継続して自発的に学び続けるということです。

たとえば、2000年から行っている「プログラミング言語Java教育」は、単にJava言語の知識を学ぶというだけではなく、膨大な自分の時間を使って専門書をきちんと学習する習慣を身に付けてもらうことも目的としてあります。実際、一年間の最後の成果発表会では、「学習する習慣が身に付きました」と発表する人も多いです。

まともに書籍を読むことなく、いつもネットで調べるだけということでは、非常に偏った学習方法となります。私自身が1998年からずっと継続してい行っている朝の専門書の勉強会も、継続して学習するという習慣付けを身に付けてもらうことも目的としています。英語の書籍による勉強会は、知識を吸収するだけでなく、英語で技術書を読むことに抵抗感を無くして、英語で専門を読むようになってもらうためです。また、最低限知っていて欲しいと思う「コンピュータの基礎知識」を学んでおいてもらう必要があるために、いくつかの専門書を用いた勉強会を開催してきました。

コードをレビューするというのは、読みやすいコードを書くということを常に意識してプログラミングする習慣を身に付けてもらうことも目的としてあります。

ソフトウェア開発組織のレベルを上げるには、教育体系を整備するだけではなく、好ましい行動パターンを促進する施策を行うのが長期的には良いと思います。

かつて、私自身の行動パターンをモデルとしていくつかの項目に分類して、それを元にアンケートを作成して、約70名のソフトウェアエンジニアに回答してもらい調査を行ったことがあります。その調査では、どの行動パターンがエンジニアのレベルと最も高い相関を示すかを調査しました。調査結果は今は持っていませんが、いくつかの行動パターンがエンジニアのレベルと相関が高くなっていました。

何が良い行動パターン(習慣)であるかは、ソフトウェア開発組織の中で整理してみるのが良いかと思います。ソフトウェア開発力が弱い組織は、悪い行動パターンを繰り返していることが多いです。

コードレビューの視点 007 [コードレビューの視点]

知識の伝達の場

コードレビューは品質を向上させるだけでなく、様々な効果があります。その1つが、知識の伝達の場だということです。特に、レビューアーとしてレベルの高い人、つまり、様々なソフトウェア開発経験を経た人がいる場合、コード上の問題点を指摘する際に、なぜ、それが問題になるのか、修正しないとどのようなことが起きたり、将来起きるのかを説明できたりします。もちろん、それだけでなく、プログラミング言語に関しても初心者が知らない落とし穴や書き方を指摘することもできます。

初心者が何もかもすべて教えてもらえると期待してもらっても困りますが、ソフトウェア開発組織としては、きちんとしたレビューが行われることは、知識を伝達するという行為でもあるということを認識する必要があります。