こんにちは、株式会社FLINTERSでiOSエンジニアをしている重永です。
現在、FLINTERSでは「皆んなでブログ書いて会社を盛り上げていこうぜ」企画が進行中です。
今回はその一環で、個人的に今までの振り返りにもちょうどいいなと思ったので、僕が新卒からiOS開発に携わって半年以上経った今の所感を綴っていこうと思います。
新卒でエンジニアを目指している学生さんは多いと思うので、ぜひご参考までに。
ちなみに、企画にはいくつかテーマも設けられているのですが、今回の記事のテーマは『#教育』になりますね。
学生エンジニアは緩い
いきなり語気強めちゃって申し訳ないんですが、本格的にエンジニアを生業にして感じたことは「学生エンジニアって緩いなぁ...」ということです。
僕は学生時代、福祉系の学生起業でフロントエンドエンジニアをしていました。
人材系の学生事業で求人Webアプリを作ったこともあります。
その他、個人的な趣味として主にWeb系の技術に触れてきました。
しかし、今思い返すと、全部色々ガッバガバだったんです(笑)。
極端な話、そこには「動いてるからオールOKっしょ」精神が蔓延っていました。
新卒入社当時は、「僕、エンジニアできるっす!」なんて言っていましたが、もう恥ずかしい限りです。
研修を受け、今の課に配属されてからも、「自分はできる」と思い込んでいましたが、実際はてんでダメでしたね。
基礎中の基礎なのに、「エラーハンドリング?テスト?え?」とつまずきまくってきました。
そんな緩い学生エンジニア出身の僕、早いもので本格的なiOSエンジニアとなって半年が過ぎました。
今となっては「そこそこできるようになっているのでは?」という感じなのですが、なぜできるようになったのか、個人的にそこには明確な理由が存在します。
そんなエンジニアとしてブレイクスルーを起こしたキーワードが2つあるので、1つずつ解説していきます。
コードの解像度
1つ目が、ソースコードに対する解像度です。
先ほど「動いてるからオールOKっしょ」精神が蔓延っていたと言いましたが、この癖が本当に足を引っ張りました。
まあ学生のうちは、楽しければそれでいい的なところがあるのでいいですが、ガッツリ実務に取り組むとなるとそうはいきません。
基本的なところとして、コードジャンプをして定義元を見に行くことが大切です。
当たり前と言えば当たり前なんですが、スピーディーなプロジェクト進行の中だと、意外と抜けてしまうんですよ。
「自分はそんなことない!」が命取りですね。
メソッドチェーンでずらずら書かれている「何となくこういう意味だろうけど正確には分からない」みたいなコードに対しても、公式ドキュメントを見に行って1個1個ちゃんと理解した方がいいです。
そこそこな理解で進めた方が業務の進行が早そうですが、それはその時だけです。
いや、『その時』ですら怪しいかもしれないですね。
だって、丁寧な理解がないせいで解説できない問題がどこかで必ず生まれるからです。
結局、先輩に「ここ分からないんですけど...」と質問して、返ってきた回答にも「へぇ、そうなのか...(あんまり分かってない)」で進めてしまうので進歩がない。
「同じ過ちは2度するな」と言いますが、浅い理解で先に進むので平気でまた失敗します。
『ゆっくり着実にやる』ができてないと、後々怖いことになる訳ですね。
詳細設計をせよ
2つ目が、チケットに着手する前に詳細設計をした方がいいよね、という話です。
チケットというのは、その週のタスクみたいなものだと考えれば良いです。
詳細設計というのは、そのチケットで実際に手を動かす前に、メモりながら頭の中で実装してみる工程です。
僕は最初、「結局手を動かしてたら想定と違うことだらけだし、考えるより先に動いた方がいいじゃないか」と思っていました。
しかし、いやぁ、普通に間違いでしたね(笑)。
詳細設計の何がいいかと言えば、以下の3つです。
- 未来の問題を先に潰せる
- 自分の理解度が分かる
- 自分の理解度を共有できる
「結局手を動かしてたら想定と違うことだらけ」というのは、まあ特に初期はそうなんですが、とはいえ潰せる問題は潰せるんです。
チケットに着手する前に質問しておくべき内容を洗い出せるメリットもありますね。
また、その過程で自分がどの程度実装を理解できているかが分かるので、学習プランが立てやすいです。
それだけでなく、先輩に「この子の理解は今この程度なのか」を共有することができます。
これ結構あることなんですが、先輩の「このくらいできそうだからこのチケットをやってもらおう」というのが、実は自分にとっては「分からんことだらけなんだが...」という認識のズレです。
この認識を擦り合わせておくのにも、詳細設計が重要なんです。
言わないと、実際に実装のイメージを書いて見せないと、伝わらないよねということです。
・・・
以上、僕が新卒でiOSエンジニアになって半年経った所感でした。
「まあ言ってることは分かるけど、実際にエンジニアになってみないと分からないよね」と思った方、黄色信号です。
僕もその認識でずっと来て、沢山失敗しました。
本当に『ちゃんと』考えた方がいい内容なので、頭に刷り込みまくって欲しいというのが願いです(笑)。
なんだか、過去の自分にこそ言いたい内容だなと思います。
最初からこれを知っていれば、という感覚。
まあ、そう思えている時点で成長はしているのでしょう。
だから、一旦全て良し!
あと、僕に真摯に向き合って大切なことを教えてくれる先輩方には感謝!