技術力

ここでいう技術力はIT技術力を指します。
チームリーダを任されるためには技術力が必須です。プログラマとして技術力がなければプログラマのリーダを任せてみようとは思わないからです。
プログラマーの技術は表現するのが難しいですが、

開発エンジニアですと
・要件を理解して設計をすることができる
・バグの少ない品質の良いプログラミングができる
・バグがあった時に他人が作ったところでも解析を行って原因の特定修正ができる

基盤エンジニアですと
・要件を理解してサーバあるいは機能の設計をすることができる
・特定の製品に詳しく、それを利用した機能の構築ができる

というレベルになろうかと思います。
単に指示に従ってできるというだけではだめでその一歩だけ先のものが求められます。
指導できる技術力です。

技術の優れている人は信頼されますから上に行きますが、大抵の場合、それらの技術力を身に着けるのはこの段階です。
偉くなってしまうと細かい知識が不要になったり、ノウハウ的なところを人に任せてしまうということも多いです。本当の技術力を身に着けるのはしーむリーダの時期と理解して技術力を磨きましょう。

ここでは
①SI技術
②開発技術
③システム基盤技術
④運用技術
について述べます

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

ユーザ業務の知識

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

隣の芝は青い?転職する?

「SEは徹夜も多いし、お客様からは無理難題言われる、大変だから客商売でもやろうかな」という話をデスマーチPJで疲れてくるとよく聞きます。どうなんでしょう、ほかの業界に行けば楽になるのでしょうか?
私はあまり変わらないと考えています。忙しい人はどの業界に行っても忙しいですし、それなりにストレスがたまります。

業界を変わる意味合いというか利点は、その業界で受けるストレスが自分に耐えられるストレスであるか?であると考えます。
どの業界にも忙しくない人や忙しい人がいます。忙しい人は多分ですが、ほかの業界に行っても忙しいと思います。いろいろ要因はあると思いますが、まずはその人がいろいろ任されるタイプの人ですと、頼りにされて仕事が増えていきます。仕事の仕方が忙しくなる仕事の仕方である場合もあるとおもいます。あいている時間があると何かをしてしまう人がこれに当たります。どんなことでも一度始めてしまうとやめられなくなってしまうのです。大企業病の「業務ややることがどんどん増えるが、業績下がってもなぜか減らない現象」の原因の一つです。
スーパーに勤めていた時は生鮮食品だったこともあり朝は6~7:00くらいから仕込みを始めて夜10:00の閉店後片づけをして、次の売り出しの準備(売り場変え)をして帰ると、睡眠時間が4時間とか2時間であることもおおかったです
つまり「忙しい」は転職の理由にはならないかもしれませんね。

そういえば:開発技術以外の技術も磨こう

技術者は開発技術力に頼りがちで、技術者上がりの管理者も開発技術力を重視しがちですが、スキルとしては開発技術だけではだめです。時々、開発技術力のみを根拠としてチームリーダを任せたために、なかなかプロジェクトが完遂しないということがあります。お客様要望を技術力で実現しようとするか、お客様と用語会話が合わず要件定義ができないか、あるいは理想的なコーディングをすることに時間をかけて作業が終わらないことがあるからです。

そういう人は他がまかせられませんから、開発工程から抜け出せず、場合によっては開発工程のみであちこちのPJを渡り歩くことになります。

技術のみ職人にならないように注意しましょう。

個人実績

チームリーダになるためには、まずはプログラマーとしての実績が必要です。プログラマーの親玉にしようというのですから、プログラマーとして優れている必要があります。

ここでは「何々できます」などということは聞きたくなくて「何々してきました」「何々の経験があります」ということが重要です。言い方ではなく実際の経験が必要ということです。

開発スキル:こうこういうプロジェクトでの開発経験があり、そこで生産性良く開発ができた。
― 設計:設計品質が高くほかの人の参考になるようなメンテナンスのしやすい設計書を書いてきているスケジュール:スケジュールを常に守ってきていて信頼されている
― 品質:作ったプログラムのバグが少ない
― 要件策定:お客様と話せて、その要件をくみ取ることができる
問題解決実績:問題が起こった時、あっさり解決したことがある
助け合い実績:チームのほかの人が困っているとき助けて解決したことがある
責任感:責任感があって、不測の事態が発生しても、他のせいにせず、最後までやりきっている
バランス力:重要なものとそうでない物を正確に見分けて適切なプライオリティーで処理してきている。

これらの実績がすべてあると、ちょっとチームを任せてみようか?ということになります。

これらがあると認められるためにはどうすればよいのでしょうか?
次回話します