講義の構成は次のとおりです。 1つ目は、Pivotal Labsのソフトウェア開発哲学です。 その後、開発者およびプロジェクトマネージャーに対して、より具体的な推奨事項が提示されます。 最後に、組織内の人々を雇用する慣行について説明します。
ビデオリンク:
Pivotal Labs Philosophy(戦略)
ソフトウェア開発はコミュニケーションです。 人とコミュニケーションをとり、そこから学ぶ能力が鍵となります。
ソフトウェア開発には、規律と厳格さが必要です。 次のプラクティスを使用します。
- ペアでの一定の作業。
- TDD ( テスト駆動開発 ) 方法論の100%使用 。
- リファクタリングに重点を置いています。
- 継続的インテグレーション ( CI )の使用。 すべてのテストの結果はモニターで追跡されます。 (しかし、大きなモニターは主に顧客向けです。それは彼らに感銘を与えます。開発者はマシン上のすべてを追跡します)。
- チームの結合(クライアントとのチームワーク)。
- スタンドアップ。 毎日午前中に常設会議(10分)が行われ、その後、チームとチーム内の同じ会議に分類されます。 コミュニケーションを維持することが重要です。 基本的に、これらの会議は、現在の作業をブロックする(時間を要する)問題を特定することを目的としています。 プロジェクト全体の問題は、会社全体で議論されています。
- 回顧。 プロジェクトのフレームワーク内で、実行される作業が毎週議論されます。 今週の結果の議論には1時間かかります。 この会議には、開発者、RP(プロジェクトマネージャー)、および場合によっては顧客担当者が参加します。 議論はオープンで直接的です-それは良いと言い、それは疑わしくて悪いように見え始めます。 不良の詳細(最大1時間)について説明した後、問題を解決するための手順のリストをコンパイルします。 社内では、作業は月に一度議論されます(一般的な質問、たとえば、「私たちはまだペアで働いていますか?」-「効果的ですか?」)。 キヤノンは何もありません。
- RPが機能する近さ。 RPと開発者の間の絶え間ない相互作用。 相互作用は、「エレクトロニクス」ではなく、対面でなければなりません。
- Pivotal Trackerの普及。
- マネージャーによる作業の受け入れのためのデモ環境の使用。
- 来週の計画。 週に一度行われます。 RP /開発者間の期待/結果/評価/タスクの理解の明確化。
- インセプション/アウトセプション(プロジェクトの開始/終了)。 プロジェクトの初日は会議に完全に参加する必要があります。 数週間前に開発者をロードする必要があり、これらの週の間は、すべてのコストで会議を避ける必要があります。 ソフトウェア開発は終わりません。 顧客と人々の願いに応えなければなりません。 このステートメントは、仕様の開発と矛盾します。 この場合、完了した時点を知っていると仮定します。 しかし、この方法は機能しません。
戦術
開発者向け
エクストリームプログラミング( EP )の機能:
- 社会活動。 EPは、隅に座って数千行のコードをクランクするのが好きなヘッドフォンを持った人向けではありません。
- デザインは継続的な活動になりつつあります。 問題を完全に説明せずに開発を開始するのは、通常の方法です。
- テストは開発プロセスの主要なアクティビティになります。 テストがコンパイルされるまで、コーディングを開始しません。 テストは、コードよりもクライアントにとってはるかに重要です。 コードはむしろアーティファクトです。 テストでは、クライアントが何をしたいのか、どのように製品を動作させたいのかについて話します。コードは、このタスクを達成する方法です。 また、アジャイルソフトウェア開発の背後にある考え方は、テストの進行中にいつでも実装を変更できるようにすることです。 はい、6か月後にスケーリングに問題が発生する可能性があり、システムの大部分を書き直す必要がありますが、まだテストがあるので悲しんではいけません。 また、これらのテストにより、システムの動作が変更されていないことを常に保証できます。
-正式な文書を作成していますか?
-テスト。 コメントはしません。 ドキュメントを作成しません。 テストは私たちのドキュメントです... Spec(Ruby)、Jasmine(JavaScript)、Capybaraはすべての種類のDSL( ドメイン固有言語 )です。 そして、それらを理解するためにプログラマーである必要はありません。 しかし、彼らの前でさえ、あなたがそれを公開するとすぐに古くなるので、私たちはドキュメントを書きませんでした。-コメントを書いていますか?
-いいえ、テストがあります。
-「このコードは何をするのか、なぜコードはそのように書かれているのか」などのコメントについてですか?
-コードが書かれている唯一の理由(何らかの方法)は、テストに合格することです。 - Pivotalには、独自のデスクとコンピューターはありません。 私たちが持っているのは、3ペアチーム(6人)と3つの開発ステーション(27台のMac 2台と入力デバイスのペア)です。 個人用とメール用に別々のコンピューターもあります。 しかし、誰もが電話で作業するため、今ではほとんど必要ありません。 人々はパーソナルコンピュータを持っていないことを心配していますが、それは最初の日に彼らを悩ますだけです。
- 「不確実性。」
- 仕様がありません
- どこに行きたいかわからない
- 今日知っていることは明日変わるかもしれない
- いつ終わるかわからない
- 「完成する」という概念を捨てなければなりません
RPの場合(プロジェクトマネージャー、プロジェクトマネージャー)
- RPはバックログ(未処理のタスク)を追跡する必要があります。 これは非常に大きな仕事です。
- RPは、バックログが受信したい内容を正確に反映していることを毎日確認する必要があり、2番目は受信したい順序です。
- チームが大きくなるほど、難しくなります。 優れた8ペアRPは非常にまれです。 8ペアすべての作業を常に占有するには、一生懸命働く必要があります。
- RPは、開発者の作業をタイムリーに受け入れる必要があります。 仕事が完了後の翌日に受け入れられない場合、彼らは非常に悩まされます。
- RPは、タスクを計画する際に短期および長期を考慮する必要があります。
- 開発者は、RPを隣に配置したいと考えています。
人を雇う
何をする必要はありませんか?
- 開発者へのインタビューで受け入れられている「ベストプラクティス」は完全に誤りです。
- 5時間部屋に人を置いて、10人の従業員にインタビューを行う必要はありません。
- 特定の技術スキルをテストする必要はありません。 特定の技術を知ることです。 つまり、iOS用のプロジェクトがあり、そのような知識を持つ従業員が入ってきた場合、それは良いことですが、特別に彼を探す必要はありません。 明日、iOSのプロジェクトが終了するという事実のため、Android向けの作成を始めましょう。iOSのスペシャリストとはどうするのでしょうか。 それは、学習し、コミュニケーションする人の能力に焦点を合わせるべきです。
- あなたがEPに従事したい場合、コミュニケーションスキルを無視することはできません。 候補者がスーパースペシャリストのように見えても、コミュニケーションが難しい、またはフレンドリーに見えない場合でも。
- 雇用は盲目的であってはなりません。 多くの場合、インタビューはコーディングスキルのテストなしで行われます。 どうやってこのように人を雇うことができますか? それは意味がありません。
どうやって人を雇うの?
最初の部分はペアインタビューで構成されています。 約45分。 たぶんSkypeでも、通常のデスクトップでライブする方がいいでしょう。- 現在利用可能な通常の作業タスクを一緒に解決します。 これは一般的な概念に関するものであり、特定の技術に関するものではなく、問題解決スキルに関するものです。
- あなたは良い解決策を提供することができますが、共感(他の人はあなたを聞いていますか?)そしてコミュニケーションはより重要です。
- インタビューの最初の部分には、非常に厳しい選択基準があります。 候補者は一定数のポイントを獲得する必要があります。 得点する場合は、2回目の選択に来ることをお勧めします。
- このラウンドは、より具体的なスキルを特定することを目的としています。
- 「文化的適合」(候補者が「文化的」かどうかを確認)。
- インタビューの最後に、候補者にこの人とペアを組む6か月の準備ができているかどうかを尋ねます。 候補者は彼を待っているものを理解しなければなりません。 私たちはあなたが人々と仲良くなることを確認したいです。
したがって、この方法で検証する3つのことがあります。
- プログラミングスキル。
- コミュニケーション能力。
- 開発者との協力のスキル。
インタビュー中に人々に何を求めますか?
- プログラミングおよびソフトウェア開発の基本スキル。
- 新しいスキルの開発に対する好奇心と飢え。 これは私たちの仕事の領域に入る重要な性格特性です。
- 「わからない」と言う能力。 これを言うのは便利ですか? 自分の無知を認める能力こそが学ぶ唯一の方法であることを理解しなければなりません。
- p。3の裏側: 「何が起こるか試してみよう」と言う欲求。
- パーソナリティ。
- 最善のアドバイスを提供できるという自信と、クライアントがそれを無視できるという理解。
そのため、特定の技術スキルを求めていません。 これはすべて非常に矛盾しています。 私たちはあなたが今日持っているものについてあまり心配していません。 さらに重要なのは、今後数か月で何かを手に入れる能力です。