SSブログ

社内勉強会への参加者のパターン [プログラマー現役続行]

1998年から始業前の朝に、社内で技術書の勉強会を開催してきました。様々な技術書を用いての勉強会(読書会)です。週1回で60分程度の勉強会ですが、本を1冊読みを終えるには、半年以上要することが多いです。

このような勉強会への参加者のパターンは、大きく次の2つに分かれます。
  • 最初から最後まできちんと参加する人
  • 最初は参加するが、途中で出席しなくなる人
最後まで参加する人は、次の書籍の勉強会でも参加し、継続的に参加して、一緒に技術書を読み終える人が多いです。

途中まで参加する人は、1冊の書籍が終えて、次の新たな書籍の勉強会を募集した時に参加しない人が多いような気がします。

途中で参加しなくなっても、新たな募集では常に申し込んで、でも、再び途中から必ず参加しなくなる人もいます。このような人に対する、主催者(つまり私)の評価は低くなります。その中でも特に、参加申し込みをしていないで、勉強会に出てきて、そして、参加しなくなる人は、さらに評価が低くなります。

主催者としては、参加者の一覧を管理したり、リマインダーのメールを出したりする必要があります。そのため、事前の申し込みなしで参加する人に対する、印象は悪いくなりますし、ましてや、その人が途中で参加しなくなるのが常習だと、その人に対する評価はさらに低くなります。

専門性に忠実になる [転職]

転職に際して、「会社での工数の4割弱程度は、設計・実装・デバッグを行うことが希望である」と採用面接時に述べています。当然、そのような希望が常にかなうわけではありません。実際に、設計・実装・デバッグができなくても、若い人達の育成という意味で、レビューを行うことでも、ある意味、開発活動と見なすことができます。

大学を出て就職してから、私自身が開発を行っていない時期と行った時期が数年単位で交互に繰り返されています。そして、残念ながら最後の転職からは、行っていない時期となっています。

確かに、Java教育を行ってもきましたし、継続的インテグレーションの導入や様々なAPIのレビューなども行った時期もあります。しかし、実際に、自分自身がリーダである開発グループを持ってからは、開発ができるというよりも、管理職としての雑務(間接業務)に忙殺されており、チームの実際の開発の成果物をきちんとレビューもできない状況です。つまり、今の状況は、拙著『プログラマー”まだまだ”現役続行』の第12章「30代、40代の人たちへ」で述べている「レビューを行う」さえもできていない状況です。

前職では、リーダではなく、部長でしたが、むしろ、かなり開発をしていましたし、部長としての雑務は、今と比べて非常に少なかったです。それは、私の他にグループリーダがいて、さらに、事業部には選任の営業がいたため、私自身が開発における間接業務を行う必要がなかったからだと思います。

会社の仕事に忠実になるのか、自分の専門性に忠実になるのかを選択するとしたら、自分の専門性を選択します。そうでなければ、過去、4回転職することはなかったと思います。

どうやったら、もっと開発寄りの作業に時間を費やせるか考え直す必要がある時期なのかもしれません。

第20・21期Java研修が終了しました [プログラミング言語Java教育]

2013年11月と12月に開講した(私にとって)第20期と第21期のJava研修が、1月17日に終了しました。最終成果発表会は、合同で行いました。

いつものように成果発表会では、最終課題としてGUIのデジタル時計を披露する必要があります。ただし、時計がどこかに出ているだけで良いという条件ですので、実際には、様々なアプリケーションだったりします。通常のJavaアプリケーションとして動作するものや、Androidアプリケーション、あるいは、GWTを使用したものと、様々でした。今回は、何らかのハードウェアを持ち込んで、それとの連携のデモが多く、見ていて楽しいものが多かったです。

成果発表会では、研修を振り返っての「プレゼンテーション」と「時計課題」で投票を行いました。結果は、社会人2年目である受講生がほとんどの中で、受講生の中で最年長の人が、どらちでも最高得票を獲得しました。

java20.png
第20期生


java21.png
第21期生


Java研修(7) [プログラミング言語Java教育]

2010年1月から第11期として、リコーで開講したJava研修(過去の実績はこちら)ですが、明日で、第20期と第21期が終了します。成果発表会を2コース合同で行いますので、18名が修了します。

第20期と第21期は、主に2013年度の新卒新人を対象としてきましたが、新卒新人以外の人もおり、最年長は57歳(第21期)の人です。リコーグループとしては、第11期から第21期までで、のべ90名が修了することになります。そのうち、5名はすでに転職しています。

