幅広く手を出すことで、結局深く学ぶことができる

Share on:

1 つのことにこだわりすぎるんじゃなくて、いろいろやってみたほうがいいですよーという話です。

僕はサーバサイドエンジニアという、プログラムの内側を操作する系のエンジニアなのですが、最近フロントエンドとかインフラもやるようになって、サーバサイドの知識が増えたなーと感じてます。
 なぜかと言うと、いろんなことが繋がっているから、学んで無駄になることがないからですね。サーバサイドもフロントもインフラもデザインも 1 つのプログラムを作る過程であって、もし一人で WEB サービスを作ろうとするなら、全部の知識が必要になります。
 特に日本の正社員は、総合職的な働き方をするので、サーバサイドエンジニアという肩書を持っていても、デザインをやらされることがあります。未熟なうちはなおさらです。なので、幅広くやってみることは、最終的には 1 つのことを突き詰めるよりも深い知識が身につくと思ってます。

フロントエンドをやってみたら知識が深くなった

最近、SPA というページを遷移させずに動作するプログラムを作っているのですが、フロントエンドの技術を使います。今までは、ボタンをクリックしたらページを移動させるのが当たり前だったので、ページを移動させるタイミングでデータを送信したり、入れ替えたりすればいいよね、という認識だったのですが、SPA となるとそうはいきません。
 裏でデータを動かしたり、1 つのページにいくつものデータをあらかじめ持たせておくなど、新しい技術が登場するわけです。そうなると、データってどうやって送信されてるんだっけ?とか、データを取ってきて表示させるには、どんな技術が使われているんだっけ?と考えるようになります。

SPA というのは UX 的にはとても良いのですが、作る側としては、結構面倒ですし、制限されることも多いです。だからこそ、深い知識が必要になるのです。
  Rails や Laravel みたいな流行りのサーバサイドフレームワークは、コマンド 1 つで何でもやってしまうので、知識がなくてもできるのですが、フロントエンドを触るようになったら、1 から学びなおしという感じで、勉強になります。

インフラは初心者がハマる道

初心者は、Progate からやる人が大半だと思うのですが、Progate は環境構築をしなくても動かせてしまうので、できた気になった人がいざ自分でプログラムを作ってみようと思った時に、インフラでハマります。これは絶対です。

今でこそ Docker という便利なサービスがあるのですが、僕が勉強した頃は、全部のプログラムをインストールするところからはじめましたし、Docker が簡単とはいっても、Docker の仕組みを理解するのも大変です。(僕は大変でした。。)

開発環境ができたら、Heroku にアップするのですが、そこで Git の使い方を学びますし、AWS に挑戦しようものなら、サーバと DB とドメインとストレージあたりの知識を一気に詰め込む必要があります。AWS の知識はインフラエンジニアでなくても、ある程度は知っておかないと開発を進められないので、ここでもハマるでしょう。

デザインは奥が深い

デザインには関わらないというサーバサイドエンジニアもいるかもしれませんが、一度やってみてもいいかもです。
 デザイナーの言う通りに作るだけでも仕事にはなるのですが、管理画面とか、問い合わせフォームみたいな無機質でも構わない部分とかは、デザイナーに任せずにエンジニアが自らデザインすることもありますし、コード化できるかどうかを考えながらデザインすることができるという強みがあるからです。

1 から自分で作ってみる

プログラミングを勉強するのにおすすめなのは、自分で 1 から作ってみることです。デザインを設計して、フロントエンドを使って SPA を作る。それを AWS とかで運用する。

ここまでできたら一人前です。サーバサイドだけ書いているエンジニアのはるか先に行くことができます。

サービスが当たればお金になりますし、当たらなくてもポートフォリオとしてアピールすることができます。やって損はないと思うので、やってみましょう。