2018年3月21日水曜日

プロジェクト開始前に決めておくこと

これまで、多くのプロジェクトに参加してきました。
しかし、毎回と言って良いほど、プロジェクトの最終段階で炎上している。

原因を分析すると、プロジェクトの開始時にクライアントと決めておかないといけないことを、やってないための場合が多い。

そのため、クライアントの要望が増大し、無理に要望を組み込む事で、品質が大きく低下する状況になる。また、プロジェクトが炎上し、そこに携わるエンジニアに多大な負担をかけることになる。

エンジニアは、ロボットではないし、資源でもない。使えなくなれば、変えれば良いということにはならないし、エンジニアを多く抱え込めばうまくいくわけでもない。

プロジェクト開始前に決めておくこと

少なくとも以下のことについては、プロジェクトを始める前に決めておく必要がある。これを怠ると、プロジェクトの最終段階で、炎上する可能性が高い。

開発理由の確認

まずは、クライアントがシステム開発を必要と考えた理由について、共有する必要がある。詳細を聞き、システム開発が本当に必要なのかを確認する。もしかすると、マクロを作ることで解決できるかもしれない。

ビジネスとしては、システム開発を行う方が利益を得れるので、プロジェクト化したい気持ちは分かる。しかし、使用されないシステムを開発するよりも、必要とされているものを作ることの方が、クライアントにとっては良いし、空いた時間で、別の開発をすることで、結果的に、利益を最大化できる可能性がある。

機能確認

開発理由を充分に共有できた上で、必要となる機能について決めて行くことになる。ここで、決めるのは、開発理由で上がった問題を解決するために必要となる最低限の機能である。

間違えてはいけないのは、外部設計でないことだ。UIは、設計段階で行えば良いし、細かい機能を言い出すと時間がいくらあっても足りなくなる。

ここで決めた機能については、納品する時に実装されていないといけない機能となる。

マイルストーン確認

次に必要となるのは、どの機能をいつまでに確認できる環境に上げるかということだ。開発方法によっても違ってくるかもしれないが、マイルストーンを決めておくことで、どんな仕様をいつまで用意してもらうのかを決めて行くことができるようになる。

また、クライアントからの要望を、どこまで取り入れるかの基準となる。

たまに、開発スケジュールを立てた上でマイルストーンを決めるプロジェクトがあるが、これは、エンジニアの負担をかけることになるし、クライアントからの要望を追加できない。

ウォーターフォールで開発するのであれば、各段階ごとに受けるクライアントのレビューでマイルストーンを決めることができる。

アジャイルで開発するのであれば、どの機能から作って行くか、どの段階でクライアントの確認が必要となるのかでマイルストーンを決めることができる。

ステークホルダ

ここで決めないといけないことは、お互いの窓口だ。クライアントにとって、開発側の窓口は、1つであった方が連絡が取りやすい。開発する側も、クライアントの窓口は1つ良い。それに加え、利害関係にある相手には、状況を共有しておく必要がある。

炎上するプロジェクトの特徴として、開発が進むにつれて、ステークホルダが増えて行く。ステークホルダが増えると、情報の共有に時間が必要となるし、突然、仕様が変更され、後戻りが大きくなる可能性が増える。

複数の企業が参画するプロジェクトの場合は、それぞれの窓口を確認する。

Q&A管理

クライアントと開発者との質問を管理する方法を決める。エンジニアであれば、お馴染みのことであるが、クライアントにとっては、使い方を知らない場合が多い。どのように記載するのか、どのように対応するのか、そして、どのように管理するのかを共有する。

この管理方法を共有できないと、複数の方法で質問がきたりする。ファイル、メール、チャット、電話…。

Q&Aの管理ができないと、プロジェクト後半で、言った、言わないの問題となり、プロジェクトは炎上して行く。

要望管理

多くのプロジェクトでは、要望の管理をしていない。なので、クライアントは、Q&Aに要望を記載する。しかし、Q&Aと要望は別であり、それぞれ管理しないといけない。

これまで、Q&Aに記載された要望は、エンジニアが抜き出して別管理していたところが多いのではないだろうか。

しかし、それでは、エンジニアの時間が開発以外の作業に費やされてしまう。それに、クライアントが要望と感じていないため、不具合となってしまう場合が多い。

リスク管理

これも、多くのプロジェクトで管理されていないのではないだろうか。