現在はJava 8が登場しており、今後はJava 8が主流となっていくでしょう。Java研修は、Java 1.4および1.5の内容となっていました。今までテキストとして使用してきた『プログラミング言語Java第4版』は、Java 8に対応して改訂される予定はありません。そのため、リコー内でのJava研修は、第21期で終わりです。

現在、リコーITソリューションズ主催の第22期が開催されています。今後も、古い内容で続けるとしても、こちらのコースのみ残ることになります。リコー内では、開催しません。

Java 8に限定した研修は、トライアルとして現在開催しています。ただし、受講資格は、従来のJava研修を修了した人だけとなっています。

開発スピードが遅い?速い? [プログラマー現役続行]

ソフトウェア開発グループあるいはソフトウェア開発組織の開発スピードが遅いとか速いとはか、何を基準に判断するのでしょうか。

人が単純な作業を行わずに、自動化できる部分を徹底的に自動化した場合、残っている部分が本当の意味では、その組織での開発スピードです。

たとえば、システム全体のビルド作業を手作業で週に一回行っており、開発メンバーは、単体テストも書かずに、高残業をしながら一週間に多くの機能を実装したと報告する開発を考えてみます。もちろん、他のモジュールとのビルドもしていないし、ビルドするのは翌週の月曜日ということになります。これは、80/90年代によく行われた開発スタイルです。

一方で、Jenkinsを使用しながら継続的インテグレーションを行い、自動実行される単体テスト・システムテストを作成しながら、システム全体の機能のデグレードや副作用が起きていないかを常に検証しながら、開発メンバーがあまり残業をしない開発と比較してみるとどうでしょうか。

機能の作り込みスピードは、一見すると前者の開発の方が速いように見えます。しかし、それは、システム全体を結合して、システムテストに入るまでのことです。システムテストに入ってしまったら、作り込まれたソフトウェアの品質はスケジュールに対して嘘をつきません。つまり、品質が悪ければ、多くの不具合が報告されて、当初の立てられたテストスケジュールはあっさりと延長されます。

後者の開発の場合、開発のスピードを左右するのは、開発メンバーのソフトウェアエンジニアとしてのスキルレベルです。スキルが低い人は、低い人なりの成果しか出せません。見かけ上、多くの機能を作りこんだと報告することはできません。スキルの高い人であれば、実際に動作して検証済みの難易度の高い機能を同じ期間に多く作り込んでいきます。

製品開発の観点から、前者の開発では、開発部門が順調に開発していると報告しても、最後のシステム全体のテストが非常に長くなってしまうため、QA部門が開発部門を信頼せずに、経験的に製品のテスト期間を長く設定した計画になります。後者の開発では、本質的に開発方法が異なっていますが、そのような製品開発を経験したことがない場合には、同じ長さのテスト期間が必要だということになりがちです。しかし、従来と比べて、開発部門の開発量は増えていますので、開発部門による開発期間は長くなり、開発部門の開発スピードが遅すぎるという批判になってしまうことが考えられます。

前者の開発では、スキルが低い人がいても、見かけ上分かりにくいです。そして、スキルが低い人が作ったモジュールが原因でプロジェクトが火事場になるのは、プロジェクトの後半になります。さらに、火事になってから、マネージャが「火事の原因は、担当者のスキルが低かったから」と報告して、担当者を変えて火消ししようとすることが多いと思います。結果として、プロジェクトの終盤で、別の人に全部書き直されてしまうモジュールがあったりするかもしれません。

後者の開発で注意しなければならないのは、エンジニアのスキルと育成です。本質的にスキルが低い人の集団では困るわけです。開発しながらでも、スキルが確実に向上していってもらう必要があります。見方を変えると、個々のエンジニアのスキルが見えやすい開発と言えます。

開発グループや開発組織の開発スピードが遅いと言う場合には、いったい何を意味しているのかをよく考えてみる必要があります。

5年間の活動(2010年〜2014年)(書籍)(3) [プログラマー現役続行]

Objective‐C明解プログラミング―基礎から応用までステップ・バイ・ステップ方式でわかりやすく解説 (Developer’s Library)

Objective‐C明解プログラミング―基礎から応用までステップ・バイ・ステップ方式でわかりやすく解説 (Developer’s Library)

  • 作者: スティーブン・G. コーチャン
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2013/05
  • メディア: 単行本

2012年3月14日に、次にどの書籍を翻訳するかを打ち合わせをして決めたのがこの書籍です。3月末から翻訳作業を始めています。途中、『プログラミング言語Goフレーズブック』の仕上げ作業のために中断しましたが、当初は原著の第4版をベースに翻訳していました。

