ソフトウェアは、動いているだけでは成功したとは言えません。
もう一つ確かめたいのは、それを作った人が明日いなくなっても、ほかの誰かが保守と改善を続けられるかです。
担当が替わる。別のプロジェクトに移る。会社を辞める。どれも、どの会社でも普通に起きることです。人がいつ動くかは、会社には決められません。会社に決められるのは、そのときに備えてチームが何を用意しておくかです。
ソフトウェア開発の会社では、この備えがとくに欠かせません。知識が一人に集まりやすい仕事だからです。
「あの人に聞けば分かる」が何年も続いている
何年も使い続けている社内のシステムを思い浮かべてください。問題なく動いていて、社員が毎日使い、業務はそのシステムに頼っています。ただ、中身をほぼ全部知っている人は一人しかいません。
なぜ今の作りになっているのか。不具合が出たらどこから見ればよいのか。新しい版をどういう手順でリリースするのか。機能を足すときに何に気をつけるのか。答えられるのは、その人だけです。
何か起きるたびに、周りはこう言います。「あの人に聞いてください。あの人なら分かります。」
ある日、その人が会社を辞めます。
ソフトウェアは残ります。ソースコードも残ります。そのソフトウェアについての知識は、かなりの部分がその人と一緒に出ていってしまうかもしれません。
昨日まで問題なく動いていたシステムが、保守の難しいシステムに変わるのは、このときです。
「動くソフトウェア」と「保守できるソフトウェア」は別のもの
「動くソフトウェア」は、今日やるべき処理を今日こなせるソフトウェアです。「保守できるソフトウェア」は、明日になってもチームが中身を理解し、直し、良くしていけるソフトウェアです。
たとえば、ふだんなら3日で終わる機能追加があるとします。今のシステムがどう動いているかを誰も分かっていなければ、同じ追加に2週間かかることがあります。最初の1週間が、すでにあるコードを読み解くだけで終わってしまうからです。
この費用は目に見えにくいのですが、開発チームにもお客様にも、現実の負担になることがあります。システム開発で、最初のリリースに加えて、その後を誰が引き受け続けるのかまで考えておく必要があるのは、このためです。
見積もりと実際の進み方がずれる話は、見積もりとスケジュール:開発者が進捗に責任を持つべき理由でも取り上げています。
Linnoedgeでの取り組み
Linnoedgeでも、メンバーが離れることはあります。私たちがそれを望んでいないときもです。
私たちはメンバーを大切に思っていますし、できる限り支えたいと考えています。それでも、本人の事情で離れることになる場合はあります。そのときに、お客様やチームに余計な負担をかけないようにするのは、私たちの責任です。
そのために、プロジェクトや会社を離れるメンバーには、引き継ぎの手順を用意しています。
「やっていたことを誰かに伝えておいてください」と頼んで終わりにはしません。
まず、チェックリストで抜けがないかを確かめます。進行中のタスク、プロジェクトの情報、重要な知識、ドキュメントなど、後任が仕事を続けるのに必要なものが対象です。
次に、引き継ぐ相手と一緒に、知識を共有する場を設けます。状況に応じてその場を録画し、後で疑問が出たらチームが見返せるようにしています。
目指していることは一つです。知識が人と一緒に出ていかず、チームに残るようにすることです。
これは、背景の知識を一人の専門家の頭の中だけに置かず、チームで使える形にしておく暗黙知の共有ともつながっています。
お客様にとっての意味
開発を任せる会社から受け取るものは、動くソフトウェアだけでは足りないと、私たちは考えています。
担当者が別のプロジェクトに移っても、会社を辞めても、お客様が一からやり直す心配をしなくて済むのが、本来の姿です。知識も、ドキュメントも、プロジェクトの経緯も、すでにチームと手順の中にあるべきだと考えています。
この備えがあると、新しいメンバーを迎えることも、変化に応じることも楽になり、余計な中断なくプロジェクトを進めやすくなります。
そして、お客様はソフトウェアを動かし続けるために、特定の一人に頼らなくて済みます。頼る相手は、手順に支えられたチームです。
発注する側から確かめるときは、先ほどの4つを、そのまま開発会社に聞いてみてください。
- なぜ今の作りになっているのかを、担当者以外も説明できますか。
- 不具合が出たときにどこから見るかを、担当者以外も知っていますか。
- 新しい版をリリースする手順を、担当者以外も知っていますか。
- 機能を足すときに気をつける点を、担当者以外も知っていますか。
開発会社がお客様に何を約束しているのかは、システム会社は何を売る会社なのかでも書いています。
Linnoedgeでは、ソフトウェアをうまく作ることに加えて、その裏にいる人、知識、手順をどう管理するかも品質のうちだと考えています。
人や状況が変わっても、お客様のソフトウェア開発が安定して、先が読めて、長く続けられるようにすることが、私たちの目標です。
ソフトウェア開発をご検討中でしたら、お気軽にご相談ください。
Linnoedgeに任せていただくプロジェクトは、進み続けるために作ったチームと手順が支えます。そう安心していただける会社でありたいと考えています。
よくある質問
システムの属人化とは、どういう状態ですか?
なぜ今の作りになっているのか、不具合が出たらどこから見るのか、どういう手順でリリースするのか、機能を足すときに何に気をつけるのか。この4つを特定の一人だけが知っている状態です。システムが問題なく動いているあいだは表に出ません。その人が異動や退職で離れ、保守が難しくなったときに初めて見えてきます。
開発の担当者が退職すると、システムの保守はどうなりますか?
ソフトウェアとソースコードは残ります。ただ、知識が引き継がれていないと、修正や機能追加にかかる時間が延びることがあります。すでにあるコードを読み解く時間が先に必要になるためです。Linnoedgeでは、プロジェクトや会社を離れるメンバーについて、チェックリストと知識共有の場を使った引き継ぎの手順を用意しています。
システムの引き継ぎでは、何を残せばよいですか?
Linnoedgeのチェックリストでは、進行中のタスク、プロジェクトの情報、重要な知識、ドキュメントを確認しています。あわせて、引き継ぐ相手と知識を共有する場を設け、状況に応じて録画して、後からチームが見返せるようにしています。
IT業界で15年の経験を持つ技術リーダー。「誰が正しいか」ではなく「何が正しいか」という考え方で、卓越した顧客第一のソリューションを提供します。
