カテゴリー別アーカイブ: 1技術者からマネージメントへ

最初の話

例:必死のバグつぶし、バグは直っていくが・・・2/2

あるPJでバグは日々たくさん出るが直る数も多く、頑張ればバグはなくなるように見えました。
ここでほんの少しSINを遅らせるだけで収束するように見えます。
「あと二週間徹夜すれば!!」本当にそうか?

このときの収束曲線

バグの不収束曲線

開発を経験しているのであれば、バグが日々出ていることに着目して、「この時期にこんなにバグって出るもんだっけ?」と疑います。さらにバグの中身を見ます。単純な表示上の問題や計算の問題に見えるものが多いです。数十の画面で表示されるべきものが表示されなかったり、別のものが表示されたり。ここで「あれ?」と感じる人も多いでしょう。「バグの数が多すぎます。別のものが表示とは?表示されなかったり?数からいう1画面あたり1回以上?」どういう作りをするとそんなことに?
実態は、あまりにもバラバラに正規化されたテーブルを集めてデータにするところを一か所に集めてルーチン化したのですが、パターンが増えるごとにそこに手を加えていって、ものすごい巨大な関数がいつの間にか出来上がっていたのでした。なので問題があると、そこだけ直せば直るのですが、影響調査がしきれず、ほかのところに影響が出て、新たなバグになり・・・・バグの収束の速さとバグが出る量が多いことはそこが原因でした。「典型的スパゲッティー・・・」
それをほぐすには!とすぐに期間の見積もりを指示しますが、1月2月ではとてもやりきれないほどめちゃめちゃに・・・仕様の整理も十分にされていないようです。たとえバグをつぶしていって機能要件を満たしたとしても、性能要件での問題が起きそうです。
これは死亡プロジェクトの例です。行きつく先は契約解除と損害賠償です。(実例かどうかはノーコメント)
仕様がはっきりしない段階から開発をはじめ、仕様が明確になるにしたがって、機能を追加していった結果のコードでした。(最初に単機能のものを作り、あとから追加された機能をその機能に追加しました。あとから予想もしない機能がどんどん言われて、それも追加していくうちに、後戻りできず、現場はさらに追加し続けてしまった)現場のプログラマに開発を任せ、ウオーターフォールを無視して、設計レビューをせずにものの完成のみを追っていったために起きたのでした。アプリケーションアーキテクチャを機能全体を見て設計していたら避けられた事態です。
サービスイン直前まで数字のみを追って、現場の報告をうのみにしてきたためにそうなってしまったのです。開発経験をしたことがある人は何となくわかると思いますが、中身を見るPMであればもっと前から問題点に気が付いたであろう、予兆が見えたと思います。
上記例では技術上がりの管理者としては火を噴いた後から「たーすーけーてー」という声を受けて支援に入ったところで事態がわかるということになるかと思います。もっと早くから事態がわかっていれば打てた対策もあるかもしれません。

本来の収束曲線

バグの収束曲線

どうするか!「解(solution)」に書きます

例:必死のバグつぶし、バグは直っていくが・・・1/2

サービスイン真近のプロジェクトがあり総合試験も後半なのですが、バグが多くスケジュールに影響が出そうです。WEBをUIとしたDBのトランザクションシステムです。表示のための計算や表示のさせ方の複雑さはあります。高度に正規化されて、複数のテーブルを統合しないとデータを表示できません。投入履歴をスライスする感じでデータの反映時間をベースとしたリビジョンが作られ、どの段階でも検索により取り出せるように求められています。このようなシステムと仮定します。

ここでPMは判断を迫られます。スケジュール遅延をお客様に話して、SINを遅らせることを交渉するか、内部で無理してでも間に合わせる努力を最後までするか。

通常はスケジュール遅延をお客様に報告しつつ、最大限の努力をしている旨ご理解いただき、最悪、SIN日程が守れないことを報告します。本当にSINに間に合わないことがほぼ確実になった段階では、正直にそのようにいうしかないのですが、精神論で頑張ってしまった場合、お客様がSIN遅延の覚悟ができていないことがあります。

