はじめに
対象読者は以下です。
- 開発チームが日常何をやってるかわからんという方。
- 開発チームが日常何をやってるかわからんという方が周りにいる開発チームの方。
以下に答えるのが目標です。
- 誤解1: 「こんなの一瞬で直せるでしょー」
- 誤解2: 「優先順位付け独特すぎて困るー」
- 誤解3: 「開発チームって複数のタスク同時進行して切り替えて作業しててスゴイです!」
「なぜ開発チームは私の起票した要望をなかなか実装してくれないのか」と疑問を他部署から受けている。案件精査バトル(何)なる野蛮な闘いが開発チーム内では日々起こりそれが顧客要望を裁いているという噂。いやそれそんな単純じゃあないんすわ…とおもったので、物語式にこの理解され難い葛藤と異常な日常業務をまとめた。一般的なものもあるかもしれないし、私の周りに独特すぎることもあるかもしれない。でももし再利用いただけたら嬉しい。
開発チームが毎月繰り広げているというバトルそのフィールドには一体何があるのか?謎を解明するため、調査隊はアマゾンの奥地へと向かった――。
物語
ここはアマゾンの奥地。ではなくてただの開発チームのフロアだよ。カタカタカタ。カタカタカタ。ッターン!最近はフルリモートで助かってるけどね。
これはね、Redmine 1と言いますよ。不具合、機能強化案件をこのチケットという形で我々は管理して見積もりしています。見て下さいこの数。あ、ちょっと失礼、インシデントです。2 フムフム...なるほど、「何もしていないのに弊プロダクトが起動しなくなりました」。やれやれ。こちらのFAQを皆さんご存じないのかな... 3
Slackにある、開発チームへのヘルプチャンネルに投稿するとBotか?という速さでレスが付く。反面、いつも同じ人が返答してくるなとおもうことがあるでしょう。そうです。我々保守開発はインシデントを始め全メジャーバージョン不具合修正から機能強化問合せ対応日々の小さなプロジェクト進捗確認まで、全てを担う。チーム人員はたった5人。少数精鋭?そう言えば聞こえは良いかもしれないがどうなのか。
たとえばこんな要望が来ます。「このワーニングメッセージ、句読点(、。)がカンマ・ピリオド(,. )になっていてなんというか、イケてないというかダサイです。サクっと直してくれませんか」4
なるほど、イケてないのかそうではないのかというのはイケているという事実の定義から議論の余地が多分にありますのでそこからまず精査が必要ですが今回はスタイルガイドに則るという意味ではそれなりの優先度で対応してみましょう。リテラル を変えればすぐに直りそうには見えますね。しかし意外とそうはいかない事情もあります。お気づきだろうか。
その要望、直すのは一瞬なんだけど、調べるのに結構、時間がかかる――
たとえばあなたが指摘くださったその「削除します, よろしいですか.」
というワーニングメッセージ。
- それを確認するためにまずデータベースを覗く。
- 当然その文言がすぐ見つかるだろうと思いきや意外とそんなことはない。
- あれ、関係するテーブルどれとどれだっけ。(ここだけの話我々は1000を超えるテーブルを扱っているのだ!)
- おかしいぞ?ソースをgrepします。
- むむむ出てこない。ソースの言語の種類も多すぎる。
- なぜだ。
- おっと、このサブシステムではなぜかメッセージはかなり動的に構築されているようだ...誰だよこれ考えた奴(これ大概は、退職した先輩の最高傑作である)5。
1時間経過。続き
- ううう、とりあえず書き換えて試すぞ。再起動。数分軽くかかるからこの間にお茶を一服します...。
- フムフムこれはこれでよさそうだがさて、別のバージョンのソースはどうなっているかな?
- アレ?同じ階層に同じClassはなくなっている。関係ないけどJavaのVersionとか使ってるライブラリも違うし開発環境はいくつあるんだ。6 ちなみにこの環境は今月のWindowsUpdateを早く適用しなければならない。
- あ、このバージョンからはリテラルはデータベースに移植されたようだ。
- 出荷用データベースや評価環境を見る。その環境を起動する合間に昼飯。あーそういえばこのツールの次の期間の稟議そろそろ出しておかないと... (多分コピペで) 7
途中で別の週次報告対応のための会議。ああまた資料作らなきゃだけどこだわる暇ないからまたGoogle Sheetsにまとめるでヨシ!8 2時間経過。
アレ?直ってる。おかしいなこっちの環境では再現してるけど。あ分かった、どうやら設定オプションが違うらしい...とりあえずUPDATEのSQLを用意するがこれこのオプションがあるということはテストケース軽く5倍だな。くっそ、また本番環境が息絶えて顧客への説明のために緊急ですって呼ばれたけどお前の緊急は私の緊急ではない、えっと今日中?知らんなログの添付もないし、っていうかその前に見るべきは類似処理でやれやれ、とりあえずリテラル管理のテーブルでカンマを検索すると、**マジカヨ100件とか出てきた。**全部調べる...? あ、またインシデント来た。今日も勉強時間なんてとれてねえええ9
...ますか..
...聞こえますか...聞こえますか...
「このワーニングメッセージ、句読点(、。)がカンマ・ピリオド(,. )になっていてなんというか、イケてないというかダサイです。サクっと直してくれませんか」
...
...
( ゚д゚)ハッ!
...要望、冷静によく聞くと 直さなくても業務全体の進行を妨害するほどの支障はないっていう話に聞こえました(何ということだろう、この時点で彼はもうほぼ思考停止しているのだ)。この案件、異議あり!!!
完
色々非効率すぎるバッドプラクティスが散見されますね...。自業自得と言われたら仕方ない。しかしこの異常な日常の一端をモリモリ入れて説明してみようと書きました。物語はフィクションです。怖。
-誤解1:
「こんなの一瞬で直せるでしょー」
直すのは一瞬なのですが調べるのに1週間強とかかかることもあるのです。我々の勉強不足でもありますがそれに起因して勉強の時間がとれないというジレンマ。まさにアマゾンの奥地。
誤解2:
「優先順位付け独特すぎて困るー」
緊急性の判断材料不足にも起因したりします。正確な情報提供にご協力いただけたら超助かります。イケてるとかイケてないとかはどうイケてないのか書いて下さい。「この配色は視認性が悪い」とかならだけど...いえ何でもありません。
誤解3:
「開発チームって複数のタスク同時進行して切り替えて作業しててスゴイです!」
スゴくないです!そこを褒められてもツラミというか自分で掘った穴に落ちているというか対顧客フロント各位には頭は上がらないのです。しかし少しでも開発チームの日常が伝われば嬉しい。
「言い訳する暇があったら不具合をなおしたい」とおもう開発の誠実さと
結局それを言い訳に言い訳レベルのことすら説明できていない開発の外側から見た現実への誠実さにより
結果として開発の誠実は誠実じゃないことも多いかもしれないですね。反省。
少なくともなにがしか、再利用性のある、説明資料になっていればさいわいです。
See also: 自他に「対抗する」テクニカルサポートの目次 - Qiita
追記
この話を対顧客フロント各位とする中で、こういうことをもっと知りたいと頂いた内容があるので追記しておきます。
- サブシステムのアイコンをもっとシュッとしたやつにしてほしい
- Answer: シュッとしたやつ!わかる!けどわからない!笑 そのわからなさを言語化して定量的に良いぞと言えるようにしないと修正できないんすよね!
- ログを見れば開発ならなんでも分かるんでしょ?
- Answer: わかんねえよ!!(すみません)でもその分からなさを説明できてないといけないな!分かったよここからが対話だ。頑張ります
- 開発から対顧客フロントへの依頼(ログの取り方とか、ここは理解してほしいポイント)をまとめてほしい
- Answer: 合点です!
以上