自動ビルドシステムのセットアップを担当するのは誰ですか?


15

私は会社のプロジェクトマネージャーです。私は、CVSとして知られる標準のよく知られたバージョン管理システムを使用して、いくつかの開発者チームと協力しています。継続的な統合と自動化されたビルドを実装して、ビルドの破損や運用サーバーへの不正な展開の問題を防ぐことができるようにしたいと思います。

私は自分でこれを設定できると確信していますが、次の2つの理由でこれを自分で行いたくありません。

  1. 時間がありません。私には、マーケティング、開発に参加していないチームメンバーとのその他の利害関係者とのコミュニケーション、顧客とのコミュニケーション、プロジェクト計画などの責任があります。

  2. 最も重要なことは、私はプロジェクトマネージャーです。私の目的は、開発チーム細かく管理することではなく、リーダーシップを提供することです。

開発チームでこれをセットアップすることに情熱を持っている人を見つけるためにできることは何ですか?Java、Spring、およびGoogle App Engineの知識が必要であることを考慮して、開発者はこのタスクに適していますか?変化が懸念される変化を促進するためのヒントは何ですか?


7
プロジェクトマネージャーの役​​割がリーダーシップを発揮することであることは、私にとってニュースです。
ユーリーズバレフ

最後の知識要件のリスト、開発者が持っているかもしれないし、持っていないかもしれないすべてのもの、そして非開発者は確かに持っていないでしょう。あなた次第です。
11

5
まだCVSを使用している場合はほぼ-1です。
ヨハネスルドルフ

@Johannes-それが私次第なら、私たちはそうではなかったでしょう。実際、私が使用しているSVNリポジトリのセットアップがあります。
jmort253

1
CVSは古いテクノロジーであり(私のお気に入りとはほど遠い)、まだ機能し、多くの場所でまだ使用されています。そして、それが仕事をしているなら、あなたはそれを適所に残すためにそれを必要とします。私たちはオフィスでそれを使用し、仕事を完了させます。
ザカリーK

回答:


14

最初にいくつかの可能性を調査しました。たとえば、ハドソンはかなり人気のある継続的統合サーバーであり、非常に柔軟です。開発チームに次のようなメールを送信できます。

継続的な統合ツールを導入して、毒性のある改訂版がすぐに表面化するようにします。[ハドソン、acme CIS、foo]を調べましたが、それらはすべて動作するように見えます。CVSを[ここにリストされている注意事項]で使用しているという事実を考えると、私は推奨事項を探しています。

デイブ、コンセンサスを得てこれを立ち上げて実行してください。チーム-木曜日の終わりまでにデイブにご意見をお寄せください。金曜日にテストできます。

何か確立したら、資格情報を送ってください。

このアプローチには次の利点があります。

  • ダンプではなく委任しています
  • 人々はあなたがいくつかの研究を行ったことを知っています、あなたが指摘するものの品質は実装されたツールの品質に対するあなたの期待を定義するのに役立ちます
  • あなたは[警告]を知っています、彼らが本当に目の前の仕事のための取り引きブレーカーでない限り、それらについて議論するのを狂わせないでください
  • あなたは少し民主主義を許します。確かに、何かが壊れているかどうかを確認するためにログインしますが、プラットフォームを選択するのはCISに対処しなければならない人々です。

私の模擬シナリオでDaveは、彼は自分の皿の上に最も少なく、おそらく新しいサーバーをセットアップするのに問題がないので選択されました。作業負荷に応じて、Daveあなただけである必要があります。それは非常に主観的であるため、単に言及します。あなたがnot my job to do thatそれをする時間がある唯一の人である場合は特に、あなたはいつも言うことができません。誰もがすでに時間をかけて引っ張っている場合、あなたの援助意欲の認識がより重要になります。ゲージングは​​、時間の経過とともに発達するスキルです。

いずれにせよ、金曜日までにCISサーバーを使用するか、余分な手を使わなければそれが不可能な理由の詳細を確認できます。


2
入力とアドバイスをありがとう。仕事から抜け出すためにnot my jobカードを引き出そうとはしていませんでしたが、プロジェクトマネージャーが開発チームの活動に巻き込まれるのは簡単だからです。これを開発に委任することで、私は彼らにコントロールと統治権を与えます。また、彼らがこれをセットアップすることを担当すれば、彼らはそれを使用する可能性が高くなります。私の他のタスクに。また、サンプルの電子メールは非常に役立ちます:) +1
jmort253

