📝

【ポエム】エンジニアになっての知見を公開する(2021 Ver.)

2021/11/06に公開

エンジニアになっての知見を公開する(2021 Ver.)

こんばんは。今回はポエムを綴ります。
私は新卒としてエンジニアとして働き、もうすぐ3年が経とうとしています。もう新人とはみられない立場となります。本記事ではエンジニアを3年経験しての自分なりの知見を公開していこうと思います。

本記事の対象

本記事は特に以下の方々に読んでいただきたいと思っています。

  • 将来、エンジニアになりたいと思っている方
  • 自分と同じくらいの若手エンジニアの方

理由としては以下です。
私のTwitterのフォロワーさんの中には、未経験からプログラミングを学習し、将来的にはITの現場に立ちたい人が結構いらっしゃいます。しかし、実際の現場ってどんな感じなのか...?と思っている方が多いと考えています。
また、自分と同じくらいの若手エンジニアの方はどういう考えを持っているのかを単純に知りたいからです。

もちろん、上記以外の中堅・ベテランのエンジニアの方や趣味としてプログラミングをやっている方も読んでいただき、何かしらフィードバックをコメントなどでもらえたらいいなーと考えています。

目次

多いですが、今回お伝えしたい項目は以下です。

未経験からエンジニアはなれます

表題のとおりですが、結論から言うと未経験からエンジニアにはなれます。
エンジニアにといってもいろんな分野の職種があります。例としては、

  • システムエンジニア
  • プログラマー
  • インフラエンジニア
  • セールスエンジニア
  • などなど他にもたくさん

私はエンジニアという職種は広義的にITを用いて何かしらの問題を解決する職業と考えています。よく言われるのが「プログラム書いたことないのですが、エンジニアなれるの?」です。はっきり言ってエンジニアってプログラミングを書くだけが仕事じゃありません。エンジニアのみんながみんなプログラミングが得意ってわけでもないでしょう。自分の会社には技術が好きで、ばりばりコードを書ける人やコードはそれほどだがマネジメントに長けている人などいろんな方がいます。

ただ1つエンジニアに必要な能力を挙げるとしたら、IT技術が好きかどうかだと考えてます。
やはり続けるには好きであることが大事です。自分にIT技術が好きかどうかを尋ねてみてください。
「好き」と返事が来ればその気持ちがあればエンジニアとしてやっていけます。「そうでもないな。」や「ITで楽して稼げる界隈だけど...」とかの返事が来たならばなれません(なれたとしても嫌になって他の業種に逃げます)。諦めてください。

ということでIT技術が好きな気持ちを持っていればエンジニアになれると思います。
とはいえ最初はかなり苦労するとは思います。(小声)

英語スキルは必須ではないが、できていたら得する

これもよくある疑問だと思います。
英語スキルはあった方がもちろん良いです。理由としてはドキュメントが英語のみで書かれている場合があるからです。ただし、世の中には精度の良い翻訳ツールがあります。英語は苦手の方は、それに頼るのも全く問題ありません。

私のおすすめの翻訳ツール → DeepL

ただし、お客さんやプロジェクトの情報が英語でもWeb上で翻訳しないでください。
翻訳時にサーバーに送信されると情報漏洩が起こる可能性は捨てきれないです。そこら辺は気をつけてください。

コードのコピペをするなら必ず理解してからコピペしましょう

たまにTwitterなどで以下を目にします。

  • 「これコピペすればできますよ」
  • 「コピペしたらなんか動いた」

絶対やめてください。
別にコピペすること自体を悪いとは言っていません。ちゃんとコピペするコードを理解した上でコピペしてください。

実際に自分のプロジェクトメンバにもいました。やめてください。バグの原因につながります。
わからなければ質問しましょう。聞きましょう。

レビューを嫌いにならないで

自分もそうでしたが、特に最初の頃は技術不足でレビューで大量の指摘が飛んできました。
1つの機能を作るのに50ほど指摘を受けたことがあります。正直レビューがすごい嫌になった時期もありました。特にレビュアーが技術に強く、癖が強い人の場合、正常なコードなのにレビュアーの好み(思想に合わない)の書き方じゃないだけで指摘が飛んでくることもあります。

極端な例ですが、以下の場合のようなことです。(実際に指摘された内容ではありません)

// NG!!
var x = 10
x = x + 1

// OK!!
var x = 10
x += 1

レビュイーは(どっちでもいいじゃん...)って思ったりもしますが、そのまま指摘を鵜呑みにしないでください。考えもなしに修正してOKをもらうこともできますが、必ずレビューアが指摘した理由を聞いてください。わからなければわかるまで指摘理由を聞きまくってください。そして納得したら修正してください。納得できないなら「〇〇という理由で自分が書いたコードの方が良いです」と反論してください。この時の議論があなたを成長させるでしょう。※喧嘩はしないでくださいね。

もちろん元々のコードもレビューアの指摘も正しい場合もあり、例えば「可読性」を重視するか「処理効率」を重視するかで思想が分かれる時もあります。その時は第三者に意見を求めてみてください。

先ほども述べましたが、指摘がたくさんくると嫌になってきますが、それを乗り越えると必ず成長できます。レビューはあなたを貶めるためのものではありません。指摘がきた分自分の知らない知見が増えた!やったぜ!くらいの気持ちでいればいいです。
レビューを嫌いにならないで!!!

