はじめに
@qnoyxuさんのこの記事が非エンジニアの私から見てもとても参考になったので、非エンジニアである私がこれまでエンジニアと一緒に仕事をしてきた中で、色々な失敗も経て学んできた大切だと思うことをまとめてみました。
これまでやってきたお仕事
現在私はQiita株式会社の代表としての会社経営が主なお仕事です。
これまでエンジニアと一緒にやってきた主なお仕事は下記の通りです。
-
ツールアプリの新規事業責任者(3年ほど)
- 全体3名の少人数チームでスタート
- 私、エンジニア1名、デザイナー1名
- その後ビジネスサイド20名、エンジニア10名、デザイナー5名ほどの体制へ
-
ゲームアプリのマーケティングマネージャー(5年ほど)
- 組織全体としてはビジネスサイド20名、エンジニア5名、デザイナー5名ほど
- アプリのトラッキングツールの設定やWebサイトの制作、ユーザーデータ管理システムやKPI管理ツールの開発の領域をエンジニアと共に推進
非エンジニアがエンジニアと仕事をする際に大切なこと
目次
エンジニアの仕事を理解する
以前私は全くエンジニアに関する理解が無い中でUIの変更や仕様変更の依頼を頻繁にやっていました。そのとき私の視点からすると「ボタンの位置変更」や「ページ遷移の変更」などは、まるでパワーポイントのデザインを変えるくらいの感覚だったのです。(今思い返してもひどい話です。許してください。)
もちろん、そんなやりとりでうまくいくはずもなく当時のエンジニアとは険悪になりました。
どうにか改善をしようと下記のことをやってみました。
- すごく簡単なプログラミングの仕事を実際にやってみる
当時はアプリを作っていたのでエンジニアに教えてもらいながらXcodeやEclipseで環境を準備してみたり、Gitコマンドを勉強してみたり。しばらくすると動作チェックのためのビルドやボタンの位置の微調整などのリリースは自分でやるようになっていました。
以下のサイトは当時良く見ていました。非エンジニアにも分かりやすい内容になっています。
そんなことを続けていくことで何となくですが、エンジニアがやっている仕事の想像が出来るようになりました。表面的に見えているもの以上に色々な作業を行っているという理解を得られたことで、コミュニケーションの仕方が改善していきました。
曖昧な依頼は極力避ける
あるときのやりとりです。
私「このボタンをタップすると登録が出来るように作って欲しいです」
エンジニア「わかりました」
~
エンジニア「出来ました」
確認すると、たしかにボタンをタップすると登録が完了するように動いていました。
ただ、登録の処理が完了した際の「登録が完了しました!」という表示はありません。
私のイメージしていたものは完了後に完了したことがユーザーに分かるような動きでした。
確かに私がお願いした仕様は「ボタンをタップすると登録が完了する」ですのでエンジニアは悪くないです。
それからは、エンジニアに依頼するときはなるべく全ての動きを細かく伝えることを意識しています。
もちろん詳細な仕様書があるときは問題ないですが、状況によっては口頭ベースで物事が進むこともあるためその際には強く意識をしておくことが大切です。
品質に関する費用対効果を考える
これもプロダクト開発に対する考えがとても浅はかだったときの話です。
あるプロダクトの開発を外部の会社に発注をするために複数社から相見積もりをとりました。
そしたら出てきた費用見積もりの金額が、安いところと高いところで5倍ほどの差がありました。
そこで浅はかな当時の私はこう考えました。
- 仕様書通りのものが出来上がるのだから、安いところを選ぶのがベスト
(ひどい話です。許してください。)
そのことを社内のエンジニアに話すと猛反対を受け、結果的にいくつかの会社とコミュニケーションをとった結果、2番目に高い会社に依頼することになりました。
その結果、出来上がったアプリの品質は素晴らしく、リリース後の不具合対応や保守運用もスムーズでした。
そしてなんとマテリアルデザインに準拠した素晴らしいUI/UXということでGoogle Playからピックアップもされるというビジネス的な恩恵も受けました。
後に別案件でとても低単価の発注をしたこともありましたが、納品時の品質(仕様書通りの動きはするけど色々まずい状態)や保守運用や更新時や仕様追加時のトラブルなどで結果的に社内の人件費と考えると高くついた経験があります。
出来るか出来ないかを深く確認する
ある時に新しい仕様についてエンジニアと相談していたときの話です。
私「検索結果の表示情報を一覧で1ページにまとめて表示をしたいんですが」
エンジニア「うーん、ちょっとそれは○○の仕様的に無理ですね」
私「なるほど、では別のやり方を検討しますね」
その後、再度エンジニアと相談をしていく中で、実際には出来ることが分かりました。
結果的には一覧表示をする情報は全てのデータではなく、主要な一部のデータを抜粋して表示することになったのです。
ではなぜ最初の会話の中で一旦無理という着地になったのか。
冒頭の会話の中でそれぞれの頭の中にずれがありました。
私「検索結果の表示情報を一覧で1ページにまとめて表示をしたいんですが」
頭の中(とにかく視覚的に一覧で情報を表示したい。細かい情報はそこから詳細へ飛ぶでも問題ないかも)
エンジニア「うーん、ちょっとそれは○○の仕様的に無理ですね」
頭の中(全ての情報を一覧で表示するには画像の処理や表示的にどうしても現状の仕様では実現できない)
このようなずれを無くすためにも
- 実現したい大目的は何なのか
- 出来ない場合は出来る他の方法は無いかを探る
ことがとても大切です。
最後に
これを読んで頂いたエンジニア、非エンジニアが良い関係性で良い開発が出来る手助けに少しでもなれれば幸いです。