見出し画像

36歳建設業がプログラミングを始めてみる 【プロローグ】


そもそもプログラミングとは?

とにかくよくわからない。プログラミングを勉強した方が良いなどがあふれかえっているが、実際不足しているのはシステムエンジニア(SE)という話をよく聞く。プログラミングをする人=プログラマーではないのか?
ということで、そもそもプログラマーとエンジニアの違いもよくわからないので下記にて整理する。

・プログラミングとは?
コンピューター上で、ある特定のコンピューティングの結果を得るために、実行可能なコンピュータープログラムを作成することである。

Google調べ

・・・なるほど(笑) なんとなくわかった気がする。
例えがあってるかわからないが、家(コンピューター)を作るうえで、住めるようにする(結果を得る)ためにプログラムを組む=工事(屋根とか柱とか躯体工事)をしていくことね。※無理矢理感

では肝心な違いは何だろうか?

・プログラマーとエンジニアの違いとは?
 ‐ プログラマーは、コーディング作業や修正作業を担う
 ‐ エンジニアは、システム開発工程において設計から運用まで一貫して担う。

Google調べ

ふむふむ、どうやら役割が違うらしい。
簡単にいうと、設計士がエンジニアで、職人をプログラマーという解釈とするのが腑に落ちそうだ。設計士が動線を考えて設計図や仕様書(キッチン:LIXIL、トイレはTOTOなど)を作り管理し、その設計図、仕様書にしたがって職人さんが作っていくということだね。理解できた。

・プログラマーとエンジニアのそれぞれに必要なスキルとは?
 ‐ プログラマーは、プログラミング言語の知識や洞察力
 ‐ エンジニアは、プレゼンテーション能力やIT全般の知識

Google調べ

確かにプログラマー=職人は深い知識、経験(洞察力)が必要だ
設計士は、施主と会話するので人と話すし、職人とも関わるからコミュニケーションスキルと幅広い知識(法律、構造、管理)が必要になる。

プログラマーとエンジニアはどちらを目指すべき?

今、建設業界は職人(プログラマー)もいなければ、エンジニア(設計士/管理者)もいない。どちらも需要は高い。

ではIT界隈はどうだろう?

今までの情報を加味した上で「エンジニア」と「プログラマー」どちらの方が市場価値が高い=くいっぱぐれないのか?

個人的な見解は、「エンジニア」だと考えている。
理由は下記の通り

・たくさんの言語の種類があり流行り廃りがあるらしい
→せっかく深く学んだのに使われなくなる可能性がある
AI、ChatGTPの進化により、人が行わなくても出来るようになりそう
→人が行わなくても解決しそう
IT業界で不足している人材はプロジェクトを推進したり、どんなシステムを作るべきか考えられる人らしい
→要は職人はいっぱいいるが、設計士がいない状況

以上のことから、ある価値が出すことができ、AIなどの代わりがまだ先の可能性がある「エンジニア」を目指すのを正とする
※これは個人的な見解なので、怒らないでください

ちなみに色々見ているとエンジニアが仕様を決めて、実際行っているのは協力会社というパターンが多い。建設業の請負体制(元請け=設計管理 下請け=工事)にとても近いものを感じる

なお、建設業はAIが得意ではない領域(工事をする、コミュニケーションを行うなど)が多く、職人も人気がないために、今後も人手不足になると考えている。

エンジニアにも種類がある

どうやらエンジニアにもさらに種類があるらしい、、、マジかよ。

サーバサイドエンジニア(バックエンドエンジニア)
フロントエンドエンジニア
ネットワークエンジニア
インフラエンジニア
クラウドエンジニア  
….

さすがにわからない(笑)ここからこれが良いとは到底言えないので、とりあえずWebアプリケーションなどでユーザーが画面越しに触れる部分をメインで作っている「フロントエンジニア」が王道っぽいので「フロントエンジニア」を目指すこととする。

ロードマップ(行程表)を整理する

どのように学習を進めていくかを整理するうえで、Youtubeでちょうどよさげな動画があったので一旦その通りに勉強を行ってみる
参考:【ロードマップ完全版】Webフロントエンジニアになるための技術ロードマップを解説します
※何言ってるかよくわかっていません

動画によると下記のような進め方となる。

  1. インターネット

    1. HTTPとは何か?

    2. クライアント/サーバー

    3. APIとはなにか?

    4. なぜ動くのか

  2. HTML

    1. div,span,p,a…

    2. ブロック・インライン要素

    3. main,section,aside…

    4. SEOの基本

  3. CSS

    1. padding,magin,position

    2. flex,box,grid layout

    3. デザインカンプの模写

    4. レスポンシブ対応

  4. Javascript

    1. 基礎文法(if文,for文)

    2. DOM操作

    3. Fetch API

    4. 非同期処理(async await)

  5. GitHub

    1. git add,commit,push

    2. git branch,checkout,merge

  6. パッケージマネージャー

    1. npm

    2. yarn

    3. package.json

  7. フレームワーク

    1. Svelte ×

    2. jquery △

    3. React/Next.js

    4. Vue/Nuxt.js

    5. Angular 〇

  8. CSSフレームワーク

    1. TailwindCSS

    2. Bootstrap

    3. Material UI

  9. ビルドツール

    1. バンドラ

      1. Vite

      2. Webpack

    2. フォーマット

      1. Prettier

      2. Eslint

  10. テスト

    1. Jest

    2. Vitest

  11. 認証

    1. Firebase
      Authentication

    2. JWT

    3. OAuth

  12. Baas

    1. Firebase

    2. Supabase

    3. AWS Amplify

    4. PlanetScale

  13. Typescript

    1. string,number,boolean

    2. type,interface

    3. ジェネリクス

  14. ポートフォリオ作成

    1. オリジナルWebアプリ

    2. 動画教材

    3. アプリクローン

  15. 転職活動

以上です。まずは、目標の整理と進め方を整理しました。
ではここから一つ一つステップアップしていきます!!


つづく

この記事が気に入ったらサポートをしてみませんか?