こんにちは、今年の 7 月に join した Web Developer の @yoshimaru46 です。
今回は、state
とprops
の違いがわからないくらいには React 初心者だった私が2ヶ月前に SPA のプロジェクトに join してキャッチアップする中で感じたことについてお話させて頂きます。
ちなみに言語歴はこんな感じです
- Java 2 年
- Ruby, Rails 1.5 年
- JavaScript 数ヶ月
先日の記事 で @ujihisa さんが「僕は Vim 暦 20 年くらいで、まだ初心者です。」と言っていたので、 まだまだ先は果てしないなぁと思います。
どんなプロジェクトだったか
参加したプロジェクトは既存のウェブサイトをフルリニューアルするプロジェクトでした。
規模が大きいうえにリニューアルで、相対的に新しい技術(The App Shell Model, The PRPL Pattern等) が数多く導入されていました。
後の運用に耐えうる土台づくりをしっかりしなければならない、という面でも高いフロントエンドスキルが求められました。
なぜ私がこのプロジェクトに
Quipperではフロントエンド専門のエンジニアは居らず、サーバーサイド出身でフロントもできるフルスタックなエンジニアがほとんどです。
もともと私は、フロントエンドに苦手意識があり、入社当時の 1on1 を振り返ると、「フロントエンドの技術力を伸ばすことをゴールにしたい」と言っていました。
そういった個人の目標を加味して頂いてか、既存のコードを React にリプレイスするというプロジェクトに join することになりました。
そこそこの規模が有りながらも、フロントとサーバーサイドが分断されておらず、両方にコミットできるのはフルスタックに活躍したいエンジニアにとっては恵まれた環境だと思います。
何もわからないところから
プロジェクト参加当初は、
- Redux の登場人物多すぎ
- TypeScript の型パズル解けない
と、普通のハマりポイントにしっかりハマり、
さらに、
など、理解すべきことが多く、ブラウザのタブが溢れていました。
どうやって勉強したか
最初は、基礎から何も無かったので、公式の資料を中心にやりました。
基礎がなんとなく理解できてからは、Udemy の良さそうなコースをやってみたりしました。(結構な頻度でセールをやっており、1300円くらいで買えたはずです。)
フロンドエンドの技術は移り変わりが早いですが、上記の講座は更新頻度が高く、体系的にまとめてあるので、概観を把握するのには良いと思います。
また、日本語字幕を英語字幕に変えることで、英語の勉強もできてる気持ちになれます。
周りのサポートで、できることが増える実感
独学で学べる範囲と実務で求められるレベルとは大きなギャップがありましたが、ペアプロを通して 2 人で 1 つの機能群を作っていくという形で進められたのでだいぶ気持ち的に楽でした。
Quipperでは、誰もが好きな時に好きな人とゆるくペアプロをしています。
Chrome DevTools の使い方やコマンド実行時の便利なオプションなど、どのようにデバックするのかを学べると、詰まった特に自力でできることが増えました。
わからないといえる環境
わからないことをわからないというのは、意外と難しかったりしますが、同僚のエンジニアが率先して「何もわからない...」と言ってるので、質問へのハードルが低く、心理的安全性 が高いです。
考え方や、仮説が誤っていた場合に、一次情報を元に「〇〇だから違いますね」と Fact based で議論できる環境もいいなぁと思います。
まだまだ貢献できていない悩みもあった
Quipperでは、レビューはフラットな関係性で行われます。
少しずつキャッチアップしてきたとはいえ、React初心者の私にとって、経験豊富な同僚が書いたコードは難易度が高く、レビュアーとして貢献できていない焦りがありました。
1on1 で相談すると、レビューの目的には大きく分けて、以下の3つがあることを知りました。
- 仕様通りに動作することを確認する(外的品質の担保)
- コードクオリティが、チームで合意できる一定の基準を満たすことを確認する(内的品質の担保)
- レビュワーとレビュイーがコードを読んで学ぶ、レビュイーが指摘を受けて学ぶ(教育)
このうち私ができなかったのは(2)で、「レビューができない」のではなく「コードクオリティを担保するためのレビューができない」のでした。
(2)ができなくとも、まずは仕様を満たして動いているか確認(1)し、同僚の良いコードを見て学ぶ(3)ことはできる、というアドバイスを貰い、できることから始めることにしました。
できることから貢献
レビュー以外でも、手が回っていない軽微なバグを進んで修正したり、ディレクトリを整理したり、できることから行動しました。
いきなり完璧を求めると挫折してしまいがちなので、できることからとにかく手を動かし続ける事が大事かなと思います。
まとめ
圧倒的に自分よりできるエンジニアに囲まれて、質問で相手の時間を奪うことに躊躇していた事もありました。
そんな気持ちに気づいてか「最終的にチームのベロシティがあがれば良いのです!」という言葉をかけてもらい、余計な気遣いがなくなりました。
相変わらず毎日わからないことだらけで質問しまくっています。
Quipperでは、チームで共に成長できる環境があります。
フロントエンドや SPA の経験が浅くてもやっていきたい仲間を募集しています!