皆さん、こんにちは!
今回は、Advent Calendar 2022への応募記事として、「新人エンジニアにすすめたい、あなたの勉強法をシェアしよう!」というテーマで記事を投稿させていただきました。
これからエンジニアになろうと考えている方や来年度入社を控えている方に少しでも+になれば幸いです!
目次
- 自己紹介
- 新卒エンジニアがまずすべきこと
- 最後に
自己紹介
【ニックネーム】
mashharuki
【経歴】
今年で社会人4年目となります。
大学の卒業研究ではディープラーニングを利用して画像中の船舶の位置と船種を特定する機械学習モデルの研究を行っていました。
入社してから1年半ほどは医療系アプリケーションの開発・運用・保守を担当していましたが、縁あってブロックチェーン関連のプロジェクトの専任となりそれ以降はどっぷりWeb3の世界に浸っています!
プログラミングに初めて触れたのは、大学生の時で当時は「cd」コマンドの読み方は意味も分からない状態からのスタートでした。
【twitter アカウント】
新卒エンジニアがまずすべきこと
まず、入社時点では大体下記3パターンの内のどれかに当てはまるのではないでしょうか??
それぞれですべきことが変わると思っていますのでそれぞれまとめていきます!
※ ちなみに私はパターン2でした。
入社時のパターン
① プログラミングや情報系の知識がほとんど無い状態の場合
② 授業や研究でプログラミングの経験があり、アプリ開発は難しいが簡単なプログラムであれば作れる状態の場合
③ プログラミング言語の知識を習得しており、自分でアプリが作れる状態の場合
【プログラミングや情報系の知識がほとんど無い状態の場合】
今までプログラミングの経験がほとんど無かった人は、兎にも角にもまず基礎力を身につけましょう!!
私の考える基礎力がある状態は下記のような状態だと考えています!
-
プログラミング面
HTMLやJava,SQLを理解し、フルスクラッチで簡易アプリが作れること -
知識面
基本情報技術者試験に合格もしくは同等のレベルの知識を身に着けること
最初は配属された部署の仕事を覚えるので目一杯だと思いますが、慣れてくれば余裕も出てくるはずです。
毎日30分でも良いので試験勉強なり、プログラミングに触れる時間を設けることをおすすめします。
最初は分からない用語がたくさん出てきて苦痛かもしれませんが何度も反復することで段々新しく覚えることが少なくなってきます。
最初の1年は先輩にもたくさん質問ができる立場ですし、何しろ勉強することが許される期間でもあります!
この最初の1年で基礎力をどれだけ身につけることができるかでその後の仕事ぶりがかなり変わってきます!
一番基礎となるHTML,CSS、SQLの知識を習得するために以下のような書籍や講座を見て力をつけていきましょう!
最初はゆっくりで大丈夫です!
おすすめの書籍
↓もし、配属先の会社でJavaを利用してWebアプリを開発していることが判明している場合には以下の書籍もおすすめです!
おすすめのUdemyの講座
- 書籍やUdemyの講座を受けて実際に簡易アプリを作ってみる
- 基本情報のテキストや過去問に目を通してみる。
- わからない単語が出てきたら調べてメモを作っていく。
- 合格ラインに達成するまで2,3を繰り返す。
- 基本情報を受験する
- 受かったら別の簡易アプリを作ってみる。
などの順番で進めると理論と実践の両方の面から力を着けることができるのでおすすめです!
技術力を身に着けるのは時間がかかりますので最初は焦らなくて大丈夫です!
これから長い間お世話になるIT知識の基礎を確実に身に着けていきましょう!
【授業や研究でプログラミングの経験があり、アプリ開発は難しいが簡単なプログラムであれば作れる状態の場合】
この状態で入社される方については、プログラミングのイメージも身についている思いますので現場で利用することになるプログラミング言語を人事の方に確認するなどして準備をしましょう!
私の場合は、大学でC++とpythonに触れている状態で入社をしました。実際の現場ではJavaを使ってアプリを開発していると伺ったので、Java関連の書籍をひたすら読んでとにかくWebアプリを開発する全体像のイメージを掴むことに集中しました。
最初にやることは、パターン1の方と基本的には同じだと考えていてまずは、IT全般の基礎知識と使っているプログラミング言語を利用した開発の基礎知識・全体像を掴むということです。
私の場合は、Java言語を利用しSpringというフレームワークを使って開発していた現場だったので下記のようにして基礎力を身につけました。
- Java言語の大まかな言語使用を学習する。(オブジェクト指向の仕組み、メソッドの実装の仕組み etc)
- Java言語を利用してWebアプリを実際に作ってみる。
- 現場で利用しているフレームワークの種類を先輩などに聞いて、そのフレームワークを使ってWebアプリを実際に作ってみる。(公式サイトから出ているチュートリアルや初心者向けの書籍を一冊読破などしながら作るとおすすめです!)
上記が最初にできれば2,3を繰り返しているうちに全体像が頭に焼き付いてきます。
自分に足りない要素は何か?、覚えなければならない業務は何か? ということを考えることができるようになるので、このイメージを早めに身に着けることが重要です。
実践の面では上記の流れに沿って進めていけば良いと思いますが、エンジニアとして働くにはWebアプリの開発知識だけではやはり足りないので基本情報技術者の取得も目指すことをおすすめします。
基本情報技術者の取得をおすすめする理由
ネットワークやセキュリティ、最低限のマネジメントの知識を幅広く身に着けることができますので理論の面はこの資格の取得を目指すことで良いと考えています!
また、数字の面で評価を出しづらい新人の時には資格取得というのは上司にアピールするチャンスでもありますので価値はあります。
上司や先輩から言われる前に足りない要素を自分で補えるようになればあなたの評価はかなり上がると思います!
やはり自分を客観的に見れる人は少ないのでそういう自分で力を身に着ける癖のある方は重宝されます!
おすすめの書籍やUdemyのコースは以下の通りです!
おすすめの書籍
おすすめのUdemyの講座
【プログラミング言語の知識を習得しており、自分でアプリが作れる状態の場合】
この状態の人であればたとえ新人と言えどプログラミング言語によっては、即戦力並みのパワーを持っている方もいると思います。
(ハッカソンに出場して上位入賞した経験があるなど)
仮に、自分がこれまで学習してきたプログラミング言語と言語で利用することになる言語が異なる場合には、パターン2の際に記載した方法で学習すれば問題ないと考えています!
理論面でも基本情報技術者や応用情報技術者の取得を目指して勉強するのが良いと考えています。
重要なのはここからです!!
最優先でやらなければならないのは、現場で実績を上げることですが、パターン1の方もパターン2の方も基礎力を身につけて現場の仕事に少し余裕が出てきたら、世の中のトレンドを追う癖を身に着けるようにしましょう!!
今後エンジニアをやっていく上でトレンドとしてしっかり見ておきたいのは、次の項目になります!
どれも世の中に浸透しているもしくは浸透して行くであろうと考えている汎用的な技術です!!
- クラウド化(AWSやGCP、Azure)
- AI
- メタバース
- Web3
- 暗号学(特にゼロ知識証明)
- 量子コンピュータ
これらの技術は世の中に大きく影響を与えているものもしくは与えることになると考えられているものばかりです。現場に実際に配属になった場合などには、AWSなどを使ってWebアプリを開発することは当たり前になってきているのでプログラミング言語の基本的な知識の習得の他、クラウドの知識も勉強するようにした方が良いでしょう!
AIについても畳み込みニューラルネットワークやトランスフォーマーの発明によってだいぶ技術が進化し、アプリケーションにも組み込まれることが多くなりました。そのため、AIの基本的な概要・課題などは日本ディープラーニング協会が主催しているG検定の取得を目指すなど最低限の知識はインプットしておいた方が良いと考えています。
そして、メタバース・Web3・量子コンピュータです!!
この3つは、近年急速に注目されている技術トレンドになっていて基本的な概念を理解している人はまだまだ少ない印象です。ブロックチェーンと連動するアプリ(Dapp)や量子コンピュータ向けの言語を利用してスクリプトを作れる人は滅多にいません。(システムの開発部門にいても感じます。)
ですが、今後クラウド化やAIと同じように汎用的な技術となる可能性が高い技術だと考えているので注目している人がまだまだ少ない今から勉強しておくようにしましょう!これは、若手ほど有利に働くと考えています!
これらの分野には専門家と言える人はごく少数であり、皆ゼロスタートになります!なので頑張って勉強すれば社内では第一人者になれる可能性もあります!! これは若手にとってものすごく大きなアドバンテージとなります!!
実際に調べた結果を共有するために勉強会を開催したり、ハッカソンに参加してプロダクトを作ったりしていれば自然とそういう感じになっていきます!一番理想なのは社内に切磋琢磨できる方がいることなのですが、現状ではそのような専門企業に就職しない限りは難しいと思います。
なので、積極的にイベントや業界活動・ハッカソンなどにトライしてみましょう!! 社内で業務をしているだけでは分からなかった世界がそこには広がっているはずです!! 外部の人と話すと業界の課題や世の中の動き・スピードの速さを体感することができ、自分達の会社の状況を冷静に客観的にみることができるようになれるのでおすすめです!
ちょっと量が多くなりますが、自分に不足している分野やもっと調べてみたいと思った分野を勉強してみましょう!
おすすめの書籍
おすすめのオンライン講座
最後に
エンジニアをやって4年目に突入していますが、エンジニアは面白い職業だと思っています。
プログラミング言語や情報系の知識の他、自分が開発するシステムに関係する知識(Web3などの場合は、金融や暗号学の知識も必要です。)も勉強する必要があるため効率良く知識を学んでいくことやお客さんとのコミュニケーションも求められます。特にエンジニアにこそ大事だなと思ったことは人とのコミュニケーション力だと感じています。
社内SEともなるとどうしても社内の閉じた空間のみでの業務になりがちですが、いつも社外での評価というのを意識しておくことが重要だと考えています。
社内だけでなく社外でもイベントなどで交流も持っておいたり意見交換したり、ハッカソンに参加して研鑽し合ったりしている人とそうでない人とでは雲泥の差が出来てきます。
社内以外のコミュニティのつながりや外の世界の両方を知っておくと客観的な視点で社内の動きを見ることができます。これができないと役員や上司の判断・指示だけが全ての行動基準となってしまう可能性があるので非常にもったいないです!! (あなたが考えている事の方が正しい場合もあります!)
そうして研鑽を積んでいくと、何か新しい技術が出てきたりした時に自分から調べて手を動かして実装するという癖がつきますが、技術革新のスピードが速い(もっと速くなっていく)時代において、エンジニアとして生きていく上でこの習慣はとても大事だと感じています。
世の中の動きをウォッチし、変化を先取りして動けば最新技術の領域でも勉強してプロトタイプを作り、社内で発信できる準備ができるので一番になれる可能性が高くなります。(実力をつけるのにプロトタイプを作ってみるのはとても効率が良いです! 社内の人にも目に見える形で説明することができるので説得力も増します!!)
ベンチャー企業などはまた話が別になると思いますが、ある程度大きい企業になるとまず間違いなく年功序列になります!!
しかも、年齢が上の方であれば昔ながらの考え方で部下に絶対服従の姿勢を求めてくるような人と出会うこともあるでしょうが、これからの時代ではその考えは全く通用しなくなると考えています。その時に重要になってくるのが、社外とのつながりであり世の中の動きをどれだけ正確にキャッチできているかになります!!
例え上司といえど、この繋がりを奪うことはできません!だからこそ会社を動かしたり、周りを巻き込む時には絶大な力を発揮します
結局は世の中の変化を見極め、求められるシステム・サービスの形を考え、実際に作ろうと動ける人が一番強くなると考えています!!
ソフトウェアの世界というのは現実世界ではどうしても見えにく部分なので自分で手を動かしてプログラムを組んでみないとその技術の真意というのは見えてこないと考えています。逆にそれをできる習慣があれば人よりも早く可能性に気づくことができるので先手を打って準備することができます。そうすると自然と情報のアンテナも敏感になってきます。
情報過多の社会ですので必要な情報をキャッチアップしていく能力も非常に重要です。
これができるだけでもあなたは同期よりも間違いなく成長することができるはずです。
もちろん、プライベートの時間をしっかり設けて自分のやりたいことをやる時間も作りましょう!
常に100%だと倒れてしまいますので・・、マラソンを意識して生活すると良いかもしれません!
やる時はやる、休み時は休み とメリハリをつけていきましょう!
長くなりましたが、今回はここまでとしたいと思います!
これからエンジニアになられる皆さん、一緒に日本のIT業界を盛り上げていきましょう!!
もちろん、私も頑張ります!