So-net無料ブログ作成
検索選択

『Effective Java 第2版』正誤表の更新 [正誤表]


Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)


書籍『Effective Java 第2版』の正誤表を更新しました。私のホームページの『Effective Java 第2版』のアイコンをクリックすると、正誤表へのリンクが表示されます。

http://www001.upp.so-net.ne.jp/yshibata

今回の修正は、p.256の修正の1件です。

『プログラミング言語Java第4版』正誤表の更新 [正誤表]


プログラミング言語Java (The Java Series)

プログラミング言語Java (The Java Series)



書籍プログラミング言語Java第4版』の正誤表を更新しました。私のホームページの『プログラミング言語Java第4版』のアイコンをクリックすると、正誤表へのリンクが表示されます。

http://www001.upp.so-net.ne.jp/yshibata

技術者の技量の評価軸 [プログラマー現役続行]

多くのソフトウェアのトップ企業においては、その企業のトップは、ハードウェアやソフトウェアの開発経験者です。たとえば、マイクロソフトオラクル、グーグル、アップルなどは、開発経験者がトップとなって会社をリーディングして成長させています。そして、実際にトップが現場にソースコードを見せろと言ったりしたこともあるという話も読んだことがあります。

開発経験が全くない人がソフトウェア開発組織をリーディングすることは可能なのでしょうか。開発経験が全くないということは、その組織のメンバーの技量を的確に判断できないことになるのではないかと思います。たとえば、エンジニアを一人一人、短い時間面談したとして、エンジニアとしての技量を知ることは無理だと思います。実際、開発経験があっても短い時間で判断するのは難しいです。ある程度、その人と一緒に開発をしてみないと、その人のレベルは分からないことが多いです。また、実際にどのような開発プロセスでソフトウェアを開発しているかを聞き出して、そのプロセスのどの部分を改善すべきかを指摘することも困難だと思います。

一般に、どのような分野においても、レベルが低い人がレベルが高い人を評価することはできません。レベルが自分よりどの程度高いかを知ることはできないからです。最悪、自分のレベルの範囲でしか評価できなかったり、その狭い範囲の中で評価軸が決まってしまったりします。

たとえば、拙著『プログラマー現役続行』では、第5章「継続した学習」において、「会社に頼ることなく」自分の時間とお金を投資して、継続して学習する必要性を述べています。しかし、開発経験がないということは、エンジニアが継続して学習することの重要性を理解していない可能性があります。その場合には、組織のエンジニアに対して、「業務以外にどのような技術に興味を持っていて、その興味がある技術に対して何か学習しているか」と聞いたりすることはないかと思います。そうなると、エンジニアとしての技量を評価する際の評価軸に「継続した学習」は含まれないことになります。

プログラマー現役続行 (技評SE新書)

プログラマー現役続行 (技評SE新書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2007/09
  • メディア: 新書

拙著『プログラマー現役続行』では、必要な7つの力を述べています。
  • 論理的思考力
  • 読みやすいコードを書く力
  • 継続学習力
  • コンピュータサイエンスの基礎力
  • 朝型力
  • コミュニケーション力
  • 英語力

これらすべてを、きちんとこなすことの難易度は高いかもしれませんが、私にとっては、技術者の技量を知るための評価軸の一部であることには間違いありません。これまでもそうであったように、これからも、これらは、私自身が現場のソフトウェアエンジニアに対して求めることであることには、変わりはありません。


書籍『Agile Testing』 [プログラマー現役続行]


テスト駆動開発において、テストコードを開発者ではなく、テスト担当者が作成することは重要です。

アジャイル開発以前であれば、開発チームが開発したソフトウェアを、後工程としてテストチーム(あるいは、品質保証チーム)が確認するということが行われてきました。その場合に、開発チームはスケジュール通りにリリースできなくて、テストチームは急いで確認することが要求されていた訳です。そして、実際には最初から品質が高い訳ではないのですから、テストチームによるテストは、「品質の確認」作業というよりは、不具合を見つけて報告する作業になってしまう訳です。

一方で、テスト駆動開発では、自動実行可能なテストコードを、実際のソフトウェアと一緒に開発し、Continous Integrationと組み合わせることにより、常時テストを自動実行することになります。その場合、テストコードの作成は、開発者自身が作成することが多くの組織で行われているかと思います。

しかし、開発者がきちんとしたテストコードを作成できるとは限りません。開発者はどちらかと言えば、本来テストすべき様々な条件の一部だけをテストして、テストが終わったと考えたりします。

テスト駆動開発であっても、開発者によるテストコードの作成だけでなく、テストチームによる網羅的なテストコードおよび要求仕様に応じたテストコードの作成が必要です。つまり、従来のテストチームの役割ではなく、開発チームおよび仕様の要求者と密接にテストチームは連携して、テスト駆動開発にはなくてはならない存在となってきます。

私自身、過去数年、テスト駆動開発を行ってきて、開発者によるテストコード作成だけに頼るのではなく、テストチームによるテストコードの開発は非常に重要であると認識しています。

まだ、読み始めたばかりですが、私自身の経験に照らし合わせても、本書はアジャイル開発におけるテストチームの役割をきちんと認識するには役立つ内容です。

2009 JavaOne Conference [JavaOne 2009]

今年のJavaOneは、6月2日から6月5日までの開催であり、すでに登録受付が開始されています。

http://java.sun.com/javaone/

2007年は初めての参加で会社からの出張扱い、2008年は休暇を取って自費でした。今年も休暇を取って自費で参加する計画ですが、Google I/Oがその前の週に開催されるので、そちらへの参加も含めた参加費、交通費、宿泊費を計算しながら、どうしようかと思案中です。

Google I/O 2009 [カンファレンス]

Google社が主催するGoogle I/O 2009が、今年は、JavaOneの前の週の5月27日と28日に、サンフランシスコのMoscone Westで行われるようです。

http://code.google.com/events/io/