年度替わりにもなりまして新しい環境になる方もいらっしゃるかと思います。
すると、新しい環境の不備な点も目につき、「僕がこの職場を導く!」という夜神月チックな発想に行き着くかもしれません。
ここでは、新しい環境で、特に弁が立つわけでもない場合に、提案が通りやすい方法について考えてみます。
これは、銀の玉でもありませんし、詐欺師のような才覚を持っていらっしゃる方には不要なことかもしれませんが、参考程度にご覧ください。
進言ってのは難しい
仮に世の中に正しいという事が存在して、それを言えば通るっていう甘えをまず捨てましょう。
進言ってのは非常に難易度が高いものです。
むかしむかしの中国に韓非さんという思想家がおりました。
かの始皇帝もお気に入りの著書、韓非子には、説難という「進言するのって難しいYO」っていう篇がまるまる一つあります。
進言というのはむずかしい。
君主に説くには、まずこちらが十分な知識を身につけておかなければならない。また、自分の意見を口で言い表す弁舌がなければならない。また、いいたいことをはばからず、いってのける勇気がなければならない。どれもなかなか難しい。
しかし、本当にむずかしいのはそんなことではない。君主を説得することの難しさは、相手の心を読み取ったうえで、こちらの意見をそれに適応させること、この一点につきるのである。
・・・といっています。
ちなみに、これほど、進言って難しいってのを理解していた韓非さんは、始皇帝にその著書を高く評価されつつも、謀殺されるという皮肉な結果になっております。
こういう、後世の歴史に名が残るような偉人であっても進言は難しいという事実を認めるところから始めましょう。
とりあえず現状を受け入れる
引き継がれたコードや体制の不備に対して思わず「クソコード」とか「クソプロジェクト」とか言いたくなる気持ちはわかりますが、そこはまず現状を受け入れるところから始めましょう。
どんなマズイものであっても、ここまで築きあげるのに、それ相応の苦労はあったわけなので、そのあたりには敬意を払いましょう。
それに、できあがったものに文句をつけるのは、猿にもできます。
そんなモンキーオピニオンを、ドヤ顔して披露しても、周囲は納得しないでしょう。
たとえば、ExcelからTestLinkにテスト仕様書を替えることを進言したいとします。
この場合は、Excelで仕様書を書くメリットを徹底的に洗うべきです。
その上で、「ExcelからTestLinkに変更するとここは不便だが、ここは便利になりますが、どうでしょうか?」という持っていきかたにしましょう。
「Excelはクズ。さっさと変えるべき」とか全否定すると、相手は今までやってきたことが否定されるように感じる場合があります。
ちゃんと今までの良い点を挙げて、相手の逃げ道を残しておきましょう。
具体的な提案の戦略
提案を行うための、基本戦略は3つです。
・プロジェクトの貢献者になる
・タイミングを見計らう
・実行あるのみ
プロジェクトの貢献者になる
まず、最も基本的な事としてプロジェクトの貢献者となることです。
たとえば、あなたがどんなに、クールで効率的なバグ管理の方法を提案しようとも、あなたがやるべき作業をやっていなければ、その提案は絶対に通りません。
まず、与えられた作業をこなし、プロジェクトに貢献していることを周りに認めさせることです。
そして、提案する内容にエゴが含まれていないか考えましょう。
たとえば、このコードはPythonで書いた方が良いという提案をする場合、「自分がやりたいから」とか「自分が得意だから」とかの俺々なエゴはまずゴミ箱に捨てます。
「速度が改善されるから」とか、「メンバーの8割がPython使えるから」とかプロジェクトに寄与する進言をしましょう。
タイミングを見計らう
どんな貢献者であっても、進言するタイミングを間違ってはいけません。
たとえば、プロジェクトの初期でテスト仕様書をTestLinkで書こうという提案は良いかもしれません。
しかし、明日リリースなのに、テスト仕様書をTestLinkで書こうとか言い出してはいけません。
たしかにTestLinkはクールなツールでありますが、学習コスト、記述の手間を考えると明日リリースのプロジェクトに導入するのは不適切でしょう。
このように、提案するものの内容によって、適切な時期というものが存在します。
これを外してはどのような提案も受け入れられません。
ちなみに、もっとも意見を通しやすかったのは、権限のある人間に貸しを作った後です。
「徹夜明け」とか「休日出勤時」とか管理者が貴方に「苦労をさせた」と負い目を感じさせた後のタイミングで言うと大変効果的でしょう。
実行あるのみ
システム開発をしていると色々な提案がでてくるかと思います。
・テストを自動化する
・Jenkinsでビルドを自動化する
・静的解析を自動で行う
・Wikiにノウハウをまとめる
etc,etc...
こういうものは、理屈をこねて説得するより、実際効果を見せたほうが早いわけです。
・自分の担当分のテストはテストコードを書く
・自分のローカルの環境で自動ビルドの環境をつくる
・自分のローカルの環境で静的解析を行う
・自分のローカルの環境にWikiを書けるサーバーを立てる。
これらを実際に行い、ある程度、見せられる状況になって成果として見せるのです。
色々理屈をこねくり回すよりも非常に有効です。
もちろんこれは、「プロジェクトの貢献者になる」という前提を踏まえた上です。
致命的なバグを放置して、HTTPサーバーの構築に苦労するというのは適切な行為ではありません。
また、最近はソフトウェアのインストールにうるさいところもあるので、そのあたりは、きちんと根回ししておきましょう。
管理者権限ないけど、msiのツールを動かしたい場合
フリーソフトのダウンロードは認められても、与えられたパソコン自体に管理者権限がない場合もあります。
この場合、msiを展開してexeをとりだすことも可能です。
MSIファイルを解凍して内部のファイルを取り出す(msiexec編)
http://www.atmarkit.co.jp/fwin2k/win2ktips/856msiext/msiext.html
バッチファイルかなにかで、環境変数まわりを上手く設定後、起動してやれば、Javaだろうが、Pythonだろうが管理者権限なしで使えるようになります。
ただし、実行に管理者権限が必須のアプリケーションは動作しません。
あきらめが肝心
・・・とまあ、色々手を尽くしても通らない時は通りません。
先にのべたように、「歴史上の人間でも、うまくいかないのに、凡人が上手くやれるわけないよなw」とあきらめることも肝心です。
すくなくとも、同じ内容を同じ人間に何回言っても通らないなら、諦めましょう。
別の人間に言うか、別の方法に変えておいたほうが、保身が図れますし、無駄な労力を割かなくて済みます。
まとめ
提案を通しやすくする方法について考えてみました。
重要なのは、提案するってのは難しく、そして、とりあえず、プロジェクトとチームに貢献して信頼されなきゃ話にならないということです。
参考
下っ端でも何かを成し遂げる方法
http://web.archive.org/web/20170625093906/http://japanese.joelonsoftware.com/Articles/GettingThingsDoneWhenYour.html