公式ドキュメントを読む癖をつけて

何か調べる時は公式ドキュメントをまずは読んでください。理由は第一情報源だからです。
公式ドキュメントは英語の時もあるし、日本語でも文章が固くで正直わかりづらいです。ただし内容は正確です。

QiitaやZennにまとめている記事は、公式ドキュメントを読んでわかりづらいなぁって思ったらみてみてください。公式ドキュメントを少し噛み砕いてくれているのが多いと思いますので、少し理解できたら公式ドキュメントに戻ってみてください。言ってることがなんとなくわかると思います。

別の節でも言いましたが、QiitaやZennにまとめている記事に書いてある内容を訳もわからずコピペはやめてください。

エンジニアの実際にコードを書く時間は思っているより多くない

エンジニアのコードを書く時間は思ったより多くないです。
つまり、コードを書く以外の仕事もたくさんやるということです。

例えばコードをどのように書いていけばいいかを表す設計もとても重要な過程です。
設計の中にもコーディングに必要な機能設計書や詳細設計書、テストを行うためのテスト設計書などたくさんの設計書があります。
正直、設計は難しいとだけいっておきます。これは経験で積んでいくしかないと考えてます。

エンジニア=コーディングのイメージがあると思いますが、現場に入ればそうじゃありません。
その時のプロジェクトでの担当範囲などにもよりますが、以下はほぼほぼやるものと思ってください。

  • 設計
  • コーディング
  • テスト

コーディングだけができればいいなんて思わないでくださいね。

テストを馬鹿にしないで

テスト工程は結構無下に見られるイメージがありますが、テストの過程が一番重要だと思っています。
ソフトウェアには必ずバグが存在します。そのバグをできるだけテストで発見して修正し、高品質なものを作り上げることを意識してください。
「1パターン試したから大丈夫。」それはテストになっていません。家で練習がてら作るアプリくらいなら正直テストは不要です。しかし世の中にアプリをリリースするとなるとそうはいきません。世の中には想定もしない操作をする人、ネットワーク環境が極端に悪い人、端末のスペックが極端に悪い人などがいます。そういう人たちが使っても、例えばクラッシュしないようにテストで品質を担保しておきましょう。

たくさんプログラミング言語を学ぶより、日本語を書けるようにしよう

プログラミングを勉強している人の中で「Java」も「Python」も「C」も「JavaScript」も...とたくさんのプログラミング言語をマスターしようとする人がいます。
別にその思想が悪いとは言うつもりはありません。
ただ、自分が言いたいのは以下です。

  • たくさんのプログラミング言語をマスターする必要はない
  • 1つの言語をある程度わかれば、別の言語も書ける
  • 複数のプログラミング言語よりも日本語をかけるようになって

たくさんのプログラミング言語をマスターする必要はない

どうせすぐに忘れます。マスターまでする必要はないです。
やるならこんな書き方ができるんだくらいの理解でいいと思います。

1つの言語をある程度わかれば、別の言語も書ける

これは未経験の方には伝わりづらいかもですが。おいおいわかると思います。
言語によって確かに書き方は若干違ったりします。しかし、その書き方の違いを覚える必要は全くありません。極端な例ですがある言語の「if」や「for」の意味を知っていれば、他の言語の「if」や「for」も調べれば書き方が違うだけで使い方はすっと入ってくると思います。

ここで重要なのは書き方を覚えるよりもその構文の意味を理解することです。
コーディングは暗記不要です。そもそも言語全部を暗記するなんで無理です。諦めてください。

複数のプログラミング言語よりも日本語をかけるようになって

一番主張したいのがこれなんですが、複数の言語よりも日本語を書けるようになってください。
「日本語を書ける」というのは、設計書やイシューの作成にものすごく重宝します。それは立派なスキルです。正確な日本語で誰が見てもわかる設計書を作るのは非常に難しいです。日本語にゴールはないと思っています。

私自身この記事を書いていて日本語が下手だなぁと感じています。もっと良い言い回しがあると思いますが中々浮かびません。(偉そうにすみません。。)

見積もり力を身につけたらマネジメントにも重宝する

これは発展の内容です。
見積もり力というのは、例えば、この機能を作る(設計→実装→テストなど)までにどのくらい工数がかかるかを概算でどのくらいかかるかを見積もる力を指します。
自分のプロジェクトでも、最近上司からこの機能見積もってと言われ、初めて見積もりしましたが難しいもんです。
「やってみなければわからん!」って思いながらも、設計ではこの機能に必要なクラスが○個あって1つ何分かかるから〜とか、実装ではこの機能では〇〇行数書く想定だから〜とか、それなりの理由をつけて見積もっていきます。(必ずしもこういう見積もりとは限りません)

自分の作業だけでなく、もちろんレビューはあるはずなのでレビュアーの工数やレビュー指摘の修正の時間も考慮する必要があります。この見積もりでプロジェクトの進み方が変わってくるので非常に重要なファクターになります。
見積もりは自分も初心者です。これから経験して慣れていきたいです。

まとめ

本記事では、エンジニアを3年経験しての自分なりの知見を公開しました。
偉そうに書いていますが自分もできていない部分があり、まだまだ未熟です。
だた、上記を意識するとしないでは全くこれからの成果は違ってくると思います。
是非、フィードバックやコメントなどくれたら嬉しいです。お待ちしております😁

Discussion