しかし、翻訳中に原著の第5版が出版されたので、再度、翻訳を見直して、第5版の修正を反映させる作業を行っています。2013年1月末にLaTeXファイルを納品したのですが、この本は、日本ではなく、中国で印刷されたため、実際の出版は5月になっています。

私自身は、この本を通して、初めてObjective-Cを学びました。2013年は、この1冊だけを出版しました。


APIデザインの極意 Java/NetBeansアーキテクト探究ノート

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

  • 出版社/メーカー: インプレス
  • 発売日: 2014/05/23
  • メディア: Kindle版

2013年1月末に『Objective‐C明解プログラミング』の翻訳作業が一段落し、特に次の本の予定もないので、何か依頼がくるまではのんびりとしていようと思っていました。しかし、2013年3月13日に、今まで取引がなかったインプレス・ジャパン社(現在は、インプレス)から翻訳の依頼があったのがこの本です。

単純にページ数から、翻訳作業は半年程度と見積もったのですが、これが大きな誤りでした。実際に、翻訳作業を始めてみると、技術書とは言っても、文章ばかりでなかなか作業が進まないという状態でした。また、組み版に関しても、出版社からのいくつかの要求に対応する必要があり、それまでのピアソン桐原から出版した本とは異なる組み版となっています。今までLaTeXで組み版してきたといっても、私自身はLaTeXの専門家ではないため、色々と苦労しました。

結局、翻訳の最終版の納品が終わったが2014年5月となってしまいました。1年1か月を、この本の翻訳に費やしたことになります。当初、Kindle版を出版するとは聞いていなかったのですが、気付いたらKindle版も出版社で準備して発売されていました。


Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

  • 作者: Cay S. Horstmann
  • 出版社/メーカー: インプレス
  • 発売日: 2014/09/22
  • メディア: 単行本(ソフトカバー)

2014年になってJava 8も正式にリリースされそうだということで、そろそろJava 8をきちんと学習する必要があると思っていました。それで、色々と書籍を調べて、2014年3月22日に、私の方から出版社に、この本の翻訳を打診しています。

幸い、4月に、この本の翻訳の企画が出版社内で承認されたので、翻訳作業を始めました。どのような本でも翻訳を始める場合には、著者の連絡先を探して、翻訳していることを伝えて、問い合わせ先を確認します。この本でも同じです。

最初、原著の正誤表が見当たらなかったので、気付いた点を都度問い合わせていたのですが、そうこうしているうちに原著の正誤表が掲載されるようになりました。今回の翻訳では、細かい点のチェックが不十分だったのと、さすがに練習問題を全部解きながら翻訳作業をするわけにもいかないので、残念ながらさまざまな見落としがあり、日本語版の正誤表に反映しています。

2014年8月下旬にLaTeXファイルを納品して、翻訳作業は終わっています。こちらは、まだKindle版は出ていませんが、今までの正誤表の内容を反映したKindle版も発売される予定です。

この本をテキストとして、『Java 8基本技術習得』コースとして2014年10月から教育も行っています。受講生は、すべての練習問題を解くことが求められています。

この本は、Java 8で新たに導入された部分(言語仕様、ライブラリー)に注力していますが、同じような形式で書かれたJava全般の書籍としては、同じ著者が『Core Java for the Impatient』を執筆しており、2月に発売予定です。原著は、私もレビューしています

結果として、2014年は2冊を出版したことになります。

2014年9月からは、特に次の本も予定がなく、今日まで何も行っていません。2000年から毎年最低1冊は、自著もしくは翻訳本を出しているので、今年も1冊は出したいと考えています。

5年間の活動(2010年〜2014年)(書籍)(2) [プログラマー現役続行]

Android SDK 開発クックブック

Android SDK 開発クックブック

  • 作者: ジェームズ・スティール
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2011/07/26
  • メディア: 単行本(ソフトカバー)

2010年12月21日に出版社と打ち合わせをして、翻訳することにしたのがこの本です。もう一つの候補は、『iPhone Programming: The Big Nerd Ranch Guide』でしたが、こちらは、『iOSプログラミング 第2版』として私の知り合いの木南さん(他2名)が翻訳しています。

翻訳作業は、年末から始めたのだと思いますが、最終原稿(LaTeXファイル)を出版社へ送付したのが2011年5月30日です。Androidについては、以前、木南さんが『Google Androidアプリケーション開発入門』を執筆されて出版された時に、1冊頂いたのですが、特に勉強したわけでもなかったので、この本の翻訳を通して学んだことになります。

著者のジェームズ・スティールが2012年3月5日に来日した時に、彼からの要望で3冊欲しいということで、彼が当日宿泊予定であったホテルへ3冊を持って行ってホテルへ預けました。残念ながら時間が合わなくで、彼とは直接会うことはできていません。

