IT + X

ITと何かのコラボレーションは時代を変えるかも

ITエンジニアになりたい人が就職する前に学んでおくべきこと

最近、ITエンジニアになりたいという若い人のツイートをよく見ます。
私がITエンジニアなりたてのころは、未経験でも雇ってくれる会社は結構あってITエンジニアになりやすい時代でした。
しかし、PCやソフトウェアは高くて、Unixマシンは数百万以上していて個人で買えるようなものではありませんでした。
それに比べれば、今はPCは20万も出せば最高スペックのものが買えるし、開発ツールもほぼ無料で使うことができます。
また、書籍やネット上の情報もたくさんあって、自分でいくらでも学ぶことができるのでいい時代になったなと思います。

ただ私もそうでしたが、全くの初心者だと何から学べばいいかわからないので、高額なスクールに行く人が多いのでしょう。
しかし、何を学ぶべきかわかれば独学で安く学ぶことができます。
ということで、初心者の方がITエンジニアとして就職する前に学んでおくべきことをまとめてみました。

私がエンジニアになったころは、仕事をしながら勉強するしかなかったのですが
日々の業務を行いながら学ぶのはかなりきつかったです。
なので、事前に必要なことは学んでおくことをお勧めします。
ただ、プロジェクトによって必要なスキルは変わってきますので、最大公約数的なこれは学んでおくべきことだろうと思われるものを選びました。
それでも、結構な量になってしまいましたが。
とりあえずは、一般的なソフトウェア開発(ウェブ、業務システム)を行うエンジニアを想定しています。

プログラミング言語

初めて学ぶ言語は何でもいいと思います。
なぜなら、どのプログラミング言語も同じような機能であることが多いからです。
ただ、学びやすい言語を選んだほうがいいでしょう。

初心者におすすめの言語はC#です。
理由は、C#は今どきの言語が備えておくべき機能を装備していて、文法にクセがなく、プログラムロジックに集中できる言語だからです。
その上、C#の開発用IDEであるVisual Studioがよくできていて、エディタで編集している時にスペルミスなど単純なエラーは教えてくれるのでコーディング効率は高いです。

また、ウェブ開発ではJavascriptが必ず必要になりますが、最初にやる言語としてはおすすめしません。
なぜなら、言語として結構クセがあり、型のない言語なのでデバッグがしづらいという性質があります。
なので、Javascriptはプログラミングになれた頃に学ぶのがいいでしょう。

プログラミング言語は、自分で書いて動かしてみないと習得できませんので、
本で大体の書き方を理解したらどんどん自分でプログラムを書いてみましょう。

C#Javascriptのおすすめ書籍

開発ツール

プログラム開発を行う上で開発ツールを使うことは必須のスキルです。
その中でもエディタは、必ず必要になる開発ツールです。
Visual Studio CodeなどのGUIベースのエディタも人気がありますが、
エンジニアであればVimをマスターしておいたほうがいいでしょう。
なぜなら、Linuxサーバーのようにターミナルでしか作業できない環境でも、Vimは必ずインストールされています。
キーバインドも慣れるととても使いやすいので、ぜひVimをマスターしておいてください。

また、ソースコード管理のGitコマンドの使い方も、ITエンジニアならマスターしておくべきです。
さらに、今どきのソフトウェア開発ではGitHubを使うことも多いので、プルリクエストやイシュー管理なども使いこなせるようになっておきたいところです。
GitHubと合わせてJenkinsやCircle CIなどのCD/CIサービスにもなれておいたほうがいいでしょう。
CD/CIサービスとは、GitHubと連携して自動でテストやデプロイを行うためのサービスです。
CD/CIによって開発効率は格段に上がりますので、知識だけでなく使いこなせるようになっておきましょう。

エディタ、GitHubのおすすめ書籍

データベース

データベースは、あらゆるプロジェクトで必ず扱うことになる技術です。
主に、プログラムからDBに対してSQLによる問い合わせを行うことになるので、
DBの基本とSQLの書き方については熟知しておくべきでしょう。
また、DB設計は経験のあるDB専門のエンジニアが行うことが多いですが、
できればDB設計できるくらいの知識も学んでおいたほうがいいでしょう。

データベース、SQL

達人に学ぶDB設計 徹底指南書

達人に学ぶDB設計 徹底指南書

ネットワーク

現代のITシステムは、スタンドアロンで使われることは少なく、
ほとんどがネットワークに接続されていて、プロトコルとしてTCP/IPが使われています。
また、通信系のプログラムでは、パケットキャプチャーソフトなどによってどのようなやりとりが行われているか見る必要がある場合もありますので、パケットキャプチャーデータの見方も学んでほしいところです。
TCP/IPの知識も、ITエンジニアにとって必須の知識ですね。

TCP/IPのおすすめ書籍

サーバー

