タグ別アーカイブ: チームリーダー

考慮:リスク

見積もりにはすべて前提条件があります。それらが崩れるとき見積もりはずれます。お客様が予想に反してわがままだったり、行間にものすごい仕様が隠れていたり。この不測の事態に対しても見積もりは必要です。リスク管理です。

チームリーダレベルでは権限範囲の①想定リスクをあげて②何等か対応をしておき③リザーブを確保しておくことが必要です。

  1. リスクには想定できるものと想定できないものがありますが、想定できるものについては、リストアップしてどうなった場合に何が発生してどれほどの確率で発生するのか、どの程度の影響が考えられるのかを列挙しておきます。
  2. 対応としては、許容する場合を除き、何等か対処をして発生確率を減らしたり、危険をなくしたり、発生してもいいようにします。
  3. 発生をしてもいいようにとは、何かあった時のための費用を確保しておくということです。プロジェクトマネージメントリザーブなどとも言います。

リスクを上げると、それを回避するために何をするのか決めなければならない風潮があったりしますが、リスク対策は「リスクファイナンス(お金を確保する)」と「リスク予防対応(起きないように何かする)」「許容(リスクが発生してもあきらめる)」などがあり、明らかにしたうえで分析をし、リスクを許容することも対応の一つです。

技術力-開発技術

たとえば、開発技術に優れているのであれば、困っている人がいたら助けてあげましょう。PMがある開発担当者のところで悩んでいてそれがその担当者のバグでなかなか治らなかったとすると、あっさり解決してあげてください。PMに対するアピールとしてはかなり強力です。タイミングとしては、やることがなくなってどうしていいかわからず、固まっているときです。何かをしているときに口を出すとただのおせっかいになってしまします。

固まっている人がいたら声をかけてあげましょう。
正直みんなは悩みすぎです。一つのバグに1日とか2日悩んでたというのをよく聞きます。がっくりです、一時間悩んでわからなければいったん棚上げして後ででもチームで相談すればいいのです。一時間悩んで解決しないものがその人が2時間悩んで解決するとは思えません。文殊の知恵を集めましょう。
私は自分でも解決しますが、わからないことや不得意なこともあります。PJの中で誰がどの技術に詳しいかどういう性格をしているかを把握しておきましょう。困ったときに必要な人に聞いたり、つないであげるだけでもかなり強力です。
自分がわからなかったときどうするか?私は1時間たっても解決しなかったら騒ぎます。みんな寄ってきてなんだかんだ解決してくれたりします。ありがたいです。

技術はどのように身に着けたらよいでしょうか。
私は開発技術は60%センスだと思っていますが、残りは他人のソースをどれだけ読んだかと考えています。ソースを作る時の考え方を理解して何を考えてこうしたのかこうすべきなのはなぜかということを考えつつソースコードを読むのです。そうすると、だんだん物語を読むように、ソースが語りかけてくるようになります。書いた人の性格がわかったり、だれか書いたかわかるようになってきます。
制御や低レベルの関数群などはベテランが作るべきです、またベテランが作っていることが多いです。彼らの経験がそのソースには生きています。なぜこれだけの機能なのにこんなに長いのか?堅牢な仕組みが出来上がっているかもしれません。インターフェース関連は特に経験が生きてくる面があります。あるいは単純に冗長なだけかもしれません、機能の堅牢性だけでなく、メンテナンス性、正規化等の観点からもソースを読むようにするといいかもしれませんね。

ソースを読むということからするとOSSに手を出すのもいいかもしれません。ここでは技術力だけでなく人脈も身に付きます。私もいくつかのコミュニティーに参加して楽しんだことがあります。この世界では飛び込めばすぐそこにあります。自分でもやれるし人に会うこともできます。いろんなOSSコミュニティーがあります。ぜひ飛び込んでみてください。







私はもともとCプログラマだったのですが、マニアックなCの使い方も面白いですよね。仕事ではメンテナンス性が悪くなるので可読性を優先しますが・・・


オープンソースコミュニティーに参加するものいいですが、自分で運営してみるのもいいかもしれませんね

ユーザ業務の知識

自分がどんな仕事をしているのか?開発しているシステムが、お客様にとってどのような結果を生むのかを真に理解することです。
個人でチームの一員としてやっている場合、自然と身につくものであると思います。ですが、自然と身につくものだけでは不十分です。積極的に周辺や、接続したり連携する機能に関するエンドユーザでの使われ方の情報を集めましょう。
単に仕様を理解していてその通り作るだけではだめです。プログラマとしてはそれでよいのでしょうがチームリーダを目指すのですから周辺知識は必要です。重要なのはそのシステムは“どのように使われるか“です。この観点を持っていることにより、担当している単機能の単体試験だけでなく、結合試験、総合試験、運用試験に食い込むことができます。「彼(彼女)なら関連機能を含めたユーズケースを元に試験シナリオが作れる」ということになれば第一目標は達成です。
「彼がいなければどうにもならない」となるのが理想ですがまずは「彼に任せることができきる」となることが重要です。
開発工程で上流はベテランが行うのが一般的ですプログラマは多くここには参加できず、詳細設計工程あるいは製造工程から参加することになります。V字開発の工程ごとの人員表を意識すればわかりますが、詳細設計製造から入った人は単体試験が終了すると不要になります。人が減らされるのです。ここでいかに生き残るかが勝負です。そのための武器と考えてください。

まずはチームリーダーになろう

PMになって役割が変わることを昇進というかは異論があるところを思いますが。面倒を見なければならない人ができるあるいは増えることをこの際昇進といいましょう。

4~5人程度の少数の開発者を下につけて、一部の機能を担当してマネージメントスキルを磨きましょう。プロジェクトを管理するのがプロジェクトマネージャなら、チームを管理するのがチームリーダーです。管理するものが、組織中心か、人中心かの違いがありますね。いずれも運営も管理しますが、直接の被管理体がチームなのか人個人なのかの違いがあります。人が管理できなければ組織は管理できませんから、十分にスキルを磨きましょう。

チームリーダになるためには何が必要でしょうか?「個人実績」と武器としての「ユーザ業務知識」「技術力」です。この「ユーザ業務知識」がない場合でも、他のたとえば「技術力」が非常に優れているということでもよいかもしれません。私はユーザ業務の業務知識を武器にしました。

チームリーダになってから必要になるスキルとしては「見積もり」「チームビルド」「工程管理」などがあります。これらはいきなり必要になります。

そして、さらなる発展のためにチームリーダになって「チーム実績」を積んでいく必要があります。

うまく実績が積めないと技術力のあるプログラマに戻されてしまいます。

必要なスキルやだいたいどの程度できればいいかを述べていきます。

①個人実績
②ユーザ業務の知識
③技術力
④見積もり
⑤チームビルド
⑥工程管理
⑦問題解決
⑧チーム実績
についての書きます
例によって、気ままに書きますので順番の前後等あります、気長にお待ちください。