2011年は、この1冊だけでした。


プログラミング言語Goフレーズブック

プログラミング言語Goフレーズブック

  • 作者: David Chisnall
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2012/10/04
  • メディア: 単行本(ソフトカバー)

Go言語は、今日では広く使用され始めており、使用している人も増えてきていると思います。昨年のGo Conference 2014 autumnで、Go言語の生みの親の一人であるRob Pike氏も来日しましたし、多くのエンジニアが参加していました。

私自身は、2010年の夏から社内の若手エンジニアと一緒にGo勉強会を行っていました。Go言語が正式にリリースされる2年弱前からです。月に1回の勉強会でしたが、最初の頃は、分からないことが多く、参加者で試行錯誤しながGo言語を学んでいました。

そうした中で、この本の原著が執筆されていることを(Amazon.comで)知って、出版社に翻訳権を取ってもらったのが、2011年10月です。それから、著者と直接やり取りをしながら、執筆段階の原稿を用いて翻訳を始めました。そして、Go言語の最初の正式リリース版である1.0が出た2012年3月には、翻訳作業の9割は終わっていました。しかし、その時点で、出版しないということになり、ほとんどお蔵入りになりました。

2012年6月18日に、やはり出版するという連絡を出版社から突然受けました。それで、最後の仕上げを行い、最終原稿(LaTeXファイル)を出版社へ送付したのが、2012年8月10日です。この年の夏休みは、8月初めでしたので、函館で過ごしながら、最終作業を金森倉庫の前のスターバックスで行っていました。

2010年のGo勉強会参加全員が、翻訳のレビューを行ってくれて、私の「訳者まえがき」の謝辞に名前が掲載されています。その中の一人が、Go言語の学習サイトである「Tour of Go」(https://tour.golang.org/)の日本語サイト(http://go-tour-jp.appspot.com/)を運営している荒木さんです。荒木さんも含めて、現在は、Go言語を使用して開発するプロジェクトを行っているため、勉強会は休会中です。

2012年に出版したのは、この1冊だけです。でも、実際には、2012年4月から次の翻訳作業を行っており、それについては、次回説明します。

5年間の活動(2010年〜2014年)(書籍)(1) [プログラマー現役続行]

2010年から2014年末までに執筆および翻訳した書籍の振り返りを、数回に分けて書きます。

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)

アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 (THEORY/IN/PRACTICE)

  • 作者: Dave H. Hoover
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/07/08
  • メディア: 単行本(ソフトカバー)

2009年10月2日にオライリー・ジャパンの担当者から原著『Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman』の感想を知らせてもらえないかと依頼されて、原著を読んで、感想を送ったのが10月15日でした。10月31日には、Amazon.comに、原著のレビューも投稿しています。

内容の感想を依頼されただけだったので、その後に翻訳の依頼が来るとは思っていなかったのですが、(社内での翻訳の企画が通って)翻訳の依頼を正式に来たのが11月4日です。それから翻訳に着手しました。最終的に私の作業が全部終了したのは、2010年5月末でした。この本の組み版は、出版社で行っています。

プログラマー”まだまだ”現役続行 (技評SE選書)

プログラマー”まだまだ”現役続行 (技評SE選書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2010/09/04
  • メディア: 単行本(ソフトカバー)

初版『プログラマー現役続行』の改訂版の企画の連絡を出版社から受けたのが、2010年3月2日でしたが、『アプレンティスシップ・パターン』の翻訳作業のため、改訂作業に着手するのが遅くなり、改訂版原稿を送ったのが6月末でした。

改訂版では、初版の内容の見直しと、第11章「若い人たちへ」と第12章「30代、40代の人たちへ」を新たに書き下ろして追加しています。この本の組み版は、出版社で行っています。

プログラミング原論

プログラミング原論

  • 作者: アレクサンダー ステパノフ
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2010/12/24
  • メディア: 単行本(ソフトカバー)

原著の『Elements of Programming』の翻訳企画は、2009年には出版社内で通っていたようなのですが、なかなか翻訳者がみつからず、私へ打診が来たのが、2010年4月14日でした。実際に翻訳に着手したのがいつなのかは、不明なのですが、9月中旬には第1章まで訳し終えていたようです。結局、翻訳を終えて出版されたのは、12月となっています。

この本は、もともとLaTeXで書かれていましたので、組み版も私が行いました。残念ながら、今は絶版となっています。この本の前編となるような内容の本が、『From Mathematics to Generic Programming』です。

2010年は、結果的に3冊の本を出版したことになります。