エンジニア1年生、1ヶ月目の振り返り
はじめまして。もうりと申します。
6月に社内異動により未経験からエンジニアにキャリアチェンジしました。
この記事では未経験からエンジニアになってからの1ヶ月の振り返りをします。
もともと社内異動する前からエンジニアになりたくて行動してきました。その際「どうやったらエンジニアになれるのか」という情報はたくさん見つかったのですが、「実際にエンジニアになってどうなの?」という情報があまりないことが悩みでした。
この記事を読んで自分と同じような悩みを持っていらっしゃる方のお役に立てれば幸いです。
私の経歴
最初に簡単にではありますが、私の経歴をお伝えしておきます。
- 大卒
- 文系出身
- 数学は得意ではない
- プログラミング歴は1年半ほど
- エンジニアになる前はプログラミングスクール講師
他の駆け出しエンジニアの方やエンジニアを目指されている方と比べると少し変わった経歴をもっているとは思います。そこを踏まえた上でここから先の内容を読んでいただけると幸いです。
私の働き方
エンジニアといってもいろいろあると思いますので、簡単にどういう働き方をしているのかお伝えします。
- 言語…Rails
- 雇用…正社員
- 働き方…フルリモート
- 開発形態…社内のシステム開発
今月やったこと
今月やったことは以下のとおりです。
- 開発するプロジェクトの環境構築
- 要件定義の理解
- 3つほどの小タスクにアサインされ、実装
- テーブル作成
- CRUDのC(作成)とU(更新)
- 既存の機能に対する処理追加
このうち環境構築や要件定義の理解は新しいプロジェクトにアサインされれば必然的にやるものかなと思います。ここは自分もエンジニアになる前から「なんとなくこういうことするんだろうな」と思ってました。
開発の進め方
上記の「今月やったこと」のうち開発タスクをどう進めるのかについて、書ける範囲で書いていきます。
- タスク全体のアウトラインを作ってレビューしてもらう
- 実装のアウトラインを作ってレビューしてもらう
- 実装
- 動作確認
- レビュー依頼
- コメントがあれば修正
- LGTMが出たら次のタスクへ
実際書いてみると至って普通ですが、個人的には1,2あたりは新鮮で事前にアウトラインを書いてレビューしてもらう仕組みが整っていたのは非常に助かりました。それぞれもう少し詳しく説明していきます。
タスク全体のアウトライン
ここでは主に、タスク自体をどう進めるのか?現状で疑問や不安はないか?を整理します。
作業内容はどのタスクもそんなに大差ない(プロジェクトやタスクによってちょっと特殊なものもあると思います)です。
疑問点をこの時点で洗い出してFBをもらう重要な機会なので、既存のコードやタスクボード、要件定義書とにらめっこしながら疑問点の洗い出しを行います。
実装のアウトライン
ここではもう少し踏み込んで、「どのコードを修正するのか」「どのファイルを作成するのか」「DBに変更はあるか」「テストコードは何を書くのか」といったレベルまで文章化します。ここが個人的にはいちばん重要なフェーズかと思います。
実装のアウトラインを書く段階でなるべく疑問がない状態にして、実装時はアウトラインに従って実装を進めるだけで済む状態にすると、その後のタスクが進めやすいです。逆に言うとこの時点でツメが甘いと後々やり直しをたくさんしないといけなくなってしまうので注意したいです。
実装に入ってからの流れは特段どの会社でも変わらないと思いますので割愛します。
今月を振り返って、良かったこと
次にエンジニアとしての最初の1ヶ月を振り返ってみて、良かったことを紹介します。
- 技術的には案外ついていけている
- 同僚に何度も助けられた
- タスクの進め方が仕組み化されているおかげで仕事が進めやすい
技術的には案外ついていけている
今月だけ振り返っても技術的に知らない実装にたくさん取り組みました。
どのタスクにおいても自分の知っている範囲だけで実装できることはなかったです。
例えば以下のようなことは今までやったことがない実装でした。
- ActiveRecordのコールバック
- CSVを整形してDBにデータを保存する処理
- 外部APIを用いた処理のテストコード
決められた時間の中で知らない知識を調べて実装するのは初めての経験でした。調べていく上でどうしてもわからない点が出てきて、上司にMTGの時間をいただくこともありました。
知らない知識を調べる上で大事だと思ったことを紹介します。
- 自分がどこまでわかっていて、何がわからないのか紙に書き出す
- わからない部分を整理して、どうしても理解できそうにない場合は上司や同僚に相談する
- 調べた知識は必ずアウトプットする
- 既存のコードで似たような処理をしている箇所がないか見直す
特に1つめと2つめが個人的にすごく難しいと感じています。
後でも書きますが、実装に詰まった時何度かパニックになってしまうことがあり同僚に非常に迷惑をかけてしまいました。最近は少しずつ慣れてきましたがコツは「ちょっとでもわからなくなったら紙に書いておく」ってことです。紙に書くと思考が整理されて何を調べればいいのか見えてきます。
同僚に何度も助けられた
自分にはありがたいことに自分と同時期に異動してきた同僚がいます。
今月を振り返ると同僚の存在なしでは生きていられなかったと思います。
もちろん最終的な決めはPdMであるところの上司に聞かないとわからないですが、ちょっとした相談であれば同僚同士で相談して解決できたことが何度もありました。
それだけでなく同僚がいる、ということだけでもありがたいと感じています。自分と同じように未経験から頑張っている仲間の存在はとてもモチベーションになります。とってもありがたい環境に要られているなと感じます。
タスクの進め方が仕組み化されているおかげで仕事が進めやすい
上にも書きましたが、タスクの進め方が仕組み化されており仕事を進めやすいと感じています。
特に実装のアウトラインに時間をかけることができるので実装時にはアウトラインに沿ってコードを書くだけという状態にできるので新しい技術を使うようなケースでも対応がしやすくなっているように思います。
今月を振り返って、大変だったこと
ここまで、良かったことを紹介してきましたがもちろん大変なこともたくさんあります。
主に以下の3つが大変だと感じています。
- 事業の理解
- イレギュラー対応
- 息抜き
- コミュニケーション
事業の理解
実装を進める上で事業が理解できていないが故に設計で詰まってしまうことがあります。
事業の理解ができていると、ユースケースが想像しやすいので設計を組み立てる際に役立ちますが事業が理解できていないと設計段階で考慮漏れが発生する可能性が高まります。
自分が携わっている開発は社内開発ですが自分が使ったことあるシステムではないのでユースケースの想像が難しく、苦労しています。
イレギュラー対応
例えば実装中に考慮漏れに気づいた時とかに誰にどう相談するのかを迅速に判断することがまだできていないと感じています。判断が遅いがためにタスク全体の完成も遅くなってしまっているように思います。ここを改善すれば今よりもっと生産的に働けるのではないかと思っています。
コミュニケーション
ここからはフルリモートあるあるなのかもしれません。
フルリモートだとどうしてもテキストでもコミュニケーションが多くなるので、テキストでなるべく簡潔に伝えきる力が必要になります。特に同僚や上司に相談したいときに、いかに自分が求めていることをわかりやすく伝えるか?を意識しないと意図が正確に伝わらず、問題解決に時間がかかってしまいます。
今月を振り返って、およそ以下の点に気をつけると良いかなと思いました。
- テキストではyes/noで答えられる質問しかしない
- yes/noで答えられない質問はMTGを設定して行う
- MTGを設定する際に事前に疑問点を書き出す
- MTG終了後は話した内容を全てテキストで残す
リモートでのコミュニケーションについては今月を振り返って今後最も上達していきたいことの一つです。
息抜き
そしてフルリモートなので、人との接触は少ないですし何よりずっと家に閉じこもって作業するので知らず識らずのうちに疲労がたまってしまいます。前述のコミュニケーションにおけるストレスもやはりリモートだと大きいです。そして難しい実装が続くと頭を使うので必然的にめちゃくちゃ疲労がたまります。金曜日の午後とか割と限界に近いです。
今月は息抜きとして以下を行いました。どれもやってよかったので継続します。
- 疲れているときは作業しない
- 朝、昼、夜1日3回の散歩
- 眠い時は椅子に座ったまま寝る
- 仕事に集中する時間と仕事のことを考えない時間を分ける
- 仕事終わりとかにYoutubeなどドーパミンが出やすいものは見ない
これはエンジニアに限らずあらゆる仕事において言えることだと思いますが、全体として、メリハリが大事です。1回納期が近くて休憩せずに仕事したことがあったんですが、そんなに生産性あがらなかったのでやはり休むことは大事なんだなと思いました。
来月に向けて
来月に向けては主に大変だったことに書いた内容を中心に、より良くしていきたいと思っています。
全体としてはもう少し仕事に余裕がほしいなと感じているところです。そのために仕事のメリハリと、コミュニケーションスキルの向上、判断スピードの向上の3つを軸に改善していきます。来月も終わり次第振り返りします。
最後まで読んでくださった方、ありがとうございます。
よろしければ感想等コメントでいただけると非常に嬉しいです。
Discussion