コンピュータサイエンスを独学しようと決めた時のこと

新卒で就職した大手の SIer を、ぼくは 2 年半ほど働いて退職した。
転職先を決めずに、清水の舞台から飛び降りる気持ちで辞める決意をした。どうしてもコンピュータサイエンスを基礎から学びたかったのだ。

ぼくは文系の学部卒で SIer に就職したのだが、研修の際にプログラミングの楽しさに目覚め、コンピュータや Web サービスが大好きになった。

その会社の配属面談のときインフラ系の部署を志望して、運良くその部署への配属が決まった。
インフラ系の部署を志望したのは、研修で学んだ Web アプリケーションやデータベースに関して、いったい内部でなにがどうなっているのかがまったくわからないことが嫌で、それらを知りたくて勉強したくてしょうがなかったからだった。

プログラミングはとても好きだったし適性があるとも思っていたが、文字通り応用技術であるアプリケーション開発より、基礎的な知識や技術を必要とするインフラの分野でスペシャリストになりたいと思っていた。

というより、コンピュータの内部やネットワークの仕組みをきちんと習熟したい。そしてそれらを「技術」として自分の強みにして貢献していきたい。
そんな思いだった。

基盤よりの技術や新しい製品を次々に学ばなければいけないインフラエンジニアの仕事は、それなりに刺激的だった。

しかし、勉強すればするほど、技術を身につければ身につけるほど、もっともっと深い仕組みの部分が知りたくなっていった。

メールサーバや DNSサーバ、LDAPサーバ、ネットワークなどの技術に関してはそれなりに詳しくなり、なんとかそれで仕事がまわせるような感じにはなっていった。
しかしまだまだ、ぼくにはさっぱりわからない、知りたいことが山ほどあった。

なぜ日本からアメリカ大陸にある Web サーバにアクセスすると、一瞬のうちにブラウザにページが表示されるのか。
なぜコンピュータはそんなに高速に計算を処理でき、ネットワークは高速に情報を伝達できるのか。
CPU は実際どのように計算を行っているのだろうか、なぜあんなに小さいのか。

そんなようなことを知りたくてしょうがなかったぼくは、『ネットワークはなぜつながるのか』『コンピュータはなぜ動くのか』といった書籍をはじめ、いろいろな本を読んだ。
しかしそれでもなかなか腑に落ちない。

コンピュータの中でなにが起きているかということ、通信が発生した時にどの機器でどのようなプログラムが走っているかということに関して、なんとくなくはわかってきたものの、頭の中がまだまだぼんやりとしていて、どうも気持ちが悪い。

そしてある結論にいたった。
コンピュータサイエンスを基礎から積み上げて学習し、それらを全て体系立てて知識として身につけなければならない。

コンピュータサイエンス専攻の学生が学ぶカリキュラムや教科を調べ始め、そこにはおおよそぼくの勉強したい内容が一覧化されていることに喜んだ。
しかしそれらを仕事の合間に勉強するには圧倒的に時間が足りない…

また、そんなこととは別にぼくはだんだん「まだ世の中にないようなものを作りだすソフトウェアエンジニア」という存在に憧れ始め、自分もそういうエンジニアになりたいと思うようになっていった。
そしてそのためにも、コンピュータサイエンスを学ぶことは明らかに必要であるという思いもあった。

仕事を辞めてコンピュータサイエンスの学習に専念しよう。
そんな思いでぼくは、SIer を辞めるという決断にいたった。
転職するわけではなく、コンピュータサイエンスを学ぶために。

そうしてそれから一年ちょっとの間、ぼくはエンジニアのアルバイトをほそぼそとしながら生活は貯金を切り崩してまかないつつ、コンピュータサイエンスを独学することにした。

その時代、どのような勉強をしたのか、どういう生活をしていたのかという話については、また明日。

いいなと思ったら応援しよう!