「作ったものに責任を持つ」ということ

概要

私がITエンジニアとして仕事をする上で常に心掛けていることの一つになります。

この心掛け一つでエンジニアとしての「評価」「信用」の積み重ねられるスピードが結構変わってきます。

ある意味当たり前のことではあるのですが、簡単に具体例を示しながら啓発させてもらいたいと思います。

例:「作ったものに責任を持たない」とどうなるか

まず、この心掛けを持たない場合とはどういうものかというのを例として挙げたいと思います。

あなたが「依頼され太郎」にプログラムのコーディングを依頼し、しばらく後にコーディングが完了してコードレビューを依頼されたとします。

あなた

依頼され太郎さん、この前コードレビュー出してもらった内容なんですけど、たぶん動作自体は問題なさそうなんですが、あんまり見ない流れのロジックなんですよね。

このロジックを実装した意図を教えてもらってもいいでしょうか?

依頼され太郎

ああ、ロジックの内容ですか?

ググったら出てきたロジックをコピペして数字変えて動かしてみたらとりあえず動いたのでオッケーかなーという感じです。

いかがでしょうか?

このやりとりは私のITの現場で実際に幾度となく繰り返されてきた「最もわかりやすいエンジニアとしての評価を下げる瞬間」の一つです。

たった1往復の言葉のやり取りではありますが、「依頼され太郎」のエンジニアとしての評価をある程度低く固めてしまうやり取りと感じています。

何が良くない?

責任の所在

先ほどの例でも「プログラムされたものが正常に動き続ければ」問題になることは稀です。

しかし、現場では予期せぬ理由でバグが発生しまうことは良くあります。

もし「依頼され太郎君が作ったコードでバグが発生」したら誰の責任になるでしょうか?

コーディングした「依頼され太郎」?

レビューしてそのまま通した「あなた」?

依頼され太郎がコードを引っ張ってきた「ネットの名も知らぬ開発者」?

責任の所在を確認されるタイミング

ITの現場では重大なバグが発生したとき、「再発防止」を策定するために原因分析を関係者集めて行うことが一般的です。

大体下記の内容を関係者全員で振り返ります。

直接原因を調べる(バグがどのコードが原因で発生したかなどを特定する)

根本原因を調べる(バグが発生するに至ったチーム運営の問題などを特定する)

再発防止策を策定する

※これを「なぜなぜ分析」と業界では言われることが多いです。

※混入、流出工程など細かい議論内容があるのですがここでは割愛します。

バグが出るとめちゃくちゃめんどくさい

幸い、現場ではバグが出ても「依頼され太郎が適当なコード書いたからバグになった」みたいな個人のせいにされることは基本的にはあり得ません(平成の時代は良くあった)。

その代わり、1つのバグが発生すると後片付けを行うために1か月、2か月かかることはザラにあります。チーム全体で膨大な工数が発生するわけです。

さらに、ただでさえめんどくさいのに「実装者が実装内容をちゃんと理解していない」と、原因分析や再発防止策に余計な時間がかかってしまうのは想像に難しくないですね。

ですので、ちゃんと実装内容を理解して、その後のいろんな状況に対処出来るようにすることが実装者の責任だと私は考えています。

※もしあなたがITエンジニアではなく、知り合いにITエンジニアがいるようだった「なぜなぜ分析ってどういうもの?」と聞いてみてください。大体みんな渋い顔をすると思います。

責任もつ意識があるとさっきの悪い例はどんな感じに変わる?

ちょっとここは評価する人によって変わる内容ではあるのですが、私の場合の正解は下記のようになります。

実際に現場でも依頼され太郎のように返しています。

あなた

依頼され太郎さん、この前コードレビュー出してもらった内容なんですけど、たぶん動作自体は問題なさそうなんですが、あんまり見ない流れのロジックなんですよね。

このロジックを実装した意図を教えてもらってもいいでしょうか?

依頼され太郎

ああ、ロジックの内容ですか?

一般的ではないかもしれないのですが、Aの処理の書き方は冗長かもしれないと考えつつ、他の人も良く触る可能性のある部分ですので可読性重視で実装しています。

今の書き方ならBのメソッドの呼び出しで入れる引数の内容が分かりやすく、別の引数パターンの新規関数作成で引用しやすいかなぁと思います。

一旦動作確認までは完了していますので、コードの内容に懸念があればコメントしていただければと思います。

「なんか知らんけど動いたからOKにした」よりは大分印象良いと思います。仮に後で問題が発生してもこの受け答えをした依頼され太郎くんになら後片付けでの戦力としても頼ることが出来るような気がしますね。

本当に言いたいこと

とまあ、「責任もって仕事出来れば信用されるし評価もされるよ」というありふれた話ではあるんですけど、本当に言いたいことは実はそこではなくて、「ググって内容を理解せずに引用」と「AIに書かせた内容を理解せずに利用」は同じことだよねというのが私の考えです。

IT環境におけるAIとの付き合い方

昨今、AIが急激に表に出てきて大企業がしのぎを削っていますが、「ITエンジニアの仕事はAIにとられる」という論調も良く見聞きするようになりました。

私は現時点ではそこまで危機感を感じておらず、AIという技術は昔「Google検索」が流行りだしたころと同じようなものだと考えています。

いろいろと補完はしてくれますが現状、「AIが吐いたものの責任はAIの利用者が持つ」というのが原則ですので「プログラミングの知識がなくてもAI使えばプログラミングは出来る」というのは少なくともお金のやり取りが発生する(責任の重い)ITの現場では成立しないと思います。

※しばらく(限りなく永遠に近い)は無いとは思いますが、もし「AIが吐いたものはAI(AIの製造元)が全責任を持つ」という時代になったら成立します。もうプログラマーはほぼ終わり、ほぼ全滅です。

まあ、だからといって「今ITエンジニアとして仕事出来ている人がAIなんか触らなくていい」とは絶対にならなくて、AIが吐いたコードの内容が理解できればAIなんてとんでもない時短ツールなんです。

私も現場でバンバンAI使ってコード吐かせて、それを好き勝手いじって成果物にしていますので、この記事を読んでくださっている現役ITエンジニアさんもAIとの豊かな付き合いを実現していただければと思うところです。

※これからITエンジニアになろうとしている人はマジ大変だと思いますがマジ頑張ってください、力尽きない限り苦労はきっと報われます