自分よりも知識がある技術者の生成物に対して、品質を保証しなければならない場合の対処方法を教えて下さい。
立場上、私よりも知識のある者が書いたコードを検収しなければならないのですが、彼のレベルが突出しているため、プロジェクト内で彼のソースを理解できる人がほとんど居ません。
プロジェクト内のレベルに合わせて、実装・設計共にシンプルにするように指示をしても、「こうすべきなんです」の一点張りで全く指示に従いません。
言っていることが正しい可能性もあるのですが、少なくとも私の技術レベルでは到底理解できません。せっかくのプロジェクトがスキルアップできるチャンスを潰したくないと言う思いもあるのですが、何かよい対処法はないでしょうか?
まとめると、
1. このままでは、彼のソースの品質を保証できない。少なくとも、彼が居なくなればソースをメンテできない。
2. かといって、せっかくのレベルの高い(かもしれない)技術を無駄にもしたくない
です。
No.11ベストアンサー
- 回答日時:
#6です。
>特に、マニアックなコードを書くプログラマ側を擁護する意見が少ないので、ありましたらお願いします。
自分も以前、コードコンプリートやデザインパターンなどを
読み、ある意味で難解なコーディングを書いていました。
(半年後に、やっと意図を理解されるような事もありました)
確かに、コードは「自分」では美しく見え、柔軟な仕様変更にも対応するのは間違いないのですが
その分 前知識がないものには非常に難解になります。
例えば、パッケージ、カーネル相当や標準ライブラリになるような未来に続くシロモノなら、問題ありません。
しかし、通常の請負のアルゴリズムは一期一会的なものになるかと思います。
忘れた頃に過去のプロジェクトの仕様変更・不具合がやってきます。
初見で高度なアルゴリズムをメンテできる人はいません。
二重三重アサインを続けていきます。
いずれ一人の力がいかに小さいかを痛恨するときが必ずきます。
そいう意味でも、現状を放置することは彼にも望ましくありません。
彼は、自分の確固としたテリトリを確保したいフェーズなんだと思います。
おだてて、なだめて 上手にステップアップさせてあげるべきだと思います。
小うるさかったら、すいません。
> しかし、通常の請負のアルゴリズムは一期一会的な
> ものになるかと思います。
ご自身の体験談も踏まえてのご意見で、大変参考になりました。上手にステップアップするように導き、将来の力となるようにしたいと思います。
どうもありがとうございました。
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 この部分の参照が不正だったので変更
}
>特に、マニアックなコードを書くプログラマ側を擁護する意見が少ないので、ありましたらお願いします。
マニアックなコードを書く人にとってはあまり自覚がないと思います。
だから擁護派が少ないのかと。私も書いてるかもしれないです。
No.9
- 回答日時:
>例えば、呼ばれているだけで処理はない空っぽの関数がたくさんあります。
将来の拡張性のためだそうです。そういう関数でも、メモリが厳しいなどの条件だと呼び出した時点で、キャッシュに乗り切らない場合、I/Oが発生します。
そういうのは、追加しなくてはならない時に追加するもので、#ifdefなり使ってプリプロセッサで落として、必要ないときにはコンパイラに渡さないようにしなくちゃならんと思いますが・・・。
その辺は言語や環境によると思います。
彼の技術が本当に優れているかと言う観点ではなく、このような場合にどう対処すべきかと言う観点でお願いします。
特に、マニアックなコードを書くプログラマ側を擁護する意見が少ないので、ありましたらお願いします。
No.8
- 回答日時:
言語レベルで理解できないのであれば、11th_styleさんの勉強不足。
言語レベルではなく、アルゴリズム的に複雑怪奇なことをしているなら、
その人が優秀という事に対して疑問。
勿論、複雑なアルゴリズムでないと実現できない場合は別です。
しかし、11th_styleさんは彼のレベルを高いと評価しているので、恐らく前者の方ではないかと思います。
ところでそんなに理解できないソースってどんなものですか、
インラインアセンブラ使いまくりのソースコードとか、、
オープンソースのソースコード、例えばzlibのコードとかみると
理解に苦しむ事は多々ありますが・・・・
でも実際それを使えばデータ圧縮できるわけですから関心します。
例えるならそんな感じでしょうか。
(zlib内でバグが発生しても対処は難しい・・・)
あまり反抗的なようですと技術力以前に問題があるのでは??
ただ、その人抜きでプロジェクトがなりたたないのだとすると、
全体の技術力の底上げが必要でしょう。
> ところでそんなに理解できないソースってどんなものですか、
例えば、呼ばれているだけで処理はない空っぽの関数がたくさんあります。将来の拡張性のためだそうです。
> ただ、その人抜きでプロジェクトがなりたたないのだとすると、
> 全体の技術力の底上げが必要でしょう。
これはないです。
反抗的ではあるのですが、反抗には相当の自信と根拠があるらしく、その言い分に聞く耳を持つ必要が本当にないのか、と思ってしまったわけです。
No.7
- 回答日時:
データフローとか基本的なコーディングの流儀について(暗黙のことも多い
ですが)あらかじめ指示が与えられるか、もしくは自分で資料を作成して提
出することのどちらかをを仕様に盛り込んでいるのが普通だと思います。
指示すると技術を生かせないのなら、本人に作らせるしかないですね。
フローチャートくらいからドキュメントを揃えていくのがいいんじゃな
いでしょうか。
ソフトは使い回し、焼き直しの固まりなんで、全くゼロの状態からドキ
ュメントを整備するとなると膨大な時間がかかりますが、どうせいつ
かは必要な作業なんで、良い機会だと思います。
他人が検証できないなら、自分で検証して保障するしかないんだし、
本人のスキルアップにもなりますよ。
No.6
- 回答日時:
彼が、責任を取らなければいけない指示する立場の人間に反抗するのであれば
それを他人が理解できるような、詳細設計書の提出と
膨大なテスト仕様書を提出させるようにすればよいです。
コード内に、ちゃんとコメントを記述させるのも忘れずに。
さらに、彼以外で最も優秀な者たちへレビューを行うように
指示すればいいでしょう。
2つの選択肢が用意されます。
1) 膨大な努力をして、他人に自分の技術を教え込む
2) 妥協して、担当が理解できる範囲で「最大限」にこだわる
今のメンバのスキルには 2) で十分だと思います。
ちなみに彼のようなタイプはドキュメント作業を
大変嫌う傾向がありませんか?
それであれば、かなり有効な手段だと思います。
彼は、まさに
「ソフトウェア開発のダイナミズム」という書籍の
#13「部屋に閉じこもった男に注意しろ」に該当します。
群を抜いて優秀な書籍だと思うので、プロジェクトマネージャであれば
ぜひ購入して読まれることをお勧めします。
古いですが、amazonでもまだ取り扱っているようです。
今回は、ドキュメント、コメント、テスト仕様書を用意させてみることにしました。彼はドキュメントはしっかり書く方ですが、今回はスケジュールの短さを理由に書いていません。仕様を満たす最終範囲を作るだけであれば、そこまできついスケジュールではないつもりでいます。
後、拡張のためと大量につけてあった未実装の関数を全て消すよう言ってみます。これは、未実装関数を残すならそのテスト仕様書も予め書いておくように、と言うことと天秤にかければ、消してくれるのではないかと期待もしています。
書籍も参考にしてみます。ありがとうございます。
No.4
- 回答日時:
>1. このままでは、彼のソースの品質を保証できない。
~>2. かといって、せっかくのレベルの高い~
この2つからリスクを考えれば悩む必要はないと思います。
1.は11th_styleさんは顧客または自社のプロジェクトに従事していると思いますが将来問題が発生したときの損害を考慮した場合に許容できますか?
2.は別の方法で要員のレベルアップは可能ではないですか?
技術は日進月歩です。
過去にはコンピュータの速度不足をコードで補う時代がありましたが現在は不要です。それから考えれば高度なコーディング技術も遠からず陳腐化するのは目に見えています。
今、本当に高度なコーディング技術は重要でしょうか?
(ちなみに本当に高度であれば誰も思いつかないが説明されれば誰でも容易に理解できるものですよ。)
彼は技術者の側面から考えた場合、恐らく自分の考えを他の人に理解してもらうことが苦手または面倒になっていないでしょうか?
(今の問題をクリアできるレベルまで達すれば頼もしい技術者となるのですが・・・)
今の現状でコードを作ってもらうのに問題があるならそれ以外の役目(ソースの品質向上やコードのレビュア)を担ってもらなどの方法も検討するのも良いかもしれません。
参考になるでしょうか?
彼は自分の考えはよく説明してくれます。オープンソースのプログラムや設計に関する書籍を色々読んでおり、「~の~章に書いてあります」と根拠を言うのですが、私にはその引用先がわかりません。
私がレベルが低過ぎるか、もしくは、他人にわからせるところまで説明できるレベルには至ってないということかもしれません。
No.2
- 回答日時:
個人でプログラム作ってるんじゃないんだから、他人がメンテ出来ないコードをそのまま出す時点で、わがままでしょう。
その人が一生メンテするプログラムなら、そのままでもいいですが絶対そんな事は無いので、新人や知らない人間が見てある程度見通しが付くようにソースにコメントなり、解説書作らせるなりしないと、その人が抜けた時点でプロジェクトのコアな部分がブラックボックスになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教育・学術・研究 情報系の学部で卒業研究中の大学四回生です。 現在、卒業研究中なのですが不安に感じることがあるので質問 2 2022/09/09 00:19
- 政治 立民案で被害者救済を本当にできるのだろうか? 立民の限界を感じる。 特定財産損害誘導行為による被害の 3 2022/11/05 21:20
- 医師・看護師・助産師 看護専門学校の入学志望動機の添削をお願い致します(400~800字以内) 2 2022/07/17 14:39
- 専門学校 Fランク大学でも工学部情報工学科なら、間違いなくIT系の専門学校よりはレベルは高いですよね? 6 2023/05/02 14:03
- 専門学校 Fランク大学でも工学部情報工学科なら、間違いなくIT系の専門学校よりはレベルは高いですよね? 2 2023/02/18 12:55
- その他(社会・学校・職場) 某職場で、マルチな面で優秀過ぎてストイック過ぎて却って浮いてしまうような人について。寧ろ経営者向き? 1 2023/04/13 04:31
- 中途・キャリア さて、社会人になってから13年目。 今まで、機械設計、機械製品の品質管理、部門の経営企画をやってきま 4 2023/07/17 08:59
- その他(ビジネススキル・経営ノウハウ) 某職場で、マルチな面で優秀過ぎてストイック過ぎて、却って浮いてしまうような人について。経営者向き? 1 2023/04/12 03:03
- 教育・学術・研究 日本の技術研究力は機関によって多少のズレがありますが、4〜5位くらいにいます。研究者への待遇が劣悪な 1 2022/08/15 22:36
- 哲学 大学で哲学の講義を履修しているのですが、さっぱり内容が分かりません。真面目に講義は受けているつもりで 1 2022/05/28 18:16
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
JANコードとPOSコードは同じ?
-
VBA 現在のセル番地を記憶、復...
-
1日に1人がこなせるプログラム...
-
access2021 VBA メソッドまたは...
-
ASP.NETのSiteMapPathについて
-
【VB6】実行ファイルとした後、...
-
VSコードでバックスペースキー...
-
オートフィルタで抽出結果に 罫...
-
多数のExcelファイルからVBAの...
-
VBAでファイルオープン後にコー...
-
SQL
-
Outlook VBAについて
-
VBA For文でチェックボックスの...
-
スキャンコード取得は MapVirtu...
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
エクセルに見えない文字(JISX0...
-
Excel VBA素人です。VBAで図形...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
JANコードとPOSコードは同じ?
-
1日に1人がこなせるプログラム...
-
access2021 VBA メソッドまたは...
-
Excel VBA素人です。VBAで図形...
-
access2003 クエリSQL文に...
-
【VB6】実行ファイルとした後、...
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
Exel VBA 別ブックから該当デ...
-
ACCESSユニオンクエリでORDER B...
-
Excel VBAでOpenTextのFieldInf...
-
COBOLの文法
-
JavaScriptの定数名が取り消し...
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
sinカーブの表示のさせ方
-
特定行の背景色を変えたいのですが
-
UWSCでMOUSEORG関数が上手く処...
おすすめ情報