■ 1. 仕事を進めるうえでのマインドセット
- Howだけ考えると複雑さを導入して仕事が増える:
- Howだけ考えると複雑さを導入して仕事が増える - そーだいなるらくがき帳
- 手段に没頭して手順書の保守や不要な会議などの偽の進捗に陥るとリソースを枯渇させてしまう
- Howという手段に没頭するのではなくWhyを常に問い直し問題の本質を捉えることが重要
- コーディングや会議そのものは価値ではなくエンドユーザーに価値を届けることのみが仕事であると定義し不要な機能や工程は徹底的に削ぎ落とすべき
- 自分たちの仕事が増えていないかという機微を感じ取り本質的でないと気づいた作業はその瞬間に辞める勇気を持ち技術を使ってビジネスを前に進めることに注力するのが本来の仕事
- 判断と決断の違いと決断のコツ:
- 判断と決断の違いと決断のコツ - そーだいなるらくがき帳
- データや情報を集めて正解を導き出すのが判断で情報が足りない中で答えを出すのが決断
- 理屈だけで片付かない不透明な状況で自らの意志で進むべき道を示すことが組織を前に進める力になる
- 決断を早くするコツは万が一失敗しても元に戻せる状態を作っておくこと
- やり直しがきくことならどんどん試して素早くフィードバックを得る
- 小さな決断をメンバーに任せていくことがチーム全体の成長と自律に繋がる
- 決断に迷ったときはまず条件を整理し次に小さく始めて失敗できる形にできないか検討する
- それが難しいなら周囲の知見を集めそれでも答えが出なければ無理に決めず時間を置く
- どうしても今重大な決断が必要なときは最もダメージが少ない道を選び抜く覚悟を固める
- 正解のない問いに立ち向かうには日頃からビジョンや哲学といった自分なりの指針を持っておくことが不可欠
- 決断は練習で上達するスキルだと心得て日々小さな決断を積み重ねる
- 時には痛みを伴う選択も引き受ける覚悟を持つことがリーダーとしての信頼を築く
- 当たり前にリリースしていく:
- 当たり前にリリースしていく ~ 新卒研修編 - Classi開発者ブログ
- リリースを当たり前のことにするためには事故を未然に防ぐ仕組みと万が一の際に迅速に復旧できる仕組みの両面を整えることが不可欠
- コードには変更を受け入れる遊びを持たせて影響範囲を最小化しアプリケーションを最も理解する人が振る舞いを監視して異常を早期発見する必要がある
- YAGNIを設計を怠る言い訳にせず納期などの制約内で最大限考え抜いた上で早めにチームを頼って本質的な課題分解を行う姿勢が求められる
- 破壊的な変更を避け小さく部分的にリリースすることでいつでも元に戻せる状態を維持し成功体験を積み重ねて自信を築くことが成長への近道
■ 2. エンジニアとして成長し続けるための指針
- ソフトウェア開発者に必要な考え方:
- ソフトウェア開発者に必要な考え方 / Necessary mindset for software developers - Speaker Deck
- ソフトウェアはリリースされユーザに届いて初めて価値を持つため目的を軸にタスクを細分化し完成を明確に定義することが不可欠
- 指示を待つのではなく主体性を持って自らの意思で仕事を完遂する自律性が求められ環境順応型から自己主導型の知性へと成長する必要がある
- 未完了のコードは無価値な在庫と心得て先人の知恵を体系的に学びつつ知識を実践を通して習慣へと昇華させ成果を出し続ける
- 強いエンジニアのなり方:
- 強いエンジニアのなり方 - フィードバックサイクルを勝ち取る / grow one day each day - Speaker Deck
- 強いエンジニアとは問題解決ができる人であり日報や週報を通じて日々の仕事を振り返り経験に複利を効かせる内省の習慣が成長の源泉となる
- 解決したい問題にフォーカスし問題を実行可能な最小単位まで分解してスコープを調整することで自然と適切なサイズでのリリースが可能になる
- コルブの経験学習モデルを意識し具体的な経験から法則性を見出す抽象的概念化を繰り返すことでエンジニアに不可欠な思考力を磨く
- 成長のチャンスは常に目の前にあり誰の許可も得ず昨日の自分に誇れる今日の自分を目指して一歩ずつ積み重ね続ける姿勢こそがいつか偉業へと繋がる道になる
- 目の前の仕事と向き合うことで成長できる:
- 目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts - Speaker Deck
- 能力は知識と経験を掛け合わせて知恵へと昇華させることであり未知の状態から習慣化まで段階的にステップアップする反復学習が不可欠
- 会社が育ててくれる時代は終わったためプロとして計画実行力や言語化力や問題解決能力を仕事の中で主体的に鍛えソフトウェアを通じた課題解決力を高める必要がある
- 適切な問題設定と完了の定義の明確化を重視し日報や週報による内省や理想のプログラマを演じるロールプレイングを通じて日々の仕事にフィードバックサイクルを組み込むことが成長の近道となる
- 始めるのに遅すぎることはなく毎日一つ知らないことを見つけて能力へと変え昨日の自分に誇れる今日の自分を目指して一歩ずつ強くなる姿勢が重要
- 問題を解決するために必要な習慣:
- 問題を解決するために必要な習慣 / developer-lifehack - Speaker Deck
- Howに囚われて仕事を増やす中毒症状を脱しWhyを軸に不要な作業を削ぎ落とし精神論ではなく始めやすく辞めやすい仕組みで課題を解決する
- 自律とは主体性を持って働くことであり5W1Hを整理して他人に依頼できるまたはやる気に関わらず一歩目が踏み出せる最小単位まで問題を具体的に分解や言語化する
- 手が付かないタスクは無理をせず現実を受け入れ納期の設定や他人を巻き込むことで優先度を管理し時には豊かな人生のために諦めるという選択も適切に行う
- 遠くへ行くなら皆で進む精神を持ち過去の評価である信用ではなく未来を信じる信頼をベースに適切なサイズの課題を仲間とシェアしてチーム文化で解決していく
- 適切な問題設定と小さくリリースするということ:
- 適切な問題設定と小さくリリースするということ / release small - Speaker Deck
- ソフトウェアはユーザに届いて初めて価値が生まれるため未完了のコードを無価値な在庫と心得て完璧主義を捨て市場のフィードバックを得るための早期リリースを最優先すべき
- ユーザーストーリーの5W1Hを整理しチケットが巨大な場合はスコープを調整してリリースの単位が最小になるようにタスクを分解することで着実な成果の積み上げを可能にする
- リリースへの恐怖をやる気で克服しようとせずサービスを壊さず安全にリリースできる手段を整え小さく失敗して改善のサイクルを高速に回せる環境を仕組みで解決する
- Unix哲学の一つのことをうまくやる精神を貫き最速かつ最小の手段でプロトタイプを試作や評価し自分たちにしか直せない目の前のコードを通じて価値を提供し続けることが本質
■ 3. 問題解決の本質を突く思考法
- 仕事を前に進めるためのコツ:
- 仕事を前に進めるためのコツ - 判断と決断と共有 / Aim for the goal - Speaker Deck
- 仕事を前に進めるには当事者意識を持ち問題を深く理解した上で5W1Hに基づく具体的なタスクへ分解することが重要
- 意志決定では論理的な判断と不透明な状況下での決断を区別し自らがボトルネックにならないよう迅速に動くことが求められる
- 円滑な共有のためSBIモデルを活用した期待値調整や日々の些細なコミュニケーションを積み重ねることが不可欠
- これらの知識と行動によってできるという経験を得ることで問題を解決し大きな成果を生むことが可能になる
- 抽象化をするということ:
- 抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization - Speaker Deck
- 抽象化とは複数の具体から共通項を見つけて名前をつけるスキルであり五感で感じる具体と往復することで対象の理解を深め一言で本質を伝えることを可能にする
- ソフトウェア開発はこの往復そのものであり抽象的な要求を具体的仕様へ落とし込み具体的な業務知識を設計へと抽象化するプロセスの自覚的な反復こそがエンジニアの仕事
- 抽象化能力は知識と経験に紐づく後天的なスキルであり日々の仕事で理想のプログラマを演じ成功体験を積み重ねることで誰でも再現性のある能力として獲得できる
- 無知の知から学びを始め目の前の一段を刻むような地道な実践を積み重ねることが自信を築く鍵となり自らの意思で人生の針を進める力へと繋がる
- DBのスキルで生き残る技術:
- DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所 - Speaker Deck
- データベースの寿命はアプリケーションより長くドメイン背景を理解せず過去のパターンを回答しがちなAIに代わり人間が前提条件から見直すダブルループ学習で設計することが不可欠
- 主観的な馴染みやすさであるEasyな設計に逃げず客観的に概念を最小化したSimpleを追求し事実のみを保存して重複や不整合や不要なNULLを徹底的に排除する
- 1テーブル1責務の原則やシステムを複雑化させるUPDATEを最小限に抑えるイミュータブルデータモデルの採用がAIによって高速に肥大化する開発現場において変化に強い構造を維持する鍵となる
- データモデリングは複利で効く一生モノのスキルでありAIに作業をサポートさせつつ人間が物理世界の要求を整理して最適な要件へと昇華させることが未来の自分を救うことにつながる