読者です 読者をやめる 読者になる 読者になる

エンジニアになって2年半くらいたったのでやったことまとめてみた

概要

文系未経験からITの世界に飛び込み2年と8ヶ月ちょっとたち、ようやく普通に仕事できるようになってきたのでこれまでどんなことをやってきたのか、どんなことを学んできたのかを振り返ってみたいと思います。

「文系だけど4月からSEになるけどどうしよう死ぬ」と思っている内定者の方や、「これからITの世界目指してみようかな文系だけど」と思っている方に少しでも参考になればいいなと思っています。

内定〜入社まで

そもそも自分は文系学部を卒業後25歳までフリーターでバンドをやっていました。そこからまともな求人がITしかなかった企画と開発の両方に携わり、将来は自らのWebサービスを持ちたいという思いからエンジニアとして内定を頂きました。

内定を頂いたのち、「入社までにこれ読んどいてね」とITパスポートの教科書を頂いて勉強することになったのですが、これがまあ理解できませんでした。

 

 「変数はデータを入れる箱です」←わからない

「クライアントサーバーシステムは、サービスを要求するクライアントと、要求されたサービスを提供するサーバで構成された分散型システムです」←もっとわからない

オブジェクト指向とはデータ処理やシステム操作を手続きの流れとしてとらえるのではなく”もの”及びその関係としてとらえて設計し、開発を進めていく考え方です」←そっと教科書を置く

 

学生時代に全くITに触れてこなかったため、はじめはかなりちょっとなに言ってるかわからない状態が続きました。

あ、これ結構まずいかもしれないと思い、ネットで調べた良さそうな本を図書館で借りて読んだりしていました。これはやっておいて良かったです。

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

 

人によって理解しやすい説明のされかた、というのがあるような気がして、例えば自分の場合だったら「変数はデータを入れる箱です」と言われるより、「変数はメモリ上にデータを記憶させるための領域に名前を付けたものです」と言われたほうがピンときました。これは個人差があるものだと思うので、同じ題材でもいろんな教材から学んだほうが理解が深まると思います。「ああ、変数がデータを入れる箱ってそういうことね」みたいなアハ体験をしたものが知識として定着しやすいと感じます。

 

入社してから

この業界は自社サービスを開発するのではなく、他社のサービスを開発するために自社の社員を派遣する、というのがメインの売上というパターンが多いです。また、自身のキャリアパスもどのようなサービスの開発に携わるか、というところに大きく左右されます。

自分はそのあたりの業界模様をあまりよく理解していなかったので、人事部の「君は何がやりたい?」という今後を大きく左右する問いに「わたくし、何でもやります!」と答え、その結果、ビジネスマナーとExcelの使い方を学んだ新入社員研修の思い出を胸に、他社のプロジェクトに派遣されたのでありました。

この業界「何でもやります」は結構禁句です。

 

あ、このあたりでしれっとITパスポートとった気がします。とりあえず最初はホントになにやればいいかわからないと思うので、ITパスポートを目標にするといいんじゃないかなと思います。

 

配属

最初に配属されたプロジェクトは某大規模通信システムでした。開発言語はC、C++、OSはUNIX/Linux。知っているものは皆無でした。

「とりあえずLinuxはできるようになってくれ」とのことで、とにかく必死で勉強しました。

Linuxやれと言われたらLPIC level 1を受験するのがおすすめです。試験料は死ぬほど高い(¥30,000をゆうに越える)ですが、業務中に「これ進研ゼミでLPICでやった...!」と思える瞬間が結構多かったです。

とはいえ初学者がいきなりLinux教科書(通称あずき本)に手を出すと撃沈する可能性大だと思うので以下の本がおすすめです。自分はこれでだいぶスムーズに勉強することができました。

1週間でLPICの基礎が学べる本 第2版

1週間でLPICの基礎が学べる本 第2版

 

とはいえこれだけだと恐らく合格できないのでこれを読んだ後にあずき本に挑戦するのがいいと思います。

 

Linux教科書 LPICレベル1 Version4.0対応

