フルスタックエンジニアになる為に必要な知識、技術
今回からは具体的にフルスタックエンジニアになる為の技術や知識の話になります。
技術や知識の定義は色々ありますが、これらの区分けを行うなら
- 技術とは「実現可能な問題解決手法」であり
知識とは「セグメント分けされた物理、事象への判断」です。
この2点には初期段階では意識しない知の罠が存在します。
知識による判断、技術による問題解決
問題解決には知識による判断と技術による問題解決がセットとなります。
例えば、ブラウザ上に文字を出力するにはどうすればいいでしょうか?
そのように考えるにも判断と技術が伴いますね。
どんな物事も、このローテーションに代わりはありません。
フルスタックエンジニアという場合は、この判断できる物事の幅と再現できる技術の内容が多いという事になります。
「 現在進行系で知識、技術を拡大する 」
しかし現実問題、全ての知識と技術を習得するわけにはいきません。
そこで浅く広くインデックス化していく必要があるのです。
目安としては知識としては関連を含め体系的に整理メモしていくのが最短でしょう。
また技術にしても最低限チュートリアルにあたる物に触れておくのが最低限のインデックス化につながります。
どちらか一方だけに偏るのは危険です。
知識に偏ればそれが何か答える事はできても、物事を解決する技術が身につきません。
また、技術に偏ればケースバイケースの判断ができず、応用予測の幅がなくなったり、いわゆる「写経状態」になる可能性があります。
知識、技術の応用、予想
ここからが重要です。
ある程度深くなった知識や技術は応用と予想を可能にします。
別の言い方をすれば、「一を聞いて十を知る」状態になるかどうかです。
今自分が持っている知識、技術をベースに「おそらくこうだろう」という事での応用や予想ができる状態になっている物、そうでない物を意識的にわける事ができるかどうかが最終基準となります。
改めて必要な知識と技術
サーバ、ネットワーク、クライアント(ブラウザ)
- サーバサイド
- Webサーバ、メールサーバ、アプリケーションサーバ、PUSHサーバ
- PHP,JAVA,Ruby,Python
OS,ミドルウェア
htaccess,各種conf
- LinuxベースOS管理、運用(ウィンドウズベースOS管理運用)
CMS(wp,mt他)
クライアントサイド
- HTML,CSS,JS
ネットワーク
- 各種ポート,SSL
- DNS,CDN,LB
制作、開発時
- プロジェクト管理(要件定義、基本設計、課題管理〜 納品、請求)
- 開発技術(バージョン管理、タスクランナー、トランスパイラ、フレームワーク・・・)
- コミュニケーションツール(メール、チャット)
- 課題管理、テスト、デプロイツール
その他、基本概念、学習方法
- OSI参照モデル など各種基本概念
- 情報収集方法
ざっと並べてみただけでも必要そうな情報はもりだくさんです。 浅く広くで良いので、これらの技術の概要とチュートリアル程度はいずれもこなす必要があります。
そして大事なのは、その過程で自身がまだ理解していない物がどの程度あるか把握しておくことです。そうすればそこにどれだけの時間とコストがかかるか予想がつきますし、必要な場合は選択肢としてエントリーできるでしょう。
また上記とは別に、自身のプロジェクトや仕事に特化した物に対しては学習コストを払って知識と技術を深める事をオススメします。