遅く報告した場合、次期によってお客様内部や外部への(接続関係や既存システムの停止撤去の工事日程、既存システムがリース契約であった場合リース延長手続きが間に合うか、延長のための費用が確保できるか?サービス開始を期待しているお客様へのプレスリリースの手配、損害賠償への準備など)様々な調整が間に合わなくなり多大な迷惑をおかけすることがあります。

この判断をするに当たって、この例では始末が悪いことに、「ものができていて、品質が悪いだけ、バグをつぶせれば大丈夫、」かのように見えることです。

すでに大量の人員を投入し、テストチームと開発チームに分かれていて、開発チームはサブシステムごとに方端からバグをつぶしていきます。チームリーダはPMのしんなりする人で構成されており、幾多の修羅場(大量のバグつぶし)をくぐってきた人たちです。

マネージメント層はバグの収束曲線を見ます。

バグの不収束曲線

バグは日々たくさん出るが直る数も多く、頑張ればバグはなくなるように見えます。ここでほんの少しSINを遅らせるだけで収束するように見えます。

「あと二週間徹夜すれば!!」本当にそうか?
続く・・・

実話かはノーコメントです

PM:プログラミングと同じでセンスが必要

プログラマー経験があるとわかりますが、プログラミングってズバリセンスですよね。
センスが良ければ時間をかけずにそこそこのコードが書けるようになります。経験を積むと、人に迷惑をかけないソースが書けるようになって、さらに経験を積むと人のソースをみて、相手の考えていることがわかるようになりますよね。
PMも同じです。かなりセンスが要求されます。同じように経験を積むことでいろいろな管理方法論が確立されていって、怪しいところが犬のように臭いでわかるようになります。

いろんなPJをいろんな立場で経験していると、「その時どう考えていたかな?」「こういうことはありがちだな」などと思ったところは必ず記憶しておいて役に立てます。PG経験があるとPGの気持ちや落とし穴をよく知っていますから、管理するときでも「実はこういうことなのではないか?」という話ができてPJの真のもん亜ぢ店を明らかにして対策を打ったり、課題管理においても「この問題の解決策としてはこんなことがある」あるいは「この観点で調べるといいかも」などとアドバイスができたりします。(問題解決自体はマネージメントの仕事ではないのですが・・・)

たたき上げの嗅覚で対策した例を示します。
良い例かどうかはあれなんですが・・・

①必死のバグつぶし、バグは直っていくが・・・
②データの受け渡しの無駄
③バグを隠しているのではないか

これらについて述べていきます。
例によって、気ままに書きますので順番の前後等あります、気長にお待ちください。

職業的PM、たたき上げPM

<職業的PM>

大手のソフトウエアベンダー、SIerにいがちなのが、ソフトウエア開発経験が少ないにもかかわらず、開発プロジェクトの管理をしなければならなくなる人たちです。

悪いことではありません。たくさんの管理経験から開発者上がりにはわからないいろいろな管理手法を実践したり、推進したりできます。今回はそういう人たちとPG上がりでPMを経験する人たちを対比して、経験を生かしたPM像を表現したいと考えています。

中には経験がある人もいらっしゃるでしょうが、大型プロジェクトをやっていると元受(SIerや開発ベンダー)の若い人たちが開発の大変さもわからずに管理をしてきて勝手なことをいうことがあります。
もちろん知らなくても正しく管理はできます。彼らは様々な方法論を学んできており、先輩方や過去プロジェクトの失敗などから分析されたノウハウを身につけています。
しかし、実際に経験したものではありませんから、重要度や真意について理解できていないかもしれません。現場を知っている人間は実態を知っていますから、それ自体が知っていると自信になり、他に対しても説得力が生まれることになります。
とはいえ優秀な人はその点も正しく理解していて、なかなかにすごい管理をしてきます。侮れません。
技術力が不足しているという理由で自ら問題解決等をしなくて、問題点を技術者に投げて解決させるのも良いです、誰にどのような観点で調査をすればよいかなど、経験を生かしたアドバイスや調査、作業の方向性を示すのもマネージメントだからです。
管理慣れしている人はその手の技術も優れています。

<たたき上げPM>

技術力をバックグランドにして上がっていった人達です。こういった技術者からちょっとづつ上がっていった人はたまに、多くは技術に偏りがちで、同じ職位でも役職としてプロジェクトマネージメントよりも専門家としての役割が向いている人も多いです。
そのためにプロジェクトマネージメント技術を学ばなければなりません。
開発だけではわからない管理技術も多いですから、ここでじっくりと、ある程度網羅的に述べて行きたいと思います。

