私は金融ソフトウェア会社を始めており、その過程でアジャイルの原則と方法を研究してきましたが、まだ対処していない開発の1つの側面は、開発者が新しいスキルとテクノロジーを開発に習得するための継続的なニーズをどこに合わせるかです。処理する。
ここ数年金融ソフトウェアに取り組む前は、3Dグラフィックプログラマーとしてビデオゲーム、GIS、バイオメトリクスソフトウェアに携わっていましたが、常に崖っぷちから飛び出し、その方法を理解する必要がありました。飛ぶ。私は常に成功していましたが、一度に100時間、何週間も何ヶ月も働いていた自殺をしなかったとしたら、私が生きている限り、生きるつもりはないでしょう。
3Dグラフィックスの革新的な要求があまりないソフトウェア会社を立ち上げた今、開発へのより包括的なアプローチを確立したいと思います。
たぶんアジャイルはこれに対処していないかもしれませんが、もしそうなら、私はどこで見つけられませんでした、そして私がこれに関して誰かが持っているどんな知識や専門知識や経験にも感謝します。
これはアジャイルやソフトウェアエンジニアリングとはあまり関係がありません。これは、どの企業のどの企業にも当てはまります。トレーニングの時間を確保する必要があります。限目。
アジャイルには「持続可能なペース」という考え方があります。つまり、チームが無期限に持続できるものよりも懸命に作業するべきではありません。つまり「クランチタイム」はありません。これはトレーニングによっても尊重される必要があります。したがって、チームの持続可能なペースは、「休憩なしで5時間以内、1日あたり9時間以内、1週間あたり40時間以内」であり、トレーニングに10%の時間を提供したい場合は、プロジェクトを36時間計画する必要があります。
しかし、繰り返しますが、これはアジャイルとは何の関係もありません。それは単なる常識であり、小学校の数学です。
個人的には、1日30分、1週間に1日、1四半期に1週間を許可することで、チームはさまざまなサイズの知識をすばやく安定したペースで習得できると思います。
また、知識の伝達を支援する、つまりチーム間の知識レベルの違いを滑らかにするためのアジャイルプラクティスもいくつかあります。
ペアプログラミングとMobプログラミングは、継続的なコードレビューだけでなく、継続的な知識共有も提供します。ピンポンペアリングは、1人が「キーボードを独占する」ことを防ぎます。無差別のペアリングはチーム全体に知識を広げ、無差別のチームは会社全体に知識を広げ、すべての開発者がすべてのプロジェクトとすべてのコードベースを確実に知るようにします。また、コードベースの高度な標準化にもつながります。レトロスペクティブの主な焦点は、開発プロセスに関するフィードバックを提供し、それに応じて調整することですが、珍しい問題やその解決方法を伝えるためにも使用できます。
言うまでもなく、雇用主は広範な図書館、ACM、Springer、IEEEなどへの有料サブスクリプション、および学習するための静かな部屋と、教えるためのより広い部屋を提供する必要があります。ホワイトボードやフリップボードのほかもちろん、トレーニングだけでなく、どこにでもあるプロジェクターは一般的に賢明です。
JörgW Mittagによる のほとんどに同意しますが、「これは実際にはアジャイルとはあまり関係がない」という記述には同意しません。いくつかのアジャイル技術は、個人とチームの学習と開発をサポートします。
アジャイル手法は、増分または連続フローに基づく傾向があります。どちらの場合も、優先順位、価値、依存関係などの要因を考慮して作業が順序付けられます。焦点は短期間の作業にあるため、チームは提供するために必要な知識を特定でき、知識の不足が問題である場合は、その知識をジャストインタイムで取得するための計画を立てることができます。可視性と透明性もさまざまなアジャイル手法の重要な側面になる傾向があるため、利害関係者は、チームが何に取り組んでいるか、また、価値を提供する能力を向上させるためにどのように取り組んでいるかを確認できます。広範な学習が必要な場合は、近い将来または現在の反復に計画することができます。
チームのメンバーが知識を得たら、ペアリングとモビングに関するテクニックがあります。ペアプログラミングは、他の方法にも適用されているエクストリームプログラミングの主要なプラクティスであり、とりわけ学習を促進するように設計されています。 Mobbingはこれを2人以上に適用しています。チームの緊密なコラボレーションと機能横断性は、サイロがなく、この情報が普及していることを意味します。
即時の作業に必要なものを学習するための計画を立て実行する能力があっても、知識のあるチームメンバーがいることは非常に重要です。ツール、テクノロジー、ドメインについてある程度の既存の知識を持つ人々がいると、彼らは学習タスクを引き受けるときにより多くの情報を得ることができ、他のチームメンバーに知識を広めるときにより効果的になります。
スキルを習得するために時間を割り当てたいスプリントの概念実証タスクを計画します。アクセシブルなHTMLテーブルの作成方法を学ぶなど、非常に具体的なことに焦点を当ててください。ストーリーに必要なスキルを習得するまで、概念実証タスクをスケジュールし続けます。各POCタスクにいくつかのストーリーポイントと期限を指定して、適切にタイムボックス化し、スプリントの最後に進行状況を表示できるようにします。
では、経験豊富な開発者にとってストーリーが5ポイントにすぎない場合はどうでしょうか?多分それはそれぞれ8ポイントで3-4のタスクをとります。これらのPOCタスクを実行しても、ストーリーはまだ5ポイントしかない可能性がありますが、ストーリーとPOCタスクの合計が40ポイントになっても、少なくとも5ポイントのストーリーが40ポイントにならないように新しいスキルを学ぶ時間を確保しておきます。
スクラムには「スパイク」という概念があります。チームが新しいテクノロジーや機能を採用する場合、スパイクはその作業をカプセル化するためのストーリーです。したがって、アジャイルのストーリーはユーザーに焦点を当てた機能の一部ですが、スパイクの出力は、学習した内容のドキュメントと、実際のアプリケーションでそれを実践するための作業分解です。
実際には、これは少なくとも小規模なトレーニングを管理するのに適した方法であることを発見しました。スケジュールに説明責任を与えながら、開発者が新しいシステムやフレームワークに慣れるのに十分です。
他の回答ではこれが見られなかったため、多くの組織がギルド、チャプター、またはセンターオブエクセレンスのスキル領域を開始することを付け加えたいと思います。これらは、テクノロジーのような幅広いトピックでも、React Native Development。
とにかく、これらのグループは多くの場合、グループの人々が専門的に成長するのを助けるタスクを所有しています。これにより、仕事の外部に別のスペースが作成され、毎日それらのスキルを使用する人々と、クロストレーニングに関心のあるその分野外の人々の両方のためにスキルを強化および拡大します。これがこの問題の唯一の解決策ではありませんが、ますます一般的なものになりつつあるようです。
他のいくつかはすでに側面について言及しましたが、私はアジャイル環境での個人開発にどのように適合するかを共有したかっただけです。
これは最も簡単な方法であり、継続的な開発を行うのに十分な時間があるまで、各スプリントの容量を減らします。難しい部分は通常あなたの計画に固執し、さらに他に取り上げるべきタスクがある場合は開発を行うことです。緊急事態が発生した場合は、時々犠牲にすることができますが、それ以外の場合は犠牲にできません。
キャパシティを削減したため、このカテゴリで行うことは他のチームメンバーの直接的な関心事の一部ではなく、おそらくそれについて心配したり、個々のスプリントごとに計画を更新したりする理由はあまりありません。
私が見つけたのは、より大きな影響を与える何かを計画している場合(たとえば、スプリント中の2日間のトレーニング)、これを反映するようにスプリントを更新する必要があるということです。私はこれの理論的な解決策が何であるかはわかりませんが、誰かがこれで忙しいことを確認するために、ボードにトレーニングタスクタスクを置くだけだとよく目にします。
あるいは、特定のスプリントのスプリント容量を修正することもできますが、測定されたパフォーマンス/効率を人々が非常に注意深く見ない限り、私はこれを避けます。特に新しいチームでは、安定性はおそらく精度よりも価値があります。
アジャイルは一連の哲学であり、マニフェストを見てください、それがすべてアジャイルです。ですから、アジャイルが私の問題をどのように解決できるかを言うとき、アジャイルについてもっと(多く)学ぶことをお勧めします。アジャイルの具体的な実装を見てみましょう:SCRUM。 SCRUMには、スプリントとスパイクの概念があります。これら2つの成果物を通じて、学習のための予算を作成することが可能です。
スプリントを円グラフとして見る場合、優先度をトピックに基づいて分割できます。そのようなトピックの1つは...新しいスキルの学習です。
スパイクは、通常は学習を通じて何かの実現可能性を評価することを含む、スプリントに関する研究タスクです。
最後に、これまで行ってきたことはまだ決着がついておらず、作業中のことを何でもしながら学ぶことができます。その時点で、技術的な課題に対処するために、ストーリーポイントや能力を増やすことができます。
Agile Manifesto 自体から引用するには:
個人およびプロセスとツールの相互作用
包括的なドキュメントを介して動作するソフトウェア
顧客との契約交渉のコラボレーション
計画に従った変更への対応
強調は私のものであり、おそらくあなたに最も当てはまる部分を強調しています。
基本的に、よく訓練されたアジャイル開発者は、スキルセットを石化させる人よりも、変化する環境にはるかによく対応できます。
独自のアジャイルの定義を追加する場合、「顧客のコラボレーション」を組み合わせることもできます。アジャイルの最良の定義は、アジャイルの考え方に基づいたものであると思います。顧客(または環境)が根本的に変化した場合、どの程度うまく対応できますか?顧客とのコラボレーション環境を促進している場合、彼らは彼らが何をしているのかを知っているあなたのチームに既得権を持っています。