• ベストアンサー

自分より優秀な技術者に対してのレビュー

自分よりも知識がある技術者の生成物に対して、品質を保証しなければならない場合の対処方法を教えて下さい。 立場上、私よりも知識のある者が書いたコードを検収しなければならないのですが、彼のレベルが突出しているため、プロジェクト内で彼のソースを理解できる人がほとんど居ません。 プロジェクト内のレベルに合わせて、実装・設計共にシンプルにするように指示をしても、「こうすべきなんです」の一点張りで全く指示に従いません。 言っていることが正しい可能性もあるのですが、少なくとも私の技術レベルでは到底理解できません。せっかくのプロジェクトがスキルアップできるチャンスを潰したくないと言う思いもあるのですが、何かよい対処法はないでしょうか? まとめると、 1. このままでは、彼のソースの品質を保証できない。少なくとも、彼が居なくなればソースをメンテできない。 2. かといって、せっかくのレベルの高い(かもしれない)技術を無駄にもしたくない です。

質問者が選んだベストアンサー

  • ベストアンサー
  • GoF
  • ベストアンサー率37% (34/91)
回答No.11

#6です。 >特に、マニアックなコードを書くプログラマ側を擁護する意見が少ないので、ありましたらお願いします。 自分も以前、コードコンプリートやデザインパターンなどを 読み、ある意味で難解なコーディングを書いていました。 (半年後に、やっと意図を理解されるような事もありました) 確かに、コードは「自分」では美しく見え、柔軟な仕様変更にも対応するのは間違いないのですが その分 前知識がないものには非常に難解になります。 例えば、パッケージ、カーネル相当や標準ライブラリになるような未来に続くシロモノなら、問題ありません。 しかし、通常の請負のアルゴリズムは一期一会的なものになるかと思います。 忘れた頃に過去のプロジェクトの仕様変更・不具合がやってきます。 初見で高度なアルゴリズムをメンテできる人はいません。 二重三重アサインを続けていきます。 いずれ一人の力がいかに小さいかを痛恨するときが必ずきます。 そいう意味でも、現状を放置することは彼にも望ましくありません。 彼は、自分の確固としたテリトリを確保したいフェーズなんだと思います。 おだてて、なだめて 上手にステップアップさせてあげるべきだと思います。 小うるさかったら、すいません。

11th_style
質問者

お礼

> しかし、通常の請負のアルゴリズムは一期一会的な > ものになるかと思います。 ご自身の体験談も踏まえてのご意見で、大変参考になりました。上手にステップアップするように導き、将来の力となるようにしたいと思います。 どうもありがとうございました。

その他の回答 (10)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.10

