Open2

📖見習いパターン(Apprenticeship Patterns)

mossan_hoshimossan_hoshi
  • ソフトウェアエンジニアのレベルを上げる(ジャーニーマンやマスターを目指す)ためのノウハウをパターン形式(GoFデザインパターンやマーティン・ファウラーのリファクタリング本のような感じ)で紹介しています
  • ターゲットは駆け出しエンジニア🔰。ただし成長に悩みを抱える中級エンジニアにも有効です
  • 本書ではエンジニアの成長段階を中世のギルド職人的な世界観を応用して以下の3種類で表現しています
エンジニア種別 スキルレベル 概要
見習い職人 初級(駆け出し🔰) マスターや他の職人と共に小さなチームに属し、ペアプロや開発コミュニティなどを通して技術を磨く
旅人(ジャーニーマン) 中級(約3年以降) - マスターの称号ともいわれる「マスターピース」をまだ作ったことはないエンジニア。
- 自ら色んなマスターの元を渡り歩き技術の幅と深さを深めていく。
また、見習い職人を導く立場でもある
マスター ウィザード級🧙‍♂️ その業界をリードするようなつよつよエンジニア

第1章 はじめに

  • この本の目標の 1 つは、ソフトウェアを作成するのが大好きな人々が自分の技術に集中できるようにすることです

ソフトウェアクラフトマンシップの10の特徴

  1. 成長マインドセット
  2. 変化に適応
  3. 独断的でなく実用的
  4. 知識は貯めこまずシェア
  5. 実験して積極的に失敗
    • 自分の間違うパターンを早めに把握
  6. 主体的
    • 状況に流されず、自ら道を切り開く
  7. 集団ではなく個人に焦点
    • 組織の中でのし上がろうという人間ではなく、自分のスキルを上げたいと思う個人の集団としての組織
  8. 包括性。あらゆる技術から最良のアイデアを抽出
  9. プロセス中心ではなくスキル中心
    • 正しい手続きではなく、高いスキルを発揮する事に注力する
      • チームの1人1人はスキルレベルはバラバラ。各人が確認の最高レベルのスキルを発揮
  • ジャーニーマンとは?
  • この本のパターンを通して目指すもの
  • マスターになる前段階
  • マスターになるとは?
    • 自分の仕事だけでなく業界全体を推進させる存在
    • マスターは優れたスキルの獲得、使用、および共有を、ソフトウェア職人としての最も重要な部分と見なす

第2章 カップを空にする

パターン名 対象者 概要
あなたの最初の言語 駆け出しエンジニア🔰 まずは最初覚える言語を慎重に選びましょう。そしてそれを研ぎ澄まし、今後数年間のメインの武器として使えるようにしましょう
白帯 最近成長を感じていない中級エンジニア いったん既存の知識を忘れ、まっさらな気持ちで新しい言語、事柄を学びましょう
熱意を解き放て🔥 全員(特に駆け出しエンジニア特に) 自分の学習に対する熱意を維持してください。熱意は周囲に伝搬し学習を加速させせます
実用的なスキル 全員 自分の履歴書を定期的に見返して書いてある主要スキルが今の組織や世間的に役立つかをチェックしてください。これを習慣化する事で伸ばすべきスキルが見えてきます
無知をさらけ出す 全員 - 分からないことを質問するのをためらわないで下さい。
- 自分が理解できていない領域を5つ書き出してみてください
自分の無知に立ち向かう 全員 知識が不足している箇所(「無知をさらけ出す」の結果)を積極的に埋めてください
ディープエンド 全員 - 自分の能力でできる最大限難しい事に挑戦し続けましょう
- 一時的に溺れる事になりますが、それを乗り越えるとより成長できます

第3章 長い道のりを歩く

第4章 正確な自己評価

第5章 永久学習

肘をこする

  • ペアプログラミング

床を掃く

  • 単純で魅力的ではないが、必要なタスクにボランティアとして参加する。
  • 小さな勝利を収める
  • 伝統的な見習いの役割を果たすことで、謙虚さと先輩職人への敬意を育むことができました。ボブ・マーティンおじさんが部屋に入ってきて、ゴミがあふれているのを見て、ゴミ袋を変えたのを覚えています。恩師
  • 謙虚さと先輩職人への敬意を育む
  • ボブ・マーティンおじさんが部屋に入ってきて、ゴミがあふれているのを見て、ゴミ袋を変えたのを覚えています。
  • 多くのことを達成できる唯一の人は、知識をひどく欲しがり、状況がまだ好ましくないときにそれを求めている人だけです。
  • 好条件は決して訪れません。
  • ソフトウェア開発は次の2つの主要な活動で構成
  • 学習とコミュニケーション
  • 練習、練習、練習.
  • ジャーニーマン、そして最終的にマスタークラフツマンに移行するには、フィードバックループを作成するスキルと、自分の弱点を熟知している必要があります。

帯域幅を拡張

  • 知らないことから稼ぐ
  • 興味深い情報の海で迷子になり、実際にソフトウェアを作成することに戻れない人もいます
  • 学習は加速しますが、開発速度が遅くなるため、数か月以上適用すると利益が減少します。

練習、練習、練習

  • 型(Kata)
  • るコーダー道

壊れやすいおもちゃ

  • 「無能のレベル」に昇進し
  • 失敗の仕方を学ぶ
  • 失敗は避けられません。遅かれ早かれ誰にでも起こります。の実際、何事にも失敗したことがない人は、自分の能力の限界に挑戦することを避けているか、自分の過ちを見逃すことを学んでいます。
  • 激しいトレーニングの後に筋肉痛に耐えなければならないアスリートのように、ソフトウェア開発者は何か新しいことを学ぶことに伴う精神的不協和に耐えます。
  • 何冊かの本と勉強に費やす時間を含める必要があります.し

リーディングリスト

  • 学習者は独自のカリキュラムを作成します。
  • 読書リストを維持して、読む予定の本を追跡し、読んだ本を覚えておきます。
  • ShareWhatYouLearnパターンの精神に則り、リストを公開スペースに保存することを検討してください。
  • このパターンの目的は、潜在的な知識の洪水に優先順位を付けてフィルタリングする方法を提供することです。
  • 適切なタイミングで適切な本を読むことも重要です。そうすることは、真に理解するための経験や知識の深さを持たないたくさんの本をかき回すよりもはるかに強力です.
  • タイミングは、本の経験に大きな影響を与えます。

第6章 カリキュラムを構築する

第7章 結論