Posted on

なぜSEは仕様を複雑怪奇にしてしまうのか

システム開発を行うと「なんでそうなった』というような状況になったことはありませんか。すべてのITエンジニアというわけではありませんが、複雑怪奇なシステムをよく見かけます。今回はその疑問について深掘りしてみました。

システム化と手作業の最適なバランス

業務効率化を図るためのシステム導入について考慮すべき点は、どの業務をシステム化し、どの業務を人間が行うべきか、その線引きを決めることです。システムは反復的なタスク、例えば請求書の発行、データ入力、レポートの作成などに最適で、同じプロセスを繰り返す業務を効率的にこなすことが可能です。また、明確なルールに基づいて判断を下す業務や、大量のデータを高速に処理する業務も、システムが得意とする領域です。

それに対して、人間が手作業で処理すべき業務として、複雑な判断が必要な場合、人間の感情や対人スキルが必要な場合、特定の業界知識が必要な場合が考えられます。特定のビジネス戦略を立てるための意思決定や、クリエイティブなタスク、顧客とのコミュニケーション、紛争解決、特定の業界の深い知識や専門的なスキルが必要な業務等がそれにあたります。

しかし、システム化と人間の手作業の線引きは一概には決められず、事業の性質や目標、業務の内容、利用可能な技術などによって変わります。システム化は一部の業務を効率化し、人間の作業を軽減することができますが、全ての業務をシステム化すべきというわけではありません。全ての業務がシステム化に適しているわけではなく、また、すべてをシステム化するという選択肢が最も効率的であるとは限りません。

さらに、業務の規模やセキュリティとプライバシー、変更の頻度も考慮するべきです。小規模な業務であれば、システム化するよりも人間が行う方がコスト効率が良い場合もあります。また、セキュリティ上のリスクを管理するために人間が手作業で行うべき業務や、個人情報を取り扱うような業務も、プライバシーの保護のために人間が管理するべきです。また、頻繁に変更が生じる業務は、システム化よりも人間が適応する方が効果的で、システムの適応性の低さから、業務内容や規則が頻繁に変わる環境では、システム化のコストと労力が大きくなりがちです。

これらの要素を総合的に考慮し、システムと人間が共同で働く最適なバランスを見つけることが重要です。人間とシステムは共存するべきで、各々が最も得意とする分野で活躍することで、全体としての業務効率が最大化されます。これはシステム化の目的が、人間の作業を完全に置き換えることではなく、人間がより価値の高い業務に集中できるようにすることであるからです。

過剰なユーザー指向

ユーザーの直接的な要望だけを注視し、その背後にある本当の問題やニーズを見落とすことで、新たに開発するシステムや仕様がユーザーにとって便利でない場合、主な原因としてユーザーニーズの理解不足が考えられます。SEがユーザーの本当のニーズやワークフローを理解していない場合、システムがユーザーにとって便利にならない可能性があります。これは多くの場合、表面的な要望を採用してしまっており、十分な情報収集やコミュニケーションが行われていない結果です。

また、SEが技術的な視点からの便利さを重視する一方で、ユーザー視点が欠けていることも問題となります。ユーザーは必ずしも技術的な視点からの便利さを求めているわけではなく、何を価値あると感じるか、どの機能を重視するかといった視点が重要です。

さらに、システム開発は繰り返しのプロセスであり、ユーザーからのフィードバックを得て、それに基づいてシステムを改善していくことが重要です。しかし、このフィードバックが十分に得られていない、またはフィードバックを反映する機会が無い場合、システムはユーザーの期待を満たさない可能性があります。

これらの問題を解決するためには、SEとユーザーとのコミュニケーションを強化し、ユーザー視点での考察を重視することが重要です。具体的には、ユーザーインタビューやユーザビリティテスト、プロトタイプの試用などを通じてユーザーの反応を得る方法があります。また、アジャイル開発のような開発手法を採用し、頻繁にフィードバックを得てシステムを改善することも有効です。

SEが取るべきユーザーエンゲージメント