>例えば、呼ばれているだけで処理はない空っぽの関数がたくさんあります。将来の拡張性のためだそうです。 コードってC++あるいっはjavaでしょうか。 汎用的なクラスだとすると、オーバーライドできるように 仮想関数を作っておいたりとか? (勿論そんな汎用的なクラスを作られてもドキュメントがないと誰も使えませんが・・・) あとプロジェクトでコードを書くときの決まりごとってありますか? 例えば関数には必ず引数と概要のコメントを書いたり ファイル名、変数名や関数名に命名規則を設け コメントについても書式をプロジェクト共通する。 例えばCの関数なら /*  概要:ランダム数値の生成  param pDouble:[in,out] aに格納された値を元にランダム数値を生成し上書きする  戻り値:無し  作成日:2005.04.09  作成者:sha-girl */ void Fnc_Randam( int* pDouble){  (略) // 2005.04.10 11th_style この部分の参照が不正だったので変更 } >特に、マニアックなコードを書くプログラマ側を擁護する意見が少ないので、ありましたらお願いします。 マニアックなコードを書く人にとってはあまり自覚がないと思います。 だから擁護派が少ないのかと。私も書いてるかもしれないです。

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.9

>例えば、呼ばれているだけで処理はない空っぽの関数がたくさんあります。将来の拡張性のためだそうです。 そういう関数でも、メモリが厳しいなどの条件だと呼び出した時点で、キャッシュに乗り切らない場合、I/Oが発生します。 そういうのは、追加しなくてはならない時に追加するもので、#ifdefなり使ってプリプロセッサで落として、必要ないときにはコンパイラに渡さないようにしなくちゃならんと思いますが・・・。

11th_style
質問者

お礼

その辺は言語や環境によると思います。 彼の技術が本当に優れているかと言う観点ではなく、このような場合にどう対処すべきかと言う観点でお願いします。 特に、マニアックなコードを書くプログラマ側を擁護する意見が少ないので、ありましたらお願いします。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.8

言語レベルで理解できないのであれば、11th_styleさんの勉強不足。 言語レベルではなく、アルゴリズム的に複雑怪奇なことをしているなら、 その人が優秀という事に対して疑問。 勿論、複雑なアルゴリズムでないと実現できない場合は別です。 しかし、11th_styleさんは彼のレベルを高いと評価しているので、恐らく前者の方ではないかと思います。 ところでそんなに理解できないソースってどんなものですか、 インラインアセンブラ使いまくりのソースコードとか、、 オープンソースのソースコード、例えばzlibのコードとかみると 理解に苦しむ事は多々ありますが・・・・ でも実際それを使えばデータ圧縮できるわけですから関心します。 例えるならそんな感じでしょうか。 (zlib内でバグが発生しても対処は難しい・・・) あまり反抗的なようですと技術力以前に問題があるのでは?? ただ、その人抜きでプロジェクトがなりたたないのだとすると、 全体の技術力の底上げが必要でしょう。

11th_style
質問者

お礼

> ところでそんなに理解できないソースってどんなものですか、 例えば、呼ばれているだけで処理はない空っぽの関数がたくさんあります。将来の拡張性のためだそうです。 > ただ、その人抜きでプロジェクトがなりたたないのだとすると、 > 全体の技術力の底上げが必要でしょう。 これはないです。 反抗的ではあるのですが、反抗には相当の自信と根拠があるらしく、その言い分に聞く耳を持つ必要が本当にないのか、と思ってしまったわけです。

  • matyrcry
  • ベストアンサー率47% (101/213)
回答No.7

データフローとか基本的なコーディングの流儀について(暗黙のことも多い ですが)あらかじめ指示が与えられるか、もしくは自分で資料を作成して提 出することのどちらかをを仕様に盛り込んでいるのが普通だと思います。 指示すると技術を生かせないのなら、本人に作らせるしかないですね。 フローチャートくらいからドキュメントを揃えていくのがいいんじゃな いでしょうか。 ソフトは使い回し、焼き直しの固まりなんで、全くゼロの状態からドキ ュメントを整備するとなると膨大な時間がかかりますが、どうせいつ かは必要な作業なんで、良い機会だと思います。 他人が検証できないなら、自分で検証して保障するしかないんだし、 本人のスキルアップにもなりますよ。

11th_style
質問者

お礼

ドキュメントに関しては、時間の都合と言われています。今回は書かせてみることにします。

  • GoF
  • ベストアンサー率37% (34/91)
回答No.6

彼が、責任を取らなければいけない指示する立場の人間に反抗するのであれば それを他人が理解できるような、詳細設計書の提出と 膨大なテスト仕様書を提出させるようにすればよいです。 コード内に、ちゃんとコメントを記述させるのも忘れずに。 さらに、彼以外で最も優秀な者たちへレビューを行うように 指示すればいいでしょう。 2つの選択肢が用意されます。 1) 膨大な努力をして、他人に自分の技術を教え込む 2) 妥協して、担当が理解できる範囲で「最大限」にこだわる 今のメンバのスキルには 2) で十分だと思います。 ちなみに彼のようなタイプはドキュメント作業を 大変嫌う傾向がありませんか? それであれば、かなり有効な手段だと思います。 彼は、まさに 「ソフトウェア開発のダイナミズム」という書籍の #13「部屋に閉じこもった男に注意しろ」に該当します。 群を抜いて優秀な書籍だと思うので、プロジェクトマネージャであれば ぜひ購入して読まれることをお勧めします。 古いですが、amazonでもまだ取り扱っているようです。