Linux教科書 LPICレベル1 Version4.0対応

 

 

また、平行してネットワークの勉強もある程度したほうがいいと思います。

知らないとPCセットアップ中、環境担当の方に自分の使用するIPアドレスを聞いたとき「ちょっとまってね、えーと、(192.168.)10.11を使って」と言われ、IPアドレスの欄に「10.11」と入力した状態で「すみません、繋がらないんですけど...」と聞き、閉口されたりします。

というか、そんなそこ(192.168)は固定だなんて普通に暮らしてたら知らなくないっすか?俺だけっすか?そうっすか...

勉強しましょう。

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

 

これとかでも十分だと思います。 

3 Minutes Networking

 

また、10月には基本情報技術者試験に合格しました。

でおなじみの情報処理技術者試験ですが、こと文系未経験の場合、IT業界に進むということは地図を持たずに大海のど真ん中に置き去りにされることと同義なので、ある程度業界全体の知識を持つということはよかったなあと個人的には思います。

(たしかにこれをもっているから仕事ができるとかそういう類のものでは全くないです)

 

そんな感じでようやく素人に毛が生えたレベルまで到達した自分は、システムの障害対応だったりマシンセットアップだったりテストだったりと様々な業務に携わりました。

f:id:cobble:20161122232320j:plain

こんな感じのところでコンピューターをガッチョンガッチョンしてたときはさすがにテンションMAXでした。もう漢のロマン。

2年目突入

この辺りでふつふつと、「あれ、俺がやりたかったのってコンピュータガッチョンガッチョンだっけ...?」との思いが沸き上がってきました。

とはいえ、まだまだ半人前の身分ですし、とりあえず勉強しとくかということで応用情報技術者試験に合格しました。

平成28年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

平成28年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)

 

これは意味があったかと言われれば正直かなり微妙ですが、これに合格したおかげで会社からいっぱいお金もらえたのでよかったです(小並感)。

 

1年目はずっと保守・運用系の仕事をやっており、全然プログラミングをやっていませんでした。

全然プログラミングできないってマズくね?なんとか開発の仕事をとりたくね?の一心から、現場で採用されているC言語の勉強を本格的にスタートしました。

いまさらCやるやついるのかって気もしますが、おすすめは以下の2冊です。

これでポインタアレルギーは解消できます。

C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

 

LinuxコマンドをCで開発したりするので、LinuxもCも詳しくなれるという一石二鳥の本です。最初にオリジナルcatコマンド開発した時はテンション上がりました。

ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道

ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道

 

 

2年目以降自分に与えられる業務は開発ではなく要件定義や設計といった、いわゆる上流工程が多くなってきました。

これはこれで大変やりがいのある仕事ではあったのですが、ドキュメント作成が業務の大きなウエイトを占めるようになり、エクセルやパワーポイントと向き合う日々が続きました。

「エンジニアになったけど全然プログラミングしていない。これで別のプロジェクトに行ったときに果たして自分は通用するのだろうか」という思いが日増しに強くなっていました。

 

そんなときに友人のエンジニアが「だったら一緒にWebサービスでも作ってみる?」と言ってくれたので、ふたつ返事でOKしました。

 

カルチャーショック期到来

その友人のエンジニアとは音楽が共通の趣味だったので、それを通じてこんなサービスにしよう、という草案は簡単にできあがりました。

しかし、じゃあ開発しようとなった時に相当なショックを受けました。

「じゃあ開発言語はJavaフレームワークはSpring Bootを使おう。まあ見た目はとりあえずBootstrapで作っちゃって、サーバもとりあえずHerokuでいいよね。AWS使ってみたい気もするけど。あとでGithubリポジトリ作っとくからcloneしといてね。」

「」

 

業界が違うだけでこんなに必要となる知識が違うのかと痛感しました。

自分はとりあえずしっかり勉強していればなんとかなると思っていましたがそうではなく、自身がまずはやりたいことをしっかりと見定め、そこに向かってしっかりと知識を積み上げなくてはいけないのだと思いました。

 

