自分は、エンジニアとして仕事をしているが学生時代も畑違いの勉強をしており、よくあるコンピューターサイエンス(CS)だったりアルゴリズムやデータベースの基礎やプログラムの基礎の部分が通ってきませんでした。(専攻は、建築だったり環境デザイン周り)
当時は、建築が好き専攻していったが今違う。畑違いの分野で仕事している。
エンジニアは常に勉強していかなければ行けない職業です。スポーツ選手でも練習し続けなければいい選手を維持できません。
よくある 野良エンジニア・IT土方 として仕事をしている感じで必要に応じて調べたり考えたりしてやってきた。(それでも仕事はできるが…)
基礎力もなければロジカルに考えることもなく、なんとなくでエンジニアとしてやって今日に至る。
正しい教養の基礎を学ぶ必要があります。以下がフロントエンドだろうが必須な教養だと感じている。
コンピューターサイエンス
データベース(SQL操作および設計)
アルゴリズム・データ構造
プログラムの基礎力(Java / Python / JavaScript / TypeScript)
フロント畑ですが、データベースとの接続周りの知識は必要になってくるため、どれか一つは基礎力として言語を使いこなせるように。
日本語と英語 は必須。プラス違う言語(中国語?)とかあったほうが視野が広がる
ネットワーク
論理的思考・ロジックの組み立て力(デバッグ力)
どれも本では読んではいるが、しっかりと理解できてないし、それを使いこなせていないのが現状課題と感じている。
基礎的な仕組みを理解しないまま進むと何が起きるのか?
なんとなくでもエンジニアとしては仕事は通るのですが、やはり正しいフォーム(教養やロジック力や知識)がないままではいかんと思ってる。ようするに場当たり的にやってるのでプロではなくアマチュア?レベルのままということです。アマチュアレベルも至っていないかもしれない。
バットの持ち方や振り方もしらないでバッターボックスに立ち、投球された(タスク)をただ打ってた気がする。(打ててないことも多々あるが…)
自分は、バスケやテニスをやっていたが、テニスも手元に届いたボールを打ち返す。ただ打ち返すだけはだめできちんとコートにボールを落とさなければいけない(きちんとタスク返せてる??)そのためには正しいフォーム(プログラムの基礎力・実装力)や動体視力(観察や論理的思考) と理解している。スポーツでは意識していたのにエンジニアだと情報がたくさんあるからなんとなくできてしまうかもしれない。
GAFAMやメガベンチャー・ベンチャー企業レベルのエンジニアへ到達するためには、やはりきちんとした教養と基礎である。
このレベルのエンジニアだと 応用情報技術者試験 も余裕で受かるのは当然みたいな感じ。
自分のGAFAMやメガベンチャー・ベンチャーはこんな感じだ。
GAFAM:メジャーリーガー級
メガベンチャー・ベンチャー:プロ野球
プロになるためには、たしかに派手に観客を喜ばせる能力だったり基礎以外の部分は必要にはなるが、それは基礎ができてることが前提である。
場当たり的なアウトプットではプロにはなれない。
今まさに自分が能力限界の壁にぶち当たってる。
土台がないまま進んだ結果、積み上げたジェンガも崩れそうな感じかな?
上記のあげた基礎的な仕組みをきちんとできてないから、その場でのコミュニケーションにも問題が起きる(この単語なに?とか。なんのことなのか?)。
いままではなんとなくで これはなんですか? とかで聞いたりして相手が自分のレベルに合わせて話してもらっていた。
よくあるつよつよエンジニア になるためには、エンジニアなら当然知ってる教養や知識がなければいけない。
やはりエンジニアはコミュニケーションが一番大事な部分だし、ここがしっかりとできていないと相手が苦労したり対等にコミュニケーションができない。
これからどうしていく?
エンジニアやめたいとかはなく、この仕事は続けていきたい。
ただやっていくためには、最初にあげた基礎をしっかり土台を作り直したい。これからエンジニアとしての土台を作り直す旅 にいく。
一朝一夕では身につくことはない。一個ずつ潰していくしかない。
手当たり次第で学んでいくスタイルではなく、一個ずつ完了していくことを目指す。
やはり資格から始めていくのが、一番良いのかもしれない。人によっては違うかもしれないが。まずは基礎の基礎は固めるための努力はしていきたい。