11th_style
質問者

お礼

今回は、ドキュメント、コメント、テスト仕様書を用意させてみることにしました。彼はドキュメントはしっかり書く方ですが、今回はスケジュールの短さを理由に書いていません。仕様を満たす最終範囲を作るだけであれば、そこまできついスケジュールではないつもりでいます。 後、拡張のためと大量につけてあった未実装の関数を全て消すよう言ってみます。これは、未実装関数を残すならそのテスト仕様書も予め書いておくように、と言うことと天秤にかければ、消してくれるのではないかと期待もしています。 書籍も参考にしてみます。ありがとうございます。

  • toshi7607
  • ベストアンサー率12% (60/482)
回答No.5

彼のレベルが高いと思うのは、あなたの勘違いです。 優秀なプログラマは他人が理解しやすいようにプログラムを作ります。 プログラムの世界でもsimple is bestなのです。

11th_style
質問者

お礼

ここまでスパっと言われると、なんだかすっきりしますね(笑)。私もsimple is bestだとは思います。

  • tintagel
  • ベストアンサー率77% (214/277)
回答No.4

>1. このままでは、彼のソースの品質を保証できない。~ >2. かといって、せっかくのレベルの高い~ この2つからリスクを考えれば悩む必要はないと思います。 1.は11th_styleさんは顧客または自社のプロジェクトに従事していると思いますが将来問題が発生したときの損害を考慮した場合に許容できますか? 2.は別の方法で要員のレベルアップは可能ではないですか? 技術は日進月歩です。 過去にはコンピュータの速度不足をコードで補う時代がありましたが現在は不要です。それから考えれば高度なコーディング技術も遠からず陳腐化するのは目に見えています。 今、本当に高度なコーディング技術は重要でしょうか? (ちなみに本当に高度であれば誰も思いつかないが説明されれば誰でも容易に理解できるものですよ。) 彼は技術者の側面から考えた場合、恐らく自分の考えを他の人に理解してもらうことが苦手または面倒になっていないでしょうか? (今の問題をクリアできるレベルまで達すれば頼もしい技術者となるのですが・・・) 今の現状でコードを作ってもらうのに問題があるならそれ以外の役目(ソースの品質向上やコードのレビュア)を担ってもらなどの方法も検討するのも良いかもしれません。 参考になるでしょうか?

11th_style
質問者

お礼

彼は自分の考えはよく説明してくれます。オープンソースのプログラムや設計に関する書籍を色々読んでおり、「~の~章に書いてあります」と根拠を言うのですが、私にはその引用先がわかりません。 私がレベルが低過ぎるか、もしくは、他人にわからせるところまで説明できるレベルには至ってないということかもしれません。

  • yangwenli
  • ベストアンサー率27% (20/73)
回答No.3

昔はこういう職人仕事も許されたんですけどね^^; いまは、保守性を重視する時代なのであまりマニアックなコードは書かない流れになってますね。 昔と違ってあまりコーディング力がなくてもそこそこ動くものが作れる時代になったので、いまはシンプルな作りの方がいいと思います。

11th_style
質問者

お礼

こういう意見を聞きたかったです。 職人仕事に対して、昔はどのように品質保証していたのでしょう? 職人自身が保証するんでしょうか?

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

個人でプログラム作ってるんじゃないんだから、他人がメンテ出来ないコードをそのまま出す時点で、わがままでしょう。 その人が一生メンテするプログラムなら、そのままでもいいですが絶対そんな事は無いので、新人や知らない人間が見てある程度見通しが付くようにソースにコメントなり、解説書作らせるなりしないと、その人が抜けた時点でプロジェクトのコアな部分がブラックボックスになります。

