Slide 1

Slide 1 text

©Fusic Co., Ltd. 1 Ұੜ͓͖͍֮͑ͯͨ ʮγεςϜ։ൃʹίϛϡχέʔγϣϯʯ ʙॳΊͯͷ࣮຿Ҋ݅ৼΓฦΓLTʙ 2024.04.23 Mai Miyazaki @maimyyym Money Forward Tech LT⼤会 vol.1

Slide 2

Slide 2 text

©Fusic Co., Ltd. 2 宮崎 真⾐ Miyazaki Mai(27) 名前で呼んでください! @maimyyym ◉ I am - IDDM(Insulin Dependent Diabetes Mellitus) 3歳発症 〜Now - 元百貨店スタッフ(Beauty Counselor) - 管理栄養⼠(養成校卒業・資格保持のみ) - 2023年10⽉〜Fusicにjoin🎉 ◉ Skill - PHP / AWS / TypeScript ◉ Comment - 家計事情:来⽉はエンゲル係数を下げたい ⾃⼰紹介 はじめに 技術開発部⾨ エンジニア 株式会社Fusic

Slide 3

Slide 3 text

©Fusic Co., Ltd. 3 CONTENTS 「システム開発=コミュニケーション」のための 1. 前提、私の初案件のあらまし 2. 開発者同⼠のコミュニケーション 3. 使う⼈へのコミュニケーション 4. コミュニケーションのための技術⼒

Slide 4

Slide 4 text

©Fusic Co., Ltd. 4 前提、私の初案件のあらまし こんなことをやっていました 1

Slide 5

Slide 5 text

©Fusic Co., Ltd. 5 この度、めでたく! 前提、私の初案件のあらまし 🎊 「初めての実務案件」を終えました!!

Slide 6

Slide 6 text

©Fusic Co., Ltd. 6 ⼀⽣に⼀度の「初めての実務案件」 前提、私の初案件のあらまし ▼ 初案件の概要 - Laravelを⽤いたWebシステム開発 - Fusicの特徴は併⾛型のサービス開発 - 要件定義から保守運⽤まで全てFusicで担当することが多い - 本案件も、もれなく! - 開発期間は3ヶ⽉半、私は2ヶ⽉⽬からjoinしました

Slide 7

Slide 7 text

©Fusic Co., Ltd. 7 やっていたこと、ぶつかった壁 前提、私の初案件のあらまし ▼ 何をやっていたの? - 最初の1週間は簡単なCRUD機能を実装

Slide 8

Slide 8 text

©Fusic Co., Ltd. 8 やっていたこと、ぶつかった壁 前提、私の初案件のあらまし ▼ 何をやっていたの? - 最初の1週間は簡単なCRUD機能を実装 - 1⽇1PR、でサクサク進んだ。

Slide 9

Slide 9 text

©Fusic Co., Ltd. 9 やっていたこと、ぶつかった壁 前提、私の初案件のあらまし ▼ 何をやっていたの? - 最初の1週間は簡単なCRUD機能を実装 - 1⽇1PR、でサクサク進んだ。・・・簡単かも?

Slide 10

Slide 10 text

©Fusic Co., Ltd. 10 やっていたこと、ぶつかった壁 前提、私の初案件のあらまし ▼ 何をやっていたの? - 最初の1週間は簡単なCRUD機能を実装 - 1⽇1PR、でサクサク進んだ。・・・簡単かも? - その後は最後まで、とある機能にかかりっきりに

Slide 11

Slide 11 text

©Fusic Co., Ltd. 11 やっていたこと、ぶつかった壁 前提、私の初案件のあらまし ▼ 何をやっていたの? - 最初の1週間は簡単なCRUD機能を実装 - 1⽇1PR、でサクサク進んだ。・・・簡単かも? - その後は最後まで、とある機能にかかりっきりに - どんな機能? - 「誰がやっても時間がかかる」 - 「システムのコア機能で特に難しいところ」

Slide 12

Slide 12 text