それからというもの「やはりWebサービスが作りたい」という思いが強くなり、忙しくなる一方の業務の合間をぬってWebアプリ開発の勉強していましたが、業務の合間では到底時間が足りないこともわかってきました。

Javaの資格をとって社内にWebやりたいですアピールをしてみたりもしました。

オラクル認定資格教科書 Javaプログラマ Silver SE 7

オラクル認定資格教科書 Javaプログラマ Silver SE 7

 

 

3年目〜そして転職へ

3年目になり仕事自体は順調に来ており、将来的にリーダー引き継ぐ?みたいな話も出たり出なかったりしたのですが、即ちそれはずっといまのプロジェクトを遂行していくということでした。

周りを見渡せばこのプロジェクトに10年以上いる人、ずっと同じ技術しかやっていないという人が少なからずいました。これは他社、他のプロジェクトでも珍しいことではなく、何年も派遣先で働いていて会社への帰属意識が全くないというのがIT業界ではよく問題としてあがります。

 

自分は「このままではパイが空くまで待たなければならない。今すぐWeb開発に携わりたい。」という思いから転職に踏み切りました。

 

Webやるよ!

というわけで7月から今の会社にきました。

最初につまづいたのはSQLです。「Excelと何が違うん?」くらいの感覚でしたが、データベースはシステムの肝です。最近はSQL書かんくてもDB操作できるんやで!っていうORマッパーがたくさんありますが、まだまだSQLを理解しながら書かないと大きいシステムだとすぐ遅くなります。(遅くなりました)

これでまずは基礎固めしました。

CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

CD付 SQL ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)

 

あとかなりストイックな本ですが、これを1冊やればSQLへの苦手意識はなくなります。

改訂第3版 すらすらと手が動くようになる SQL書き方ドリル (WEB+DB PRESS plus)

改訂第3版 すらすらと手が動くようになる SQL書き方ドリル (WEB+DB PRESS plus)

 

 

Javaに関しては手元にこれを置いてました。ポケットブック的な使い方もできますし、普通に読んでいっても力つきます。

Java逆引きレシピ

Java逆引きレシピ

 

 

あとはこれとかは「果たして俺はオブジェクト指向を理解できてるのか?」の試金石みたいな感じで読みました。

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

 

あ、あとこれは割と必読書なんじゃないですかね。プログラミングも本質はコンピュータとの対話ではなく人間とのコミュニケーションだという大切なことに気付かされる本です。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

 

 

こんな感じでプログラミングの基礎的なところが固まってきました。あとは「Webサービスが作りたい!」というゴールに向かってひたすらに知識を積みあげていく(フレームワークだったりgitだったりフロント周りだったり)というところでようやく迷いがなくなってきたところです。

ちなみに、今はRuby on Railsでの開発に従事しています。

 

強引にまとめ

やりたいことが明確に見えてなかった自分はとりあえず2年目までITでも基礎的なところの学習に終始していたのですが、いまとなってはすごくよかったなと感じています。

というのが、業務でプログラミングを本格的にやるというのがここ数ヶ月が初めてだったのですが、意外と違和感なくこなせているからです。

恐らく、ある程度コンピュータのアーキテクチャやネットワークの動きを想像しながらプログラミングできたり、サーバ周りの設定でつまづいたりしないからなのではないかなと思っています。

文系から入社してすぐに何がやりたい?と聞かれてもそりゃ答えられないよ、って人も多いと思うので、そんなときは焦らずに基本情報、ネットワーク、サーバ周りといった基礎的なところをしっかりと固めていけば、いざこれやりたい!となったときにもスムーズに対応できるようになると思います。

 

あとがき

最近はnode.jsで社内のシステムを作ってみたり、Ajaxで遊んでみたりといろいろなことができるようになって、ほんと楽しいです。

とはいえ、まだまだ素人に毛が2本くらい生えたレベルの技術力だと思うので、もっと精進したいなと感じています。

 

確かに文系出身の方には簡単ではない業界だと思いますが、2年半くらいがんばれば結構楽しくなってくると思いますよ!