こう 聞かれます
- 「技術的負債と
どう 向き合いますか」 - 「古くて
触りにくいコードを 直したい、と上の 人に 伝える とき、 どう 説明しますか」 - 「負債を
返す 時間が もらえない ときは、 どうしますか」
面接官が 見ている点
- 負債を、
自分の 好みではなく、 事業の 費用として 説明できるか - 返し方を、
機能を 作る 仕事と 両立する 形で 持っているか - 全部を
返すのではなく、 どれを 返すか選べるか
短い答え
- 技術的負債は、
早く 出すために 後回しに した 作りの 粗さで、 あとから 利息のように 手間を 生みます。 放っておくと 何が 困るか (作るのが 遅くなる、 障害が 増える ) を、 言葉と 数字に して 共有します。 - 返し方は、
機能を 作る ときに その 周りを 少しずつ直すか、 決まった 枠 (週の 一部や、 数回の 区切りに 1 回など ) を 取って 返すかです。 - よく
触る 所や 障害の 元に なっている 所から 返し、 ほとんど 触らない 所は 残す、と 選びます。
少し 詳しい答え
費用を 言葉と 数字にする
「コードが
- 作るのが遅くなる
「この 画面に 項目を 1 つ足すのに、 似た コードを 何か 所も 直す必要がある」 - 障害が増える
「同じ 所から 何度も 不具合が 出ていて、 そのたびに 直す時間を 取られている」 - 人が
入りにくい 「新しく 入った 人が、 この 部分を 触れるまでに 時間がかかる」
数字は、
返し方
- 機能を
作る 仕事の中で返す触る 所の 周りだけを、 少しきれいに してから 機能を 足します。 別の 時間を 取らずに 済み、 よく 触る 所から 自然に直ります - 枠を
取って返す週の 一部や、 何回かの 区切りに 1 回を、 負債を 返す 時間に 決めます。 大きな 直しは、 この 枠で 計画して進めます - 直す前に
自動テストを置く 動きが 変わっていない ことを 確かめられる よう、 先に 試験を 書きます。 変えた つもりの 無い 所が 壊れる (回帰) のを防ぎます
全部を 返さない (トレードオフ)
負債は
返すのにも
話すときは、
よく ある間違い
- 「汚いから直したい」とだけ言う
好みに 聞こえ、 時間を もらえません。 遅さや 障害の 数で 説明します - 一度に
全部を 作り直そうとする 終わるまで 機能が 止まり、 途中で 止めると 何も 残りません。 小さく 分けて 置き換えます - 試験の
無いまま直す直したつもりで 別の 所を 壊します。 先に 試験を置きます
深掘りの問い
- 「どの
負債から 返すかは、 どう 決めますか」 よく 変わる 所と、 不具合が 多く 出ている 所を、 変更の 履歴と 障害の 記録から 探して 決める、と答えます - 「負債が
新しく 増えるのを、 どう 防ぎますか」 レビューで 後回しに した所を 記録に 残す、 自動の 検査で 決まりを 守らせる、と答えます - 「作り直しと
少し ずつの 直し、 どちらを 選びますか」 原則は 少しずつで、 土台の 技術が もう 保守されない、などの ときだけ 作り直しを 考え、 その 場合も 新旧を 並べて 少しずつ移す、と答えます