©Fusic Co., Ltd. 12 やっていたこと、ぶつかった壁 前提、私の初案件のあらまし ▼ 何をやっていたの? - 最初の1週間は簡単なCRUD機能を実装 - 1⽇1PR、でサクサク進んだ。・・・簡単かも? - その後は最後まで、とある機能にかかりっきりに - どんな機能? - 「誰がやっても時間がかかる」 - 「システムのコア機能で特に難しいところ」 本来解決したいことを⾒失ったPR ロジックが複雑になり、読みづらいコード

Slide 13

Slide 13 text

©Fusic Co., Ltd. 13 壁は乗り越えた 前提、私の初案件のあらまし ▼ たくさん助けてもらった、学ばせてもらった - リファクタの嵐で嬉しかった - PRを出したらマージ前にコードを改善 - 同じ⽬線でディスカッションできた - コードの設計・構造・⽅針の認識合わせで 決して置いていかれることがなかった

Slide 14

Slide 14 text

©Fusic Co., Ltd. 14 壁は乗り越えた 前提、私の初案件のあらまし ▼ たくさん助けてもらった、学ばせてもらった - リファクタの嵐で嬉しかった - PRを出したらマージ前にコードを改善 - 同じ⽬線でディスカッションできた - コードの設計・構造・⽅針の認識合わせで 決して置いていかれることがなかった 何より感じたのは、「システム開発=コミュニケーション」

Slide 15

Slide 15 text

©Fusic Co., Ltd. 15 開発者同⼠のコミュニケーション 「システム開発=コミュニケーション」その1 2

Slide 16

Slide 16 text

©Fusic Co., Ltd. 16 どういうこと? 「開発者同⼠のコミュニケーション」のためのシステム開発 どういうこと? ⾃分が分かるからよい、ではない

Slide 17

Slide 17 text

©Fusic Co., Ltd. 17 どういうこと? 「開発者同⼠のコミュニケーション」のためのシステム開発 そのために⼤切なこと とにかく認知負荷を下げる 他のメンバーが理解できるコードを書く

Slide 18

Slide 18 text

©Fusic Co., Ltd. 18 とにかく認知負荷を下げる 「開発者同⼠のコミュニケーション」のためのシステム開発 - 読めば分かる命名、適度な改⾏ - メソッドを切り出す - 単⼀責任の原則はコードの⾒通しも向上させる - 細かいことでも書き⽅を統⼀ - 重箱の隅をつくことは⼤事 - プロジェクト全体の⽅針に従う - メンバーのことを考える=認知負荷減少=バグ対策

Slide 19

Slide 19 text

©Fusic Co., Ltd. 19 他のメンバーが理解できるコードを書く 「開発者同⼠のコミュニケーション」のためのシステム開発 - そのコード、明⽇記憶を失っても理解できる? - 開発メンバーの⼊れ替わりはある。他の開発者や新しくjoinする⼈、 ひいては明⽇の⾃分が理解できるか⾃問⾃答しよう - 不必要なコメントは書かないが、必要なコメントは書き残す - それが何をしているか?は読めば分かるコードを書く - そのメソッドや書き⽅が必要となった背景・理由はコメントを残す - つまり「分かりやすい」=認知負荷減少

Slide 20

Slide 20 text

©Fusic Co., Ltd. 20 使う⼈へのコミュニケーション 「システム開発=コミュニケーション」その2 3

Slide 21

Slide 21 text

©Fusic Co., Ltd. 21 どういうこと? 「使う⼈へのコミュニケーション」のためのシステム開発 どういうこと? そのコードはユーザーにどのような影響をもたらす? あるいは、ユーザーを理解したコードを書いている?

Slide 22

Slide 22 text

©Fusic Co., Ltd. 22 どういうこと? 「使う⼈へのコミュニケーション」のためのシステム開発 そのために⼤切なこと 開発者同⼠だけの仕様理解に陥らないこと コードを書かないための仕様理解・運⽤フローの検討

Slide 23

Slide 23 text