@ jmort253-はい、私はあなたが仕事を避けていないことを知っています。わかりやすくするために更新します。
ティムポスト

3
チームを巻き込み、技術的な決定をさせるための+1。それが、新しいシステムを受け入れて使用するための鍵です。
ペテルトレック

14

私はそれが3つの可能な方法になると見ています:

  1. 開発チームの誰かに、可能なツールの素早い評価を考えさせ、すぐに何かを作らせます。個々のプロジェクトに適切なビルドスクリプトがある場合(つまり、IDEの外部でプロジェクトをビルドできる場合)、それらをCIにフックするのはかなり迅速です。

  2. ビルドインフラストラクチャをチーム内の内部プロジェクトとして扱い、管理します。最初のポイントよりも少し複雑ですが、正しく行われれば、より良いシステムが得られます。また、チーム全体に知識を広めることで、以下で説明する過剰な専門化のリスクを軽減できます。また、ピアレビューのメリットも得られます。ただし、一部のプログラマは、このタスクを軽deと見なし、そのために必要なほど多くの時間を費やさない場合があります。

  3. ビルドマスターとして開発者を雇い、彼にすべてのツールをセットアップさせます。その後、彼を使用してシステムを改善し、メトリクス、自動ドキュメント生成、自動テストなどを追加します。これはよりコストがかかりますが、適切に行われた場合、開発チームの効率を高めることでこの人への投資は非常に迅速に支払われます。この人は、あなたのチームが使用する言語とフレームワークに精通し、それらをシステムに接着したいという欲求を持っている必要があります。一方、(コメントから)これは予算内に収まらない可能性があり、専門職を作成すると、移行が困難になる可能性のある文書化されたソリューションにつながる可能性があります。

これは、何かを始める前に、あなたが本当にそれから何を望んでいるかを確かめてください。あなたの質問には、あなたを正しい技術的方向に導くための詳細が少し欠けています。そのようなツールを使用して達成したい利益を知る必要があります。目的のシステムの一般的なビジョンが必要です。それをすべて結びつける環境を作るのに長い道のりを行くことができますが、あなたに対して構築するマスタープランがなくても、サークルを実行し、既にあるものよりも複雑にすることができます。

私がかつて言ったマネージャーは、ツールは良いが、プロセスがなければ役に立たないと言っていました。私は彼がこれらを適所に置く時が来たときに彼が言ったことについて彼がフォローアップしたことだけを望みます...

したがって、誰かを雇うことにした場合、よりIT的なバックグラウンドを持つ人ではなく、プログラマーを獲得することには明確な利点があります。主なポイントは、この人がさまざまなシステムをコヒーレントシステムに統合するグルーコードとプラグインの作成に時間とエネルギーを費やすことができるということです。

これが役に立てば幸いです


2
@Newtopian-これは役立ちます。特に、何かを盲目的に実装しようとする前に計画を立てることに関する部分。ありがとうございました。+1
jmort253

1
+1かなり健全なアドバイス。さらに、作業中のプラットフォームに関係なく、チームメンバーの1人が主要なLinuxヘッドである場合や、ビルドスクリプトを使用することが多い開発者ユーザーがいる他のOSである場合、プロジェクトに興奮する場合があります。
ガレットクラボーン

1
3 1)すべてのソフトウェアチームは、これらの日専用のビルドマネージャを持つ必要があります
ショーン・パトリック・フロイド

1
私が読んだことを覚えている著名な企業(37signals?GitHub?I dunno)は、ビルドを壊した最後の人にビルドマスターになる責任を割り当てています。これにより、(1)ビルドを壊さないように注意し、(2)チームの複数のメンバーが(理想的には)ビルドシステムについて学習した経験を得ることができます。
ミシェルティリー

1
@jmort遅かれ早かれ、誰もそのような専用のポジションを持たないことのコストを費やすことができなくなるポイントに到達しています
ショーンパトリックフロイド

3

リーダーシップの役割を持っている場合、不足しているコンポーネント/プラクティスを特定し、それが正しく実装されていることを確認するのはあなたの仕事です。実装のタスクは委任することもしないこともできますが、最終的にはリーダーの責任です。

受け入れの鍵は、理解すること、または少なくともあなたに疑いの利益を与えることです。何をしたいのかを話し合い、コストとメリットを引き出すことができます。議論が理解をもたらさない場合、あなたがそのような信頼を築いた場合にのみ、あなたはあなたの決定に対する彼らの信頼に頼ることができます。

