私は会社のプロジェクトマネージャーです。私は、CVSと呼ばれる標準のよく知られているバージョン管理システムを使用して、いくつかの開発者チームと協力しています。継続的な統合と自動ビルドの実装を確認して、ビルドの中断や、不適切なデプロイメントが本番サーバーに忍び込むのを防ぐのに役立ててください。
これは自分で設定できると確信していますが、次の2つの理由により、自分で設定したくありません。
時間はありません。私には、マーケティング、開発に参加していないチームメンバーとの他の利害関係者とのコミュニケーション、顧客とのコミュニケーション、プロジェクト計画など、自分の責任があります。
最も重要なのは、私がプロジェクトマネージャーであることです。私の目的は、リーダーシップを提供することであり、 開発チームをマイクロ管理する ではありません。
これを設定することに情熱を傾ける開発チームの誰かを見つけるために私ができることは何ですか? Java、Spring、およびGoogle App Engineの知識が必要であることを考えると、開発者はこのタスクに適切な人物ですか?変化が懸念される変化を促進するのに役立ついくつかのヒントは何ですか?
最初にいくつかの可能性を調査します。たとえば、Hudsonはかなり人気のある継続的インテグレーションサーバーであり、非常に柔軟性があります。次のようなもので開発チームにメールを送ることができます:
有毒な修正が表面化するのが遅くなるように、継続的インテグレーションツールを導入したいと思います。私は[ハドソン、アクメCIS、フー]を見てきましたが、それらはすべて動作するように見えます。 CVSを[リストの警告はこちら]で使用しているという事実を踏まえて、私は推奨事項を探しており、チームが決定したものは何でも受け入れます。
デイブ、コンセンサスを得て、これを稼働させる責任を負ってください。チーム-金曜日にテストできるように、木曜日の一日の終わりまでにデイブにご意見をお寄せください。
何か確立したら、私の資格情報を送ってください。
このアプローチには、次の利点があります。
私の模擬シナリオでは、Dave
が選択されました。彼は自分の味方が最も少なく、おそらく新しいサーバーのセットアップに問題がないためです。作業負荷によっては、Dave
があなたである必要があるかもしれません。それは非常に主観的であるため、私はそれについて簡単に触れます。あなたはいつも言うことができないnot my job to do that
特に、あなたがそれを行う時間がある唯一の人である場合。誰もがすでに時間をかけて引っ張っている場合、彼らのperceptionは、あなたの手助けの意欲がより重要になります。あなたが時間をかけて開発するスキルであるゲージング。
いずれにせよ、金曜日までにCISサーバーを用意するか、追加の手を使わずにそれが不可能な理由の詳細を知ることになります。
私はそれが3つの可能な方法を進んでいるのを見ます:
開発チームの誰かに可能なツールの迅速な評価を考えさせ、彼に何かをすばやく打ち立てさせます。個々のプロジェクトに適切なビルドスクリプトがある場合(つまり、IDEの外部でプロジェクトをビルドできる場合)、それらをCIにフックするのはかなり迅速です。
ビルドインフラストラクチャをチーム内の内部プロジェクトとして扱い、それを管理します。最初の点より少し複雑ですが、正しく実行すると、より良いシステムが得られます。また、チーム全体に知識を広めることで、以下に説明する専門性の過剰化のリスクを軽減できます。また、ピアレビューのメリットも得られます。ただし、一部のプログラマーは、このタスクを侮辱的であると認識しているため、必要以上に多くの時間を費やさない場合があります。
ビルドマスターとして開発者を雇い、すべてのツールをセットアップしてもらいます。その後、彼を引き続き使用して、システムの改善、メトリックの追加、自動ドキュメント生成、自動テストなどを行います。これはよりコストがかかりますが、正しく実行すると、開発チームの効率が向上するため、この人への投資は非常に早く返済されます。この人物は、チームが使用する言語とフレームワークに精通しており、システムでそれらを接着したいという願望を持っている必要があります。一方、(コメントから)これは予算内に収まらない可能性があり、専門的なポジションを作成すると、移行が困難になる可能性のある文書化されたソリューションにつながる可能性があります。
これは言った、何かを始める前に、あなたが本当にそれから何を望んでいるかを確かめてください。あなたの質問には、正しい技術的方向にあなたを導くための少し詳細が欠けています。そのようなツールを使用することで達成したい利益を知る必要があり、目的のシステムの一般的なビジョンが必要です。それをすべて結び付ける環境を作成するのに長い道のりを行くことができますが、あなたに対して構築するマスタープランがなければ、サークルを実行して、それらがすでにあるものよりも複雑なものにすることもできます。
かつて私が言ったマネージャーは、ツールは良いがプロセスがないと役に立たないと言っていました。私が彼がフォローアップしてくれればいいのにと思います。
したがって、誰かを雇うことに決めた場合、よりITishなバックグラウンドを持つ誰かよりも、プログラマーを獲得することには明確な利点があります。主なポイントは、この人は、さまざまなシステムをコヒーレントなシステムに統合するグルーコードとプラグインを作成するのに、時間とエネルギーを費やすことができるということです。
これが役に立てば幸い
リーダーシップの役割がある場合、不足しているコンポーネント/プラクティスを特定し、それが正しく実装されていることを確認するのはあなたの仕事です。実装のタスクは委任されていてもいなくてもかまいませんが、最終的にはリーダーの責任です。
受け入れの鍵は、理解すること、または少なくとも疑いの利益をあなたに与えることです。やりたいことを話し合って、コストとメリットを引き出すことができます。ディスカッションが理解をもたらさない場合、あなたはあなたの決定への彼らの信頼に頼ることができますが、あなたがその種のリポアを構築した場合に限られます。
専門家の時間的制約に委任する場合は、スタンドアップまたはチームミーティング中にそれを取り上げ、ボランティアを求めます。誰も来ない場合は、他の作業と同じように割り当ててください。
更新:
どの会社にも組織構造があります。リーダーシップの役割は、そのレベルのリソースに対して責任があります。また、問題を指摘して対処する責任があります。彼らは追加のリソースや提案を必要とするかもしれません、その時点であなたはチェーンを上ります。問題に対処できる場合は、ソリューションを自分で実装するか、委任するかを選択できます。これは、直接、理想的には彼らと協力して影響を与える人々を巻き込むことができ、またそうすべきです。
私は、取締役レベル以上のポジションが会社の特定の個人またはグループに直接責任を負うべきではないとは言えません。それは本当に企業の組織構造に依存します。私は、CTOが開発者とテスターを直接担当する新興企業で働いていました。そのレベルでのより伝統的な大企業の管理では、それらのより低いレベルで適切な決定を行うために必要な必要な可視性や親しみやすさがありません。
私は主に開発者であり、可能な場合(つまり、明示的にそうすることを禁じられていない場合)に設定します。一般的に、私が働いている場所は.NETショップなので、オープンソースであり、ほとんどの主要なソース管理システムで動作し、比較的使いやすいCruiseControl.NETを選びます。私は常に Ambient Orb を出力の1つとして設定することを望んでいましたが、それは通常、私の制御範囲外です。
会議で取り上げて、現在取り組んでいるプロジェクトに影響を及ぼさない限り、誰かがそうしたいかどうかをまず確認します。
私の現在の場所(国立研究所の1つ)では、一貫した方法でビルドを作成するためにセットアップされているので、私たちが行っていることを確認したい人はいつでも実行可能なバージョンを取得できます。彼らはユニットテストを望んでいません(プロジェクトマネージャーの印象は、ユニットテストに費やした労力がプロジェクトを.NETに移植することに費やされた可能性があるということです)。
私の以前の場所では、製品全体でビルドを標準的で一貫したものにすることが目的でした。非常に多くの製品が1台の特別なコンピューターでしか構築できなかった(1つの製品の場合、非常に前に廃業した積極的なDRMによるサードパーティの制御が関与するため、開発者が終了してから約5年間、1台のマシンを存続させなければならなかった)これは、現在置き換えられている商用出荷製品を作成できるのは彼だけだったからです)。さらに、インストールは朝の人である1人だけで行うことができたため、午後3時以降にビルドが必要な場合は、翌日まで待機しました。
Java、Spring、Google App Engineの知識が必要であることを考えると、開発者はこのタスクに適切な人物ですか?
場合によります。スクリプト作成に長けているQA担当者がいる場合は、QA担当者に割り当てる前に、まず質問してください。
最初から設定するのは複雑な作業ではありません。セットアップに2日以上かかることはありません(主に企業環境では、必要なすべての権限でアカウントを取得して手間をかけています)。
あなたは、次の多忙な会議で、「OKだから私たちはこれを行うべきだと思います。誰がそれを実装できるのか」と言うだけでもいいでしょう。その後、あなたはそれについて戦う必要はありません。
別の方向から設定してみてください-本番環境で問題が発生した場合は、開発チームに責任を負わせて修正し、迅速に修正してください。次に、最新のコード、バージョンスタンプなどからコンパイルするシンプルなナイトリービルドのアイデアを紹介します。ビルドに失敗すると、昇格されません。
ビルドスクリプトは開発者が所有する必要があると思います。依存関係を変更したり変更したりするときは、スクリプトの更新方法を知るのに最適です。また、プロジェクト管理者がプロジェクトを所有している場合は、問題が発生したときに会議に招待することを伝えます。