でもプロジェクトを統括するPMに向いていないのではなく、むしろ形だけの方法論にとらわれることなく知識・経験を生かしてプロジェクトを成功へ導くことができる人材になりえるのです。

どうすればいいのか「プログラマ経験を生かしたマネージメントスタイル」を見てください。
まだ書かれていないかもしれませんが気長にお待ちを・・・

経験を生かしてプロジェクトマネージャになろう!

経験を生かしてプロジェクトマネージャになろう!

ここでいうプロジェクトマネージャは役割なので、実際の社会ではいろいろな呼ばれ方をすると思います。一例をあげると。マネージャ・エキスパート・プロジェクトマネージャ・アシスタントマネージャ・シニアマネージャ・シニアエキスパート・リーダ・主任・課長・部長などと呼ばれたりします。役職と役割の呼び方は組織によっていろいろだと言うことですね。

< なぜPGからPMになるか>

最近は昇進したくないとか、現場がすきとかでPGのままがいいという人も多いです。それはそれでいいでしょう。個人のキャリアを考えるとき、10年後の自分を想像してみて今、30歳としたとき「40歳になったら自分は何をしているだろうか?」「40才だったら何をしていたいだろうか?」と考えます。今の立ち位置での自分を想像できて、満足であるならば問題ないでしょう。

PMを目指してみるかと思うきっかけはいろいろあろうかと思います。「結婚した」とか、「子供ができた」という事情であったり、「今の仕事に飽きたな」とか、「プログラマをやっているがそろそろステップアップしたいな」とか、「プロジェクト管理の仕事も面白そう」とかそんなのでもよいかもしれませんね。
目指していなかったとしても、やるはめになってしまうこともあるでしょう。「チームリーダをやってくれ」あるいは「このサブシステムをあなたにお願いしたいんだけど」と言われたとか。

・自分にとっての利点
責任と収入は原則として随伴します。したがって、責任が重くなれば、給料も多くなります。

プログラマを経験していることはある意味強みです。開発経験のあるPMは管理において経験がない人とは違う観点世界を持ちえます。それによってきめ細かかったり、「よくわかった」管理をすることができるのです。
今までのように手を動かすよりも頭を使うことが多くなります。進捗が遅れたから人を増やすような作業ではなく、あなたがやらなければ何も進まなくなるという類の役割に変わることになります。

言ってみれば自分をただの工数(人工(にんく))からの脱却です

1)職業的PM、たたき上げPM
コラム:隣の芝は青い?転職する?
2)プログラミングと同じでセンスが必要
3)私はどういう経緯でなったか
4)せっかくなので、戦略的ステップアップをしよう
についての書きます
例によって、気ままに書きますので順番の前後等あります、気長にお待ちください。

次のカテゴリー
昇進までの流れ

せっかくなので、戦略的ステップアップをしよう

★必要なスキルを身に着けて役割を奪い取れ!

この業界に入ってステップアップを夢見ている人も多いでしょう。私の場合は経験のないIT業界の派遣から中途採用され、マネージャーへなっていったわけですが、だれでもその可能性はあると思っています。

そのためには必要なスキルを身に着けて、役割を奪い取る気概が必要なのかもしれません。

ステップアップとしては、プログラマからのステップとしていきなり管理をするマネージャなることは困難です、私の経緯と同じように通常の段階としてはまずは

プログラマ→チームリーダー→サブシステムリーダー→プロジェクトマネージャ

という流れが一般的かと思います。
そしてその間に身に着けるべき知識・技術もあります。課題管理、品質管理、工程管理、見積もり、レビュー、要員育成、業務知識等の知識技術系の話。
本人の能力としてのマネージメントスキルとしては、強い意志、原則論、コミュニケーション能力、交渉力、意思決定力等などがあると私は考えています。

少しずつ一個一個語っていきます。
(順番はあれですが・・)

まずはチームリーダーになることとそこで身に着けるべき能力の話でしょうか。
いっぺんに管理部分をやっても意味がありません、それぞれの段階で身に付けなければならないことを身に付けて、確実な実力を獲得しましょう。