リスク管理で必要となるのは、どのような要因がプロジェクトの失敗に繋がるかをクライアントと共有することである。それぞれの要因について閾値を作り、定量的に管理していく必要がある。

そして、リスクが発生した場合の対応方法と共有しないといけない。ここでやっていけないのが、残業や休出で対応するということ。対応方法が、エンジニアに負担をかけて対応するのは、プロジェクト内で行うことであり、クライアントと共有することではない。

そもそもの要因が、クライアントによるものである場合は、エンジニアへの負担を最小限にできるよう対応方法を共有しておかなければいけない。

進捗管理

これは、多くのプロジェクトでやってるよ、と言われるが、それはクライアントと共有できているのでしょうか。月1や週1の進捗会議などで状況報告して終わりではないだろうか。それに、進捗の使い方をクライアントが理解していない可能性もある。

クライアントとしては、開発がどれほど進んでいるか以外に、確認がいつ必要になるかを知りたいのではないだろうか。クライアントは、実作業があるのだから、確認のために予定を早めに立てる必要がある。早めに確認できるのであれば、早く確認したい場合もあるだろう。

プロジェクトとしては、予定と実績を記録しておくことで、分析や今後のプロジェクトの参考にすることができる。

不具合管理

これも、多くのプロジェクトでやってるよ、と言われるのではないだろうか。

しかし、不具合管理で必要なので、出来上がった機能やシステムの品質を上げることである。そのために、必要となる不具合の量など、定量的に閾値を決めて、クライアントの要望する品質を担保する必要がある。

上記の「Q&A管理」「要望管理」「リスク管理」「進捗管理」「不具合管理」については、できれば、リアルタイムでクライアントと共有できるようにしたい。表計算ソフトで共有している場合がよくあるが、これは、内容が入れ子になって、漏れる可能性がある。それに、バージョンによりレイアウトが変わったりするため、共有するためのコストがかかってくる。

環境

これは、プロジェクトごとに作成するタイミングが違うのかもしれない。しかし、どれだけの環境が必要になるのかを、クライアントと共有しておく必要がある。

最低、以下の環境は必要になるのではないだろうか。
・本番環境
・ステージング環境
・開発環境

特に、本番環境をどう運用していくのかを決めておかないといけない。それによっては、本番環境をどこが構築するのか、ステージング環境を開発完了後どうするのかを決めないといけなくなる。

セキュリティの問題もここで決めておいた方がいいのかもしれない。既知のセキュリティ問題と、今後のセキュリティ問題に対する対応についても決めておくと、意識のズレが少なくてすむのかもしれない。

納品物

最終的に納品物について決めておく必要がある。よくあるのが、プロジェクト完了後に設計書が欲しいなどが出てくる場合がある。しかし、納品ようにドキュメントを作成するとなると、コストがかかるということをクライアントと共有しておかなければならない。

ドキュメントやソースコードには、著作権が発生することも、共有しておかないと、後々問題になることが多い。


今回は、私が、プロジェクト開始前にクライアントと決めておかないといけないと考える内容を記載した。と言うよりも、炎上した場合に後悔した内容をまとめた。


2017年12月17日日曜日

フリーランス募集をしている企業は、派遣法の改正によるもなのか

フリーランスになる」と決意してから、半年が過ぎようとしています。

私は、エンジニアとしてフリーランスになろうとしているのですが、フリーランスになると言うことは、企業の看板(後光効果)を使わずに、自分の技術的のみで仕事を探さないといけないのです。

そうしたフリーランスと企業をつなぐエージェントの会社も、web上に沢山のあります。

そうしたフリーランス向けのエージェント企業のページを見ていると、企業に常駐して働くフリーランスの募集が多いようです。

派遣法の改正(平成27年9月30日施工)により、特定労働者派遣は廃止となりました。しかし、その時点で特定労働者派遣法をしている企業は、平成30年9月30日まで特定労働者派遣が可能となっています。

私が務める企業も、SES事業として、特定労働派遣を行なっています。来年の9月30日までに一般労働者派遣の認定をもらえるとは考えられません。一般労働者派遣法の認可を得るには、いろいろと条件があり、私の務める会社では難しいようなのです。

私の予定では、6月までにフリーランスになる事を目標としているので、今勤めている企業のことは気にする必要がないように思いますが、フリーランス向けの情報サイトを見ていると、派遣法で規制されない任意契約で、エンジニアを集めようとしている企業の多さを実感されられます。恐らく、特定派遣で減少するエンジニアの代役を探しているように思われてなりません。