11th_style
質問者

お礼

ありがとうございます。 他の人員がレベルアップできれば、ブラックボックスにはならないのではと思っていたのですが・・・。

  • ayato
  • ベストアンサー率25% (29/112)
回答No.1

残念ながらそれは独りよがりだと思います。 誰が見てもわからない=メンテナンスできない メンテできないプログラムを作っても それは無駄になるだけです。 その人がいなくなったときどうするのでしょうか? プログラマにはたまにこういった人がいます。 レベルが高い・質が良いというのはいろんな面を含めていえることだと私は思います。

11th_style
質問者

お礼

ありがとうございます。 プロジェクトで必要としている"プログラマの質"は、レベルと人間性を含めたものなのだと言うことですね。

関連するQ&A

  • PGが学ぶべき技術とは?

    自分は新卒(Webサービス系)なのですが。、PGとしての方向性で悩んでいます。 現在は、フレームワークの使い方と会社独自のAPIの使い方、ツールの使い方を学んでいます。しかしこの知識が将来(プロジェクトが変わったり、会社が変わった場合)役に立つとは思えません。 ならば根本的なところをおさえようということで、HTTP,TCP/IPプロトコルがどのように動作しているか調べたり、オブジェクト指向を勉強したり、フレームワークのソースを見たりしてきました。 しかしここで得た知識を現場で使うことはあるのでしょうか?基本的にバグがでてもHTTP層レベルが問題になることはありませんし、会社のソースはとても汚く(1メソッド200行以上、継承も抽象化も基本的におこなわれていない)このソースを変更することも許されません(独自実装はほかの人がわかりくいから)。そもそも会社の仕事の中で、技術力がいる場面とはどこなんでしょうか? 自分は技術力のあるPGになることで仕事を面白くやりがいのあるものにしたいと思って、今まで勉強してきましたが、そもそも技術力とは何なのか、PGの仕事にやりがいはないのではないかと、最近疑問に思っています。 そこで他人の意見を伺いたく、質問させていただきました。曖昧な質問で恐縮ですが、お返事お待ちしております。

  • プレゼンのレビューが苦手です

    現在ソフトウェア会社で働いています。数年前までは技術検証などの部署だったのですが、時代の流れとともに、営業支援のような仕事が多くなりました。自社の製品の技術的な部分についてお客さんの情シスやプロジェクトマネージャの方々にプレゼンをしたりします。元々プレゼンが大の苦手で頭が真っ白になってしまっていたのですが、なんとか回数を何十回とこなすうちにちょっとづつ慣れてきました。 案件によっては内容を社内で各分野の人たちと事前レビューするのですが、今これが苦手で悩んでいます。特に製品や技術をしらない、年配の方の対処に悩んでいます。お客さんに説明する場合は技術の知識があるので問題ないのですが、その内容を技術を知らない人に社内レビューして、その人に完全に理解できるようにするのは無理だと思うのですが、そういう人達にかぎってなぜか結構口を出して一般的には技術者であれば当然知ってるような単語まで、こんなの普通わからないと言ってきたりします。思いもかけない質問があったりするので私もあたふたしてしまいますし、うまく回答できない場合もあります。それが長引くとその人のための製品説明や技術一般用語ワークショップのようになってしまい、そもそものレビュー会とは違うものになってしまうので避けたいのですが。。。私が一見童顔で雰囲気がソフトな感じというのもいろいろ言いやすい原因かとも思います。 こういう場合にどういうふうに対処するのがいいのでしょうか?その案件の営業さんがそういう状況をわかってくれて、しっかりとレビューを分けてくれたり、いやこれは技術の人向けですので、とか言って仕切ってくれる場合はいいのですが、そうじゃない時もあります。論理的にびしっと対処できるといいなぁと思うのですが、そういう機転もあまりきかないため悩んでいます。 同様の経験がある方や社会経験豊富なかたにアドバイスいただけるとありがたいです。よろしくおねがいします。

  • 技術系の転職

    30代後半の男性です。前の会社は半導体関係の設計会社でした。半導体関係なのですが、仕事はシステム系の品質保証。15年も同じような仕事をしてきたので、新しい技術を求めて2007年11月から今の会社に転職。しかし、今の会社の上長(課長)は仕事を振ってくれるのはいいのですが具体的な指示がなく、同僚や部下に聞きながらこなしてきました。それでも上長からは何かにつけて小言を言われ、「半導体の知識がないなら君がこの会社にいる存在価値はない」とも言われています。 そんな上長が嫌だと思った事と、今は実務担当者の纏めで技術的な仕事をしていないことから、先日、転職エージェントに相談しに行ったのですが、「その年で技術を追いかけるのは転職の理由にならない」「40代に近くなってるんだから実作業から離れることはサラリーマンとしてまともな事」と言われました。また、「技術を求めると今の年収が下がるよ」とも。 みなさんは、会社に何を求めて働いているのでしょうか?給料以外に仕事への生きがいはもってないのでしょうか? 教えてください。

  • 技術士一次試験のよい参考書を教えて

    今年の技術士一次試験(情報工学部門)を受験するのですが、各科目を バランスよく押さえた参考書を探しています。過去問題の代表的な問題を 中心にして、解説等のついているものがよいかと考えています。 専門が情報工学なのですが情報工学の技術士一次試験用の参考書があまり 書店では見つけられず、何かよい参考書があれば教えていただければと 考えています。 なお、当方、共通試験は免除されております。情報技術の知識レベルと しては、情報処理技術者試験の第二種情報処理技術者とプロジェクト マネージャを保有しています。 よろしくお願いします。

  • 技術スキル取得に関して

    現在、AndroidやJava、Linuxを使った技術関係の営業をしているのですが、 文系出身のため、技術知識を理解するのにかなり苦労しています。 技術スキルをエンジニア達を会話できるレベルまで上達させたいのが 僕の願いです。 経験豊富な技術者の方、なにか私に役に立つアドバイスを頂ければと思います。 例えば、勉強の方法や、専門用語の覚え方などなど ソフトウェアの正解って無限っていうのは、知っているのですが短期間を基礎をしっかり 身につけられるような方法はないでしょうか?? よろしくお願い致します。

  • 技術検定 熱処理

    おはようございます。 学校で熱処理技能検定を受けろという指示がありまして、まずは三級からということなのですが三級というとどのレベルの問題が出題されるのでしょうか。 手元にある熱処理技術入門の参考書は一級まで対応してるとのことなので効率よく勉強がしたいです。 違う書籍ですが熱処理のおはなしという本はある程度理解しました。

  • 「アナログ波形生成技術」について

    最近、アンプやスピーカ、DVDプレイヤーを買おうと思い、 いろいろなカタログを丁寧に見ています。 その過程で、ある「アナログ波形生成技術」という言葉の意味が 一見分かりそうで、分からず困っています。 この言葉が使われている製品としては、 (例) オンキヨー株式会社の「DHT-L1A」、「DHT-S1A」では・・・ 「スピーカ 独自のアナログ波形生成技術VLSC回路を搭載・・・」 (例) DENON DVDプレーヤー DVD-3910 では・・・ カタログの記載をみると・・・。 「DENON独自のアナログ波形再現技術AL24 Processing Plusをマルチチャンネル全チャンネルに搭載、 すべてのチャンネルで24bit相当の解像度を実現しています。 CDやDVD-AUDIOのマルチチャンネルで16bit、 20bit収録のソースでも24bitクオリティで再生が可能です。」 などと書いてあります。 ここで、少ない私の知識を総動員して想像すると、 確か、デジタルCDというのはアナログのレコードなどと異なり、 人間の耳には聞こえない部分をカットしている。 (超音波?) 「アナログ波形生成」の中で、 「生成」と書いてあるということは、 カットした部分を擬似的に元に戻しているということでしょうか。 仮に、私の予想が当たっている場合、 人間の耳に聞こえない、 アナログはを生成することで、 どのような効果が期待されるのでしょうか。 具体的に実感できるものなのでしょうか。

  • IT技術営業の関する質問

    現在、Android搭載のタブレット型の端末機を開発を 行っている会社でプロジェクトマネジメントを担当して いるが、開発経験は全くない状態です。 けど、通信関連の営業を3年ほど経験したので、ある程度 なじみがあるとは思います。 現時点の問題点は、開発側と取引先との折衝が必要ですが、 IT知識が乏しく困っています。 顧客と折衝を行うとき、問題ないレベルまで勉強を進めたいのですが、 わからないことが多すぎでどこから始めればいいのかわかりません。 技術者の方にご質問ですが、貴重なアドバイスを頂ければ幸いでございます。 ご協力お願いいたします。

  • 会社としての製品の品質保証の仕方

    自分の会社には品質保証課がありますが、他の会社での品質保証課というのがどういうものか判らないので教えてもらえませんか? プロセス(工程)で保証するのが基本ですが、製造工程中の検査指示のある要所要所で品質保証課が検査しています。 工作で部品を取り付けミスがあり、検査がそのミスを見つけられず、事故が起きてしまったのです。 どうするのが普通なのでしょうか? 品質保証課での検査を厳しくしてミスを必ず発見できるようするのか、それとも工作がミスが起きないよう技量を管理するのか。両方と思いますが、当社は後者に重点をおき、品質保証課での検査は減らすというのです。 その理由は工作のミスは100%検査では発見できないというからです。 どちらかというと技量管理より、こまかい教育管理が大事だと思うし、一つ一つが会社方針が理解できないのです。 そこでいろいろな製品検査と品質保証があると思うのですが、お教え頂けないでしょうか?よろしくお願い致します。

  • 45歳以上の技術系派遣社員の求人

    技術系(電気電子)の特定派遣の会社にに務めております36歳男です。 質問の内容は技術系(電気電子)の派遣で45歳以上の仕事の案件は少ないでしょうか。 今後10年で45歳以上の技術系(電気電子)の案件は増えていきますでしょうか。 自社や別の特定派遣の会社のキャリアコーディネーターに聞いたところ 『派遣先のプロジェクトマネージャー(主任)クラスか仕事の指示を出す社員の年齢以上の派遣は指示が出しにくいので採らない傾向があり採って貰っても風当たりも厳しくなることも有ります』 『能力が有れば年齢に関係なく採用してもらい其なりに尊敬されますよ』 と皆さん同じようにマニュアルがあるかのごとく言われました。 で能力とはどのくらい高ければ良いのか聞いたら(職務経歴やスキルに関しては相談済) 仕事を指示する方よりも高いレベルですと無責任な事を言われました。 私は指示を出す中堅(40歳位)の社員よりも技術スキルの高い派遣社員は居ないと思っています。 だってその会社で15年やって来て今さっき来た派遣社員の方が技術スキルが高かったらその中堅(40歳位)社員首ですよね。 地球には重力があるように当然ですよね。 因みに例外がありまして コネ(その部署を首になっても何故か他の部署と契約を結んでる)や何故か派遣で20年以上いるとか不思議な人たち又は関連会社の請け負いかその会社で請け負い年数が長い条件で50代の人はいました。私この目で見てます。 純粋な技術系の派遣では派遣先の中堅(40歳)社員よりも仕事ができる人はいないと思います。 尚この質問は電気電子だけに限定してくださいソフトやネットワーク系は スキル系体が違うので別に考えてます。

専門家に質問してみよう