新人エンジニアが、当たり前を徹底しようと改心した件
この記事を書いた経緯
まず私の経歴について簡単に説明します。
- 大学でWeb系言語を使って教育系のアプリを開発&研究
- 今年SaaS業界に新卒で入社する
- アプリエンジニアになって約半年
こんな感じでひよこに毛が生えたくらいの新人エンジニアやってます。
そんな経歴ですけど、最初のときよりは日々の開発に慣れてきました。
ただできることが少しずつ増えてきた反面、細かいことが雑になってきたなと感じていました。結果的に空回りして無駄な労力と時間を過ごすことも…。
上手くできない→落ち込む→焦る→丁寧さに欠けるという負のループが最近起こり始めたので、一度立ち止まって、当たり前のことをやるを徹底してみることにしました。
「当たり前のことをやる」を意識して開発した結果、思って以上にできていないんだなということに気づいたり、こんなに学びがあるんだということにも気づけました。
前置きが長くなりましたが、この教訓をこれからも忘れずに生かしていくために今回学んだことを記事にしました。
少し業務になれてきて同じような悩みを抱えてる方、基本的なことをまずは徹底したいという初心者の方々の参考になれたら嬉しいです。
まだまだ大して経験の積んでいない者が書いてます。
記事の中でもっとこうするべき!みたいなご意見ありましたら、ぜひご意見もいただきたいです🌷
今回の記事の内容について
私が凡事徹底をしてみて、学びがあった場面を大きく3つに分けて書いています。
今回教訓としてのメッセージの意味合いが強いため、コードなどは少ないです。
日々の開発における当たり前なことをただただ言語化している記事なので、自分はこれをできているかどうか?という視点で見ていただけると幸いです。
自分で調べるとき
日々の開発では、色んなことを行いますが、1番基本的なことはバグを解決することだと思っています。
新しい開発、リファクタリング、テストなどの場面における基礎であり、バグを解決し続けることで開発は進んでいきます。
バグを解決する過程を分けると原因を見つけることと解決策を見つけることです。
それぞれについて、大事だなと思った基本的なことを説明します。
原因を見つける
より早くバグを見つけ出すために
バグを見つけたら次に何をするでしょうか?
まずは現状を知るためにログを見ると思います。
何も考えていなかったら、いつも使っているやり方でなんとかバグを見つけるでしょう。
例えば私はVScodeのブレイクポイントの機能を使っていたので、バグが起きていると思われる箇所の周辺にブレイクポイントを付けまくって調べていました(笑)
イメージ↓
もちろんログを見つけ出すのにめちゃくちゃ時間がかかっていましたし、上手くいかないと何度も試すことになるので非効率です。
効率化させたいと考えたら、何のログを取得したいかに応じてデバックの手法を使い分けるべきです。
いくつかのデバック手法と用途についてまとめてみます。
効率的なログの出し方
①デバッグ手法
print()関数は、変数の値やプログラムの状態をコンソールに出力します。
これを使うときは、データの中身がリストになっていて一覧で見たいときに見やすくなるなと思います。複雑な構造をもつデータのログを見たいときに便利です。
②開発者ツール
Flutterは、Webも開発できるクロスプラットフォームのフレームワークです。
なのでAPI連携をするときにブラウザの開発者ツールを見ることでレスポンスを調べることができます。
また、ネットワークを制御することができるのもネットワークが切れたときの挙動を確認するのに便利です。
③コマンド
過去に自分が変更したログを調べるのによく使います。
まだまだここは勉強中です(^^ゞ
解決策を見つける
chatGPT
chatGPT様が居てくれないともう生きていくことはできません(笑)
どんなに便利か、どうやって使うかはみなさんご存じの通りなので割愛します。
私は基本的なことしか使えてませんが、それでも参考にできるコードばかりです。
世には良い回答が出てくるコツなど紹介されているので、さらに自分のプロンプト力も上げて行きたいですね。
ネット
①バグをそのまま貼り付ける
初心者はあるあるだと思うのですが、これが近道だったってこと結構あります。
なので、chatGPTに聞いてそれでもよい回答が返ってなかったらこの方法をやります。
②英語で調べる
英語の記事の方が日本語の記事より圧倒的に多いため、英語の方がヒットします。
英語に抵抗がある人もいると思いますが、検索する語句は日本語で検索する単語を英訳したもので全然問題ありません。積極的に使っていきましょう。
特にFlutterは日本語の記事がまだまだ少ないですので、なおさら英語で調べることが効率的だったりします。
人に聞くとき
自分で調べても分からなかったら、人に聞くことになります。
相手に要件が伝わり、自分も現状を把握するということが大切なので両方満たす方法をまとめます。
①概要を伝える
まず、今何をしているのかを自分が把握することです。
人に聞く前に自分がたくさん試行錯誤していていると、今自分は一体何をやっていたのか混乱して分からなくなっていることがあります。
そんなときは、総じて私は今何をやっていたのだろうか?と立ち止まって把握するようにしましょう。
そして何より概要を相手に伝えることは相手の理解を早くします。
相手も脳に負荷がかからないため、まずは概要を伝えましょう。
②どんな問題に直面してるのか
次にどんなエラーが起きてるかを伝えましょう。
エラー箇所のキャプチャが取れるのであれば、それを送りましょう。
またビルドできていることが前提ですが、挙動がおかしければ動画にして送ると相手の理解は早まります。
この場合は事実を伝えるだけなので気をつけることはそんなにありません。
強いて言うなら、時間の効率という観点で全体を取ってスクショして手動で範囲選択するのではなく、選択範囲を決めてながらスクショできるショートカットを使うとさらにグットだと思います。
【参考】
Windows :「Shift」+「Windows」+「S」
Mac : 「shift」+「command」+「4」
③何をしたか
問題に直面した後は、仮説を立てた上で、検証すると思います。
ここでは、試行錯誤した過程について説明します。
やったことをただ書くだけではなく、なぜそれをやったのかという根拠まで書けると相手の視点も広がることがあるので、重要です。
④結論
最後に「結局ボクに何をしてほしいの?」という部分を相手に伝えます。
原因を教えてほしいのか、方法を知りたいのか、考え方のプロセスを教えて欲しいのか…など聞きたいことは多様です。
ここが欠けると、回答が自分が求めていることと異なってしまい、両者にとって時間のロスが生じてしまいます。
何を教えてほしいかを明確に伝えることにしましょう。
伝え方のテンプレ
こう伝えておけば間違いない!というテンプレを貼っておきます。
上司に伝えるときに迷った時はテンプレとしてお使いください!笑
イメージとしてはこんな感じ↓
〇〇の部分は伝える情報としては事実なので必ず伝えるようにしています。
△△は自分の考えが反映されるので確証がなく相手を混乱させてしまうと感じたときは省くようにしています。
場面に応じて、足したり省いたりしましょう。
最初はこの文章を作るのはすごく負荷のかかる作業です。
でも繰り返すと慣れていくので続けてみてください。
次に生かす
記録を残そう
一度学んだことを次に最速で生かすためにはメモを残しておくということがやはり大切です。
新しく学んだことや今まで何回か聞いたなということなどは、今から書き始めましょう。
またアウトプットすることで自分の頭が整理されるというメリットもあります。
学んだことが記憶として定着するので、時間が多少かかっても将来的にはメモするということが効率的なのではないかなと思います。
私がよく使っているツールはNotionです。
記録と言っても、環境設定・tips・教訓レベルの学びなど様々です。
ジャンル分けしてそれぞれ記録を残しています。
一般的なメモ機能でも、ファイルをカテゴライズできていれば問題ないと思います。
凡事徹底生活をやってみて
上記のことを意識してしばらく生活してみましたが、いかに自分ができていないか分かりました。そして、すごく負荷のかかることでもあると思いました。
凡事といっても難しいので、完璧を目指す必要はないと思っています。
余裕がなさすぎるときや疲れているときは、無理してやる必要はないと思いますが、6~8割やり続けられるといいかなと思いました。
まとめ
凡事徹底という言葉があるように、当たり前のことをやり続けることがどんなに大切か、そしてどれだけ難しいことかに気がつくことができました。
これから様々な経験を積む中で、調子乗ったり、逆に落ち込んだりする度にこの記事を見直していこうと思います!(笑)
Discussion