フルスタックエンジニアとは?
フルスタックエンジニアを目指す為に必要な内容は決まっています。
開発を行う全ての分野に言える事ですが
「 問題解決に必要な仕組みを作りあげる 」
がエンジニアには必要ですが、
その為には
1「 解決する問題を明確にする 」という要件定義と
2「 どのような手順で、その問題を解決するか? 」という設計(基本設計、詳細設計)
が必要となります。
ここで大切なのは、プログラミング言語を習う事が決して上記の定義にイコールになりえないという事です。
☓ プログラミング言語習う = 問題解決の仕組みが出来上がる・・・・?
1 基本意識、モチベーションの問題
1-1 フルスタックエンジニアに必要な物は何でしょうか?
プロスポーツ選手で例えれば問題は明確です。
基礎が出来て応用ができて、試合経験から戦術、戦略の理解の上にイマジネーションが発揮される状態
誰もが納得するプロスポーツ選手像だと思います。
そして、このような活躍に必要な「 時間の投資 」「 練習 」「 経験 」が、どれほどの量が必要なのか想像できると思います。
一般的にプロスポーツ選手になるには1万時間(10年)ほどの時間が必要とも言われています。
1-2 「 時間の投資 」「 練習 」「 経験 」を持続させるには?
「 時間の投資 」「 練習 」「 経験 」を持続させるのは用意ではありません。
大前提として
「 好きだから出来る 」
という事があったとしても、必ず
「 難しいから挫折 」
という要素がついてきます。
フルスタックエンジニアを目指す以上は、得意不得意は 「 問題解決のブラックボックス 」を多数生んでしまう要因となります。
問題解決においてのブラックボックスは 要件定義を不可能にし、欠陥のある設計を行ってしまう原因になります。
2 フルスタックエンジニアとしての習慣
「 問題解決のブラックボックス 」を産まない為にも、エンジニアとして一番大事な事は
得意分野は多ければいい。
苦手分野は少ない方がいい。
という事に尽きます。
人は「 全知全能の神 」にはなれない以上、「 時間の投資 」「 練習 」「 経験 」を積み重ねるしか方法はありません。
しかし好きなことだけをする、難しいから、苦手だから手を付けずにおいておくという状態は望ましくありません。
よって、フルスタックエンジニアに必要なのは
☓ 狭く深い知識、スキルを身に着けようとする事
ではなく、
○ 広く、そこそこ深い知識、スキルを身に着けようとする事
です。
このような意識付けがあり、それらが習慣化されているエンジニアは間違いなく フルスタックエンジニアとしての道筋を歩んでいるといえます。
次回
今回は、「フルスタックエンジニア」として要件定義になります。
次回以降、そのように自分自身をマネージメントする、つまりは自分自身をどのように設計するかを進めていきます。