サーバーは、どちらかというとインフラ系エンジニアの範囲だと思われていますが、
サーバー側のプログラムを作る時は、サーバーについて知っておく必要があります。
まずは、Linuxサーバーについて学んでおいて、余裕があればWindowsサーバーにも挑戦してみましょう。

サーバーのおすすめ書籍

コンピュータアーキテクチャ

コンピュータの構造や基本となる理論についての知識が、実際の仕事で必要になることはありませんが コンピュータがどのように動いているかについての基礎知識は学んでおいたほうがいいと思います。
「コンピュータシステムの理論と実装」では、ハードウェア部分のデジタル論理回路からOSまでを網羅した内容になっていて
コンピューターの動作がイメージしやすい内容になっているのでお勧めの本です。

コンピュータアーキテクチャのおすすめ書籍

アルゴリズム

アルゴリズムも、実際のプロジェクトで必要となることは少ないですが、
これも基礎知識として学んでおいたほうがいいでしょう。
「問題解決力を鍛える!アルゴリズムとデータ構造」という本がC++で解説してますので、ついでにC++も学んじゃいましょう。

アルゴリズムのおすすめ書籍

スラスラわかるC++ 第2版

スラスラわかるC++ 第2版

セキュリティ

ITシステムを構築する上で、セキュリティはいまや最も優先度の高い問題となっています。
ウィルスやデータ改ざん、盗聴などいまやITシステムは様々な脅威にさらされています。
ITエンジニアとして、セキュリティに関する知識も必須と考えるべきでしょう。

セキュリティのおすすめ書籍

セキュリティ技術の教科書 第2版 (教科書シリーズ)

セキュリティ技術の教科書 第2版 (教科書シリーズ)

  • 作者:長嶋 仁
  • 発売日: 2020/03/18
  • メディア: 単行本(ソフトカバー)

設計方法
ソフトウェアを開発するためには、プログラミング言語を習得するだけではだめで
どういう構成にするかが重要になってきます。
今どきのプログラミング言語オブジェクト指向言語ですので、クラスやオブジェクトをどう設計するかというオブジェクト指向設計について知っておく必要があります。
また、そのオブジェクト指向設計でよく使われるパターンはデザインパターンとして整理されています。
仕様変更に強い設計を行うために、オブジェクト指向設計デザインパターンも学んでおくべきトピックです。

設計関連のおすすめ書籍

プロジェクト管理
プロジェクト管理というとプロジェクトマネージャーの仕事だと思われがちですが、
エンジニアもプロジェクト管理について知っておく必要があります。
なぜなら、大抵のプロジェクトは予算も期間もギリギリであることが多く、
途中で仕様変更を押し込まれることが多いので、理不尽な要求ははねつけるためにも理論武装が必要になります。
そして、不確定性の高いプロジェクトではアジャイル開発やスクラムといった方法論が使われることが多くなりました。
デスマーチプロジェクトに巻き込まれないためにも、プロジェクト管理についてはエンジニアも知っておくべきです。

プロジェクト管理のおすすめ書籍

英語
今や日本語のIT情報は、書籍やネットから多く得られるようになっていますが、最新の情報など英語での発信がメインとなっている情報もたくさんあります。
特に、詳細な技術情報は英語でしか得られないことが多いので、英文を読めるスキルはエンジニアには必須のスキルとなっています。
さらに、文章を書いたり会話することができるようになるのがベストですが、まずは英文を読めるように努力してみましょう。
ただ、外国語の習得はテスト勉強のように短期集中でできるものではなく、長い時間をかけてたくさんの文章に触れる必要があります。
なので、興味のあることを英文でたくさん読んでみましょう。
「Hackers」は、マイクロソフトやアップルがシリコンバレーでどのように起業されたかの歴史を解説した内容になっていて、日本語訳も昔出ていました。
ITエンジニアには興味深い内容になってますし、Kindleだと電子辞書が使えるのでわからない単語を調べながら読んでみてください。
根気強く読んでいれば、いつの間にかスラスラ読めるようになるのでがんばってください。

Hackers

結論

かなり盛りだくさんになってしまいましたが、ITエンジニアをめざすならこれくらいは学んでほしいところです。
ただ、全てを完璧に理解しようとせず、どれか一つを深くやって他はおおまかな知識だけでも頭にいれるようにすればいいと思います。
ソフトウェア開発エンジニアだと、プログラミング言語と設計あたりを中心にやったほうがいいでしょう。
そして、就職したあとに他の分野も深めていけばいいと思います。
基礎がしっかりしているエンジニアになるには時間がかかるものですが、技術が変わってもキャッチアップして息長く働けるエンジニアになれるでしょう。
ぜひ、そんなエンジニアを目指してください。

最後に、ITアカデメイアというITエンジニア向け学習動画サイトをやっています。
これからITエンジニアになりたい方向けのコンテンツを提供していますので、よかったらチェックしてみてください。

ITアカデメイア https://www.it-akademeia.jp/ www.it-akademeia.jp