若手エンジニアの3大要件
毎度お久しぶりです。
12月に新卒で入社した会社を辞めて転職しました。 もうすぐ社会人も3年目も終わりますが、3年間でやっとあるべきエンジニア像みたいなものが自分なりにまとまってきた気がするのでちょっとだけ書いておこうと思います。
1. 基礎の理解
使用する言語やフレームワーク、ライブラリ、ツール等々、どれだけリッチでシームレスになっても基礎はやはり欠かせないと思います。
Webエンジニアであれば下記かなーと。
- プロトコルの理解(主にHTTP)
- データ型への理解
- RESTfulの概念の理解
- プログラム基礎の理解(メモリとかそのへん)
以前、「Javaのint型は何ビットか」というのが同じ部署のエンジニアでちょっと話題になり、意外に答えられなかった人が多かったのが印象的でした。
こういう基礎知識って、学校で言えば「テストには出ない」ものなんですが、長期的にすごく重要になってくると思います。例えば同じ整数型8ビットでもsignedとunsignedで表現できる範囲が異なるのはなんでか知ってると知らないではものの見え方が全く違うと思うんです。
2進数表現と符号ビットを知ってるか知らないかなんて、多分普段プログラムを書く上で意識している人はいないでしょう。が、何かを判断するときに知ってる/知らないで導き出す結論に大きな差が出ることは多分あります。
そんな小さいことが日々積み重なっていく。だから基礎は大事。流行りの言語やフレームワークはエンジニアとしては興味深いけど、エンジニアリング力の観点からすると二の次だと個人的には思います。
2.英語力
さっきの話と矛盾するようですが、やはり新しいものを選択できることはその会社の強みであり、エンジニア自身の強みであると思います。 新しい情報に触れるには英語を避けることができません。最近はGoogle翻訳の精度が凄く上がっているみたいなので、もしかしたら避けられるかもですが。
- ドキュメントを読める
- GitHubのIssueや特定のコミュニティで質問・回答できる
このくらいはできたほうが良いなとよく感じます。得られる情報の量と精度が格段に違います。
3.記録して整理する癖
コード書いてつまったときのよくある解決の流れは【ググる→真似する→よし動いた!】だと思います。
ここで終わらないようにするのは非常に重要。記録しておきましょう。できれば掘り下げて調べると良いです。
自分なりの良い実装ができたらコードスニペットとして保管しておきましょう。kobitoとかに。
できればきちんと整理してチームにシェアしましょう。
ここで出てきた「掘り下げる」とか「整理する」というのは要するに「体系的に理解する」ことだと思っています。
一問一答で公式のように覚えるのも良いですが、そこから体系化できると周りの人も喜びます。評価もされます。
まとめ
簡単にいえば、情報を集めて掘り下げて理解し、発信する力になるんでしょうか。 これができれば応用はいくらでも効くはずです。 まだまだ自分としてもできてなことは多いでので精進してきたいと思ってます。 後半飽きてきた感じが隠しきれずごめんなさい。