はじめに
私はエンジニアになってまだ4ヶ月のいわゆる新人枠。それでもこの4ヶ月、どのようなマインドや仕組みを用意して進めていけば圧倒的成長に繋がるのかを自分なりに試行錯誤し、実行してきました。
そこで、私の失敗談やそこから得た経験が、新人エンジニア同志の方の参考になればという思いで今回の記事を書きました。
周りのエンジニアとのレベルの違いを感じすぎて「自分なんて...」「こんなことを言ったら」と引っ込みがちだった私が圧倒的成長を目指してやったことが、エンジニアになりたての誰かのところに届けられたらうれしいです。一緒に圧倒的成長しましょう!
できなくて当たり前。どんどんさらけ出そう
先輩エンジニアに言われてハッとした言葉があります。「初めたばかりなんだからできなくて当たり前」
できないことは恥ずかしいという考えは捨てて、積極的にできない自分をさらけ出すことが大事だと学びました。 それまでの私は、「詰まったけど、質問した時のあれ試した?これ試した?に備えなきゃ」と3時間くらい一人で格闘したり、そんなこんなで進捗が遅れている自覚がありつつもそれを共有せず自分の中だけで焦ってしまっているというすごくクローズドな進め方をしてしまっていました。 でもこの言葉を聞いてからは、わからないことがあれば聞く、進捗が遅れていたら相談する、悩みや苦手なこともオープンに聞いてみる、これらを実行し始めてから成長速度は一段階ギアが上がった気がします。
では、「具体的にはどうさらけ出していくの??」 というところをこれから挙げていきます。
悩みすぎない。質問するまでのルールを決めよう
わからないことは聞く!と頭で分かっていてもエラーが出る度すぐ聞いていたら自分の頭で考えられないエンジニアになってしまうし、かと言って悩みすぎて時間を無駄にすることはできないですよね。
このジレンマを解消するには質問するにあたってのルールを設けて、それを周りに共有しておくというのがとてもよかったです。仕組みで解決!
ルールは自分なりに草案を作成し、メンターや先輩に見てもらいましょう。修正したルールを改めて先輩に共有することで、今後は質問のルールが先輩との共通認識になりグッと質問のしやすさがアップします。もうこれで、「今聞いたら悪いかな?」「こんなことでって思われないかな」などという邪念を気にせず質問ができるようになります。
ありがたいことに「そんなの気にしないでなんでも聞いて!」と言ってくれる優しい先輩エンジニアが周りにもいるのですが、自分が必要以上に考えすぎてしまう属性なので、ルール化することで質問に対する心理的ハードルを下げました。
私は下記のルールを作る前は、「モデルとコントローラーで情報を渡すやり方がわからない」と、Googleで調べて調べてデバッグしながらひたすら試して....と気づいたら2時間経っていたなんてことがよくありました。決心がついて質問しようと思っても、失礼がなく、何に困っているのかわかりやすい質問文を30分ほど打っては消してを繰り返しまた時間が過ぎていくという最悪の時間の使い方をしていました。
ルールを作ってからは、決められた時間までには必ず質問する材料が揃っている状態になるので「なんて質問しよう??」みたいに悩むこともなく、すぐに解決することができてその分の時間を次の課題やアウトプットに当てることができて生産性が上がりました。
質問する際の自分ルール
参考までに、質問をする際の自分ルールです。
開発時にすること
- 期待する動作と起っている問題を書き出す
- 書き出した物を5分以内にまとめて質問する
- 試したことを書き出す
質問する際
- 5分以上経ったら、ひとまず先輩に直接、もしくはslackで声をかける
- 悩み始めて30分経過or試したことが5個以上
聞いてる時にすること
- メモを取る
- 分からなければその場で止める
- 最後に今からやるべきことを確認する
聞くのは勇気の要ることだけど、ちゃんと考えてから質問することは歓迎してくれるはず!
どんどん質問して良質な知識とスピードを得ましょう。
ペアプロをお願いしてみよう
質問をして挑んでみてはいいものの、やっぱり全然歯が立たないという時もありますよね。
一度聞いたし頑張らないと!と試行錯誤するのは大事ですが、いくらやっても解決しないときはペアプログラミングをお願いするのもとても有効的です。
ペアプロをするのに心理的ハードルがあるという方は、上で挙げたの質問のルールのように自分ルールを作って先輩エンジニアにお願いすると良いかと思います。
ペアプロは相手の時間をある程度いただくことになるので、無駄な時間が発生しないように準備は念入りにしておきたいところですね。
ペアプロまでにすべき準備
- ペアプロをしたい旨を申し出る
- スケジュール調整
- コードを共有して進めるか、自分のローカル環境を一緒に見ながら進めるか事前に確認
- 共有する場合はGitHubにコードを[WIP]をつけてプルリクエストを作成などして共有できる環境を作る
- タスクの詳細と試したことを書き出して、事前に渡しておく
では、**実際どんな時にペアプロをお願いするの?**という疑問が聞こえてくるので、私が体験したペアプロケースを紹介しいたいと思います。
実際にペアプロをお願いしてみた時のお話し
最初Rubyのタスクだと思って進めていたらがっつりjQueryを使う内容だった時に、jQueryやJavaScriptを触ったことがない自分には調べたり仕組みを理解するのに時間がかかりすぎてしまい、ペアプロをお願いしました。質問をして一つ解決をしても次から次へと分からないことが出てきてらちがあかず、ペアプロをお願いすることにしたのですが、フロントエンジニアの先輩がjQueryのデバッグ方法や必要最低限つけるべき知識、逆にここでしか使わないから覚えなくてもいい知識を30分で教えていただきながら進めることができました。さらにはCSSで困っていたところもアドバイスを頂けたりと、私一人で進める3日分はくだらないほどの進捗と得られた知識がありました。
ペアプログラミングは二人で一つの課題を一緒に進めることができるので、一人で悩む数日分を30分から1時間ほどで解決できる素敵な開発手法です。相手の時間を奪ってしまうことを恐れるよりも、早く解決できた時間を使って、解決方法をアウトプットしたり他のことを学ぶ方が効率もいいです。悪いと思わず積極的にペアプロをお願いしてみましょう。
学んだことをpublicな場にアウトプットする
新人エンジニアは新たな発見や教訓に日々出会います。学んだことは小さいことから大きいことまでとにかくアウトプットして自分の脳内から出すように心がけてみましょう。
たくさんのエンジニアの目に触れるところで発言する
会社でチャットツールを使っているのであれば、できるだけ多くのエンジニアが見るところで今学んでいることや気になっている情報を呟いてみましょう。それだけでも周りのエンジニアから高品質な知見を得ることができたり、方向が違っていそうであれば早めに軌道修正できたりします。
少し勇気がいるけれど、得られるものが大きく、アウトプットをすることに慣れる小さなステップとなり得るので積極的に発言していきましょう。
発見や反省はQiitaやブログでアウトプットしよう
記事を書いて発信するとなると、ふわっとした知識も書いてるうちに再度調べて知見が深まったり、書くことによって記憶が定着します。また、書いたものを社内の人に共有することで今どういうことを学んでいるフェーズなのかを把握しもらえたり、先日教えたことをアウトプットしてくれたと喜んでもらえることもあります。さらに、コメントや編集リクエストを通して社外のエンジニアの知見やアドバイスを得られる機会まで生まれます。
発信することで得られるメリットがとても多いですね。
私はもともと記事を書くことに抵抗がありました。「こんな覚えたての知識で、これがベストプラクティスなのかも分からないのに世に出すなんて怖すぎる」と怯えていました。
そんな時にこちらの記事を先輩エンジニアが勧めてくれて、記事をアウトプットしていくことに積極的になることができました。
エンジニアの書類選考でQiitaが評価される?!現役転職エージェントが語る活用術 - Qiita:Zine
そして、自分がRailsや快適な開発環境をの構築をする時にいろんな記事を行ったり来たりするのに疲れた経験から初めての記事はすでに世の中に溢れかえっている環境構築系を強い気持ちで投稿した記事がこちら。
30分でできるRuby on RailsとGitHubやエディタまわりの環境構築 - Qiita
1いいねが早速ついて喜んでいたら、100,200,300といいねがついて記事を書く楽しさを早くも実感しました。今でも構築周りで困ったら自分でも見に行ったり、初めて環境構築するような人にリンクを送って一緒に見たり自分でも記事が役に立っていて書いてよかったなと素直に思います。
逆に今の課題は、先に挙げた記事で、
調べ物をして、5分間だけ書く。中途半端でもいいから投稿するイメージです。
を実現することです。
私は1つの記事を書くのに納得するまで時間をかけてしまいがちなので、考えすぎず調べたことを気軽に投稿するこを目標としています。
とにかくどんどんアウトプットをして、成長を可視化する。 エンジニアとして成長した時に、発信力までメキメキついていたらそれだけで付加価値が生まれるので小さいことから大きなことまで発信する癖を新人のうちにつけてしまいましょう。
小まめにフィードバックをもらおう
日々最大限の努力をしていても、周りから見て自分の成長スピードが遅いのか早いのか、はたまた方針が間違っているのか否かなど客観的に見てもらわないと分からないこともあります。
小まめにフィードバックを求めるのは現在の自分を知るのにとても有効な手段です。
メンターや先輩に「どの部分が変わったと感じますか?」「もっとこうするといいという改善点はありますか?」と質問したり、1on1のような振り返りやフィードバックをする環境を作るのもオススメです。
課題を一緒に見つけて共有し、改善していくサイクルを続けていくと進むべき道を歩めている安心感が増すので自分の為にも会社の為にも積極的にフィードバックをもらいにいきましょう。
まとめ
エンジニアになって4ヶ月、新人エンジニアの圧倒的成長に欠かせないのは今の自分をさらけ出すことだと気付きました。これは私だけでなくこれからエンジニアになる人、今エンジニアになりたてでもがいてる人、エンジニアになって少し慣れてきたけど成長をなかなか実感できない人みんなに共通して必要なことなのではという気持ちでこの記事を書きました。
周りのエンジニアよりできてない自分を恥じずに、できたことできなかったことをさらけ出す。そうしているうちに新人枠という限られた時間の中で圧倒的成長をし、最終的に自律駆動のできるエンジニアになれるのではないかと感じました。
1人前のエンジニアになれるように日々の努力頑張っていきましょう!
Twitterでもエンジニアになってから日々感じた楽しいこと悔しいことを呟いてます。よかったら覗いて見てください!
エンジニアになって3ヶ月、全然目に見えるような成長してない気がして悩んでいたら、「エンジニアリングが好きなら勝手に伸びてくし、1度積み上げたものは崩れないから今は積み上げてればいいんだよ」という言葉を貰って凄く救われた😭
— kanacan✨ (@_kanacan_) 2018年8月29日
周りの刺激を受けながら楽しく成長していこう😌💗