私は、時間や場所に拘束でされないライフスタイルに憧れてフリーランスになろうと決意しました。なので、仕事を斡旋してくれるエージェエント企業は使用せずに、仕事を探そうと考えています。

その場合、ソフト開発会社を探して、営業をかけて行くしか方法がないように思われます。

エンジニアとしてフリーランスで活躍されている方は、どのようにして仕事を得ているのでしょうか。

よろしけてば、お話を聞かせてください。

2017年10月9日月曜日

ストレス発散

今日は、近くのプールへ行ってきました。

体育の日ということもあり、利用料が無料でした。

子どもからお年寄りまで、たくさんの人で賑わっていました。

イベントも行われており、インストラクターとの競争や、イルカの浮き輪を使った競争など、みんな楽しんでいました。

私は、いつものように、プールの中でウォーキングした後、500mほど泳いで、再度、ウォーキングをしてきました。

久しぶりに泳いだせいもあり、途中から腕がパンパンになってしまいました。

最後のウォーキングが終わる頃には、クタクタになってしまいました。

でも、気分はスッキリ!

運動は、ストレス発散に効果的と言われますが、これって本当ですね。

最近、仕事のことやフリーランスになることなど、考えることが多かったせいか、ストレスが溜まりまくっていたようです。

今週もがんばるぞっていう気持ちになりました。

2017年10月7日土曜日

決意から1ヶ月

先月、フリーランスになることを決意しました。

それで、この1ヶ月間何をやってきたかと言うと、フリーランスになるにはどうしたらいいか本を読みあさっていました。

現在、中小企業でシステムエンジニアとして働いているわけですが、実際、フリーランスになってやっていけるのか不安が尽きないのです。

仕事は探せるのか、生活していけるのか。。。

それと同時に、今やってる仕事がもっと稼げるのではないかと思うようになっています。

どう言うことかというと、単価に対する給与が低すぎるのです。

顧客に対しで請求する単価の約1/2を会社が取っている計算になるのです。

フリーランスの本を読んでみるのと、請求額の約1/3は保険や税金で支払う必要があるのですが、残りは、自分のために使えるようなのです。

現在、単価の約1/2が自分の給与と考えると、単価の約1/6が会社の利益となっていることになります。

社員として、会社とともに成長していこうと思っているのであれば、充分に納得できるのですが、この先、フリーランスになろうとしている私にとっては、この額は大きいのです。

ゆっくり勉強している時間もないので、1日でも早く自分の周りを固めて、フリーランスになろうと思う、今日この頃です。

2017年10月4日水曜日

PDCAとOODA

経営管理で用いられるサイクル型モデルというと、PDCAですよね。
でも、ここ数年の変化には、PDCAでは対応が難しいようです。
そこで出てきた新しいサイクル型モデルが、OODAです。

今回は、PDCAとOODAを比べてみたいと思います。

PDCA

PDCAについては、昔から使われているサイクルなので説明はいらないと思います。

- Plan(計画)

- Do(実行)

- Check(評価)

- Act(改善)

このサイクルを回すことで、目的を達成していくということですね。
私も、よく言われました。

どの時点でCheck(評価)をするかで、チャンスの数が決まってきます。

企業では、3ヶ月ごとにCheck(評価)を行い、Act(改善)して1年の目標を達成してますね。
(うまくいってない企業も多いようですが。。。)

OODA

OODAは、ウゥーダって言うそうです。
Wikipediaによると、アメリカ空軍のジョン・ボイド大佐によって提唱された意思決定理論だそうです。

- Observe(監視)

- Orient(情勢判断)

- Decide(意思決定)

- Act(行動)


見て判断し行動するってことですね。

確かにOODAは、その場の状況を見て、自分がどう行動するべきかを決めて行動するので、早い行動が行えそうです。

いろんなサイトを見ると、これからは、OODAループを回し行動する方がいいと言ってるサイトが多いように思います。

でもそうなのでしょうか?
目的はどうなったの?

私は、目的に向けては、PDCAを回す方が向いているのではないかと思っています。

ただ、PDCAでは、瞬時の判断ができなくなってしまうので、PDCAの”Do”をOODAで進めることで補えるのではないでしょうか。

つまり、POODACAってとこですかね。

目的達成に向けて、いろんな方法があると思いますが、実は、正解なんてないんですよね。

目的達成に向けて、がむしゃらに走り抜けるのみ!!