©Fusic Co., Ltd. 23 開発者同⼠だけの仕様理解に陥らないこと 「使う⼈へのコミュニケーション」のためのシステム開発 - 開発者は仕様を理解しすぎている - 何度も⾏う動作確認により開発者にとってはその仕様が当たり前 - こうすればこう動く、をユーザーは本当に理解しているか - 必要に応じてUIの変更・追加を検討しよう - 知識の呪い(Curce of Knowredge)に陥るな! - 開発メンバーの誰も気づけない可能性は0ではない - そのためのE2Eテストでもあると感じた

Slide 24

Slide 24 text

©Fusic Co., Ltd. 24 コードを書かないための仕様理解・運⽤フローの検討 「使う⼈へのコミュニケーション」のためのシステム開発 - ロジックが難しくなったら、仕様を振り返る - その機能=PR(≠コード)によって解決したいことは何? - 難しい条件分岐はいらないかも - 運⽤フローを変える選択肢を考える - 難しい実装より運⽤フローの改善 - ユーザーを理解する・歩み寄ることがコードの減少 =実装スピードの向上につながる

Slide 25

Slide 25 text

©Fusic Co., Ltd. 25 コミュニケーションのための技術⼒ エンジニアにとって⼤切なのは「コミュ⼒>技術⼒」ということ? そんなことはない、エンジニアに「技術⼒」は必要不可⽋。 4

Slide 26

Slide 26 text

©Fusic Co., Ltd. 26 ここまでの内容のまとめ コミュニケーションのための技術⼒ 開発 メンバー ユーザー 関わる全ての⼈のことを考えてコードを書こう

Slide 27

Slide 27 text

©Fusic Co., Ltd. 27 ここまでの内容のまとめ コミュニケーションのための技術⼒ 開発 メンバー ユーザー 関わる全ての⼈のことを考えてコードを書こう コミュニケーション つまり・・・ 技術⼒ は後回し? が⼤切で、

Slide 28

Slide 28 text

©Fusic Co., Ltd. 28 そんなことはない、技術⼒は必要不可⽋ コミュニケーションのための技術⼒ 【初案件での私は…】 開発メンバーやユーザーのことを考えた実装を 限られた時間内で実現する難しさ、⼒不⾜を感じた

Slide 29

Slide 29 text

©Fusic Co., Ltd. 29 そんなことはない、技術⼒は必要不可⽋ コミュニケーションのための技術⼒ 【⾔うは易し、⾏うは難し】 (私のような)新⼈のコードは難しくなりやすい。 仕様を実現し、実装をシンプルにする。 その⼿法をいかに知っているか=技術⼒が不可⽋!

Slide 30

Slide 30 text

©Fusic Co., Ltd. 30 そんなことはない、技術⼒は必要不可⽋ コミュニケーションのための技術⼒ 【とはいえ、”会話”に帰結する】 新⼈に不⾜する技術⼒を補うのは「助けを求める⼒」 15分悩んだら聞く「15分ルール」を何度でも意識しよう 結果的に、スピードも技術⼒も向上する

Slide 31

Slide 31 text

©Fusic Co., Ltd. 31 「システム開発=コミュニケーション」 コミュニケーションのための技術⼒ 技術⼒ コミュ⼒ これが難しい😵💫

Slide 32

Slide 32 text

©Fusic Co., Ltd. 32 まとめ 新⽶エンジニアが初案件で学んだ「システム開発=コミュニケーション」 エンジニアとして初めての案件、たくさんのリファクタとディスカッションを通してシステム開発を学んだ Point 01 ⾃分含め開発メンバーが理解できるコードを書こう。⽅針に従おう。認知負荷を下げることはバグ減少への道 Point 02 ユーザーを理解し、歩み寄ることでコード量を減らそう。そして知識の呪いに陥らないこと! Point 03 ⼈のための実装を実現するために技術⼒は必要不可⽋!⾜りない技術⼒は会話で補う。相互作⽤で⼒を伸ばそう Point 04

Slide 33

Slide 33 text

©Fusic Co., Ltd. 33 Thank You We are Hiring! https://recruit.fusic.co.jp/ ご清聴いただきありがとうございました