専門知識の時間的制約に委任する場合は、スタンドアップまたはチーム会議中にそれを立ち上げ、ボランティアを求めてください。誰も来ない場合は、他の作業と同じように割り当てます。

更新:

すべての企業内に組織構造があります。リーダーシップの役割は、そのレベルのリソースに対して責任があります。また、問題を指摘して対処する責任もあります。追加のリソースや提案が必要になる場合がありますが、その時点でチェーンを進めます。問題に対処できる場合は、自分でソリューションを実装するか、委任するかを選択できます。これには、直接、理想的には彼らと協力して影響を与える人々を含めることができます。

取締役レベル以上の役職が会社の特定の個人やグループに直接責任を負うべきではないとは言えません。本当に企業の組織構造に依存します。私は、CTOが開発者とテスターに​​直接責任を持つ新興企業で働いてきました。そのレベルのより伝統的な大企業管理では、これらの下位レベルで適切な意思決定を行うために必要な可視性や精通性がありません。


あなたが他のリーダーのリーダーであると仮定しますか?プロジェクトチームの若いJava開発者が追加のトレーニングを必要としていることを識別するのはCEOの責任ですか?
jmort253

@ jmort253簡単な答えかもしれませんが、それは会社の組織構造に依存します。会社の構造がフラットで小規模な場合、開発者がトレーニングを受けるようにするのはCEOの責任かもしれません。確かに、私はVPがマネージャーではない直接報告を持っている多くのスタートアップで働いてきました。
-Dietbuddha

1

私は主に開発者であり、可能な場合(つまり、明示的に禁止されていない場合)にセットアップします。一般的に、私が働いている場所は.NETショップなので、CruiseControl.NETはオープンソースであり、ほとんどの主要なソース管理システムで動作し、比較的使いやすいため、CruiseControl.NETを選びます。私は常にアンビエントオーブを出力の1つとして設定したいと思っていましたが、それは通常私の制御の範囲外です。

ミーティングでそれを持ち出し、誰かがそうすることを望んでいるかどうかを確認します-現在取り組んでいるプロジェクトに影響を与えない限り。

私の現在の場所(国立研究所の1つ)では、一貫性のある方法でビルドを行うためだけにセットアップしているので、私たちがやっていることを見たい人はいつでも実行可能なバージョンを入手できます。 。彼らは単体テストを望んでいません(プロジェクトマネージャーの印象は、単体テストに費やした労力がプロジェクトを.NETに移植することに費やされた可能性があるということです)。

私の以前の場所での意図は、ビルドを標準化し、製品間で一貫性を持たせることでした。非常に多くの製品を1台の特別なコンピューターでしか構築できませんでした(ある製品のケースでは、以前は廃業していたアグレッシブなDRMを使用したサードパーティのコントロールが関与していたため、開発者が終了してから約5年間、1台のマシンを存続させる必要がありましたこれは、現在交換されている市販の製品を構築できるのは彼だけだからです)。さらに、インストールは午前中の1人だけが行うことができます。したがって、午後3時以降にビルドが必要になった場合は、翌日まで待機していました。

Java、Spring、およびGoogle App Engineの知識が必要であることを考慮して、開発者はこのタスクに適していますか?

場合によります。スクリプト作成に長けているQA担当者がいる場合は、QA担当者に割り当てる前にまず質問してください。

最初から設定するのは複雑な作業ではありません。セットアップに数日もかからないはずです(ほとんどの場合、企業環境では、面倒なことは必要なすべての権限でアカウントを取得して実行しています)。


0

別の方向から設定してみてください-実稼働環境に問題がある場合は、開発チームに責任を負わせて修正し、迅速に修正してください。次に、最新のコード、バージョンスタンプなどからコンパイルする単純なナイトリービルドのアイデアを紹介します。ビルドに失敗すると、昇格しません。

ビルドスクリプトは開発者が所有する必要があると思います。依存関係を変更したり、変更を加えたりする場合は、スクリプトの更新方法を知るのに最適です。また、プロジェクト管理がそれを所有している場合は、問題が発生したときに会議に招集することを伝えます。


0

次回のティームミーティングで、「OK、私たちはこれを行うべきだと思う。誰がそれを実装できるのか」と言うことができます。それについてあなたはそれについて争う必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.