SEがユーザーの要望をそのままシステムの仕様に落とし込むと、予期せぬ問題が発生することがあります。なぜなら、ユーザーは自分の仕事に最も詳しいものの、多くの場合、システム全体の視点や技術的な制約を理解していないからです。このような問題を軽減するためには、いくつかの観点を考慮することが必要です。

まず、問題の本質を理解することが大切です。ユーザーの要望はしばしば特定の解決策の形で表現されますが、それが最適な解決策であるとは限りません。そのため、SEは要望の背後にある真の問題やニーズを理解し、それに対する最適な解決策を提案するべきです。

また、コミュニケーションと教育も重要な役割を果たします。SEはユーザーにシステムの全体像や制約を説明し、理解を深めるための教育を行うべきです。これにより、ユーザーは自分の要望がシステム全体にどのように影響を及ぼすか、また、どの程度のコストが必要であるかを理解できるようになります。

さらに、ユーザー参加型の開発手法の採用も有効です。アジャイル開発のような手法を取り入れると、ユーザーが開発プロセスに積極的に関与し、フィードバックを提供する機会が増えます。これにより、システムがユーザーのニーズを適切に満たすようになります。

最後に、プロトタイピングも重要なステップとなります。実際のシステムを開発する前に、プロトタイプを作成してユーザーのフィードバックを得ることで、問題点や誤解を早期に発見し、修正することが可能です。

これらのアプローチを通じて、SEとユーザーは協力してシステムを改善し、より良い結果を達成することが可能になるでしょう。

SEがユーザーニーズを解明する為の戦略

ユーザーの真の問題やニーズを理解する能力は、SEにとって非常に重要なスキルの一つと言えますが、必ずしもすべてのSEがすぐにこの能力を身につけることができるわけではありません。したがって、理解力を高めるための活動やスキルを身につけることが重要となります。

まず第一に、コミュニケーションスキルを向上させることが求められます。これは、ユーザーから情報を収集し、その背後にある問題やニーズを理解するために必要なスキルです。良い聞き手になること、適切な質問をすること、ユーザーの視点から物事を考えることなどを学んでいく必要があります。

次に、ユーザーの業務環境を直接観察することで、ユーザーの問題やニーズをより深く理解します。ユーザーの日常的な業務をシャドウイング(影で追う)することや、現場の状況を直接確認することは有用と言えます。

さらに、ユーザーの視点を理解し、その問題や痛みを共感する能力を持つことは、ユーザー中心のシステム設計にとって重要です。共感力を持つことで、真の問題やニーズを見つけ出し、それに対応する解決策を見つけることができます。

そして、新しい業界やビジネスの知識を学び、新しい技術やツールを探求する意欲も大切な要素となります。業務知識を深めることで、ユーザーのニーズをより深く理解することが可能になるのです。

これらのスキルや知識を身につけることで、SEは真の問題やニーズを理解し、それに基づいてシステムを設計・開発する能力を高めることができます。そして、これらは一度にすべて身につけるものではなく、経験を積むことで徐々に習得できるスキルと言えるでしょう。

顧客が本当に必要だったもの

それはSEが理解し、満たすべき本質的な問題やニーズです。そのために、SEは豊かなコミュニケーションスキルを持つことが求められます。聞き上手になり、適切な質問を投げかけ、顧客の視点から物事を見る力が必要です。また、顧客の業務環境を直接観察し、その日常的な業務を追体験することで、より深く理解を深めることができます。この理解力を強化するためには、顧客の視点を理解し、その問題や痛みを共感する能力も必要不可欠です。最後に、新しい業界やビジネスの知識を学ぶ意欲があり、新しい技術やツールへの探求心を持つことで、SEとしての価値を高めることが可能です。これらのスキルや知識は一度にすべて身につけるものではなく、経験を積むことで徐々に習得できるものです。これらを通じて、SEは「顧客が本当に必要だったもの」を見つけ出し、それに対応したシステムを設計・開発する能力を高めることができます。

まとめ

要望をそのまま受け入れるとほとんどの場合、プロジェクトが失敗します。必要なのは「なぜ」という分析かもしれませんね。お伺い体質ではないシステム会社を探しているなら、ぜひアタラキシアDXにご相談してみてください。より効率的なシステム開発のあり方をご提案します。