卒業して8年経った今、高専の授業をふりかえり、初心を思い出す

基礎の授業は面白さは少なく、ついていくのが精一杯だった記憶のほうが多いのだけど、時たま授業の内容が生きているなと感じることがあります。

よくあるなぜ勉強しなくてはいけないのかという問いに、自分なりの答えを持ちたい気もしつつ
初学者に教える際にどこまで基礎をやるべきなのかという問いに、良い道標を示したい気もしつつ
授業内容の中で生きてきたもの、使ってないものを改めて確認して、使ってないけど実は今後出番があるかもしれないものを掘り出したい気もしつつ

ただただ酒を飲みながら、一人でエモ老人会を書き連ねたいだけです。(ただそうはいかなさそう)
である。ます。口調がいつも以上にブレてます。

高専のシラバスを振り返る

弊高専は過去のシラバスを公開していました。
内容は情報通信工学で、一言でいうと電子回路7割、情報系3割位の学科(厳密に言うとコース)です。

全学科のページ https://www.metro-cit.ac.jp/major/syllabus_h27.html
該当するシラバス https://www.metro-cit.ac.jp/contents/000001702.pdf

厳密に言うと卒業年度が5学年、-1年が4学年と若干変わっていることもあるのですが、面倒なのでH27年のものを上から見ていきました。

結果

はじめはこんな授業やったなーという感じなのですが、学年が上がるに連れ、「やったはずだが記憶にない内容」が増えていき、頭痛が…
(記憶喪失した人が、思い出しそうで思い出せない感覚?)

キーワードで検索し数式とかを見ると、やったようなやってないような…思い出せそうな思い出せなさそうな…

とりあえずTwitterに投稿

頭痛を感じながら、書きたいことをだらだらと続けていきます

授業内容の抜粋

シラバス見るもの好きがいるかも知れませんが、見ない人のほうが多いと思うので、内容をざっくり挙げておきます。

  • 電気回路(RCL直列並列、過渡現象とか
  • 電子回路(LC発振回路、水晶発振回路、オペアンプとか
  • 電磁気学(ガウスの法則、ビオ・サバールの法則とか
  • 応用数学(微分積分、線形代数、フーリエ級数、ラプラス変換、マクローリン展開とか
  • 応用物理(単振動、慣性モーメント
  • 情報数学(射影と写像、離散分布(平均、分散、偏差)とか
  • 通信工学、伝送工学
  • プログラミング(C言語)
  • アルゴリズムとデータ構造(ソート、ハッシュ、2分探査、待ち行列とか
  • コンピュータ工学(演算やCPU
  • コンピュータネットワーク(OSI7階層
    • Cat5のケーブル自作から、複数ルーターのネットワーク構築、Linuxサーバーのセットアップ、簡単なWebアプリケーションの制作までやった)
  • 上記内容の実験実習+レポート
  • その他選択授業や卒業研究など

実習のレポートが大変だったのはもちろんのことですが、前期で苦戦していた数学の内容が、後期の専門科目で使う羽目になり嫌でも習得せざるを得ないみたいなことが何回もありました。

専門科目の一部は、役に立つか分からない部分もありましたが、少なくとも数学の内容は学習した直後から専門科目で出番があると言うのは、幸か不幸か学習内容が別の領域で繋がる「使う出番が無いなんてことは無い」体験でした。

ちなみに高専は専門科目に比重をかけている分、文系科目はかなり削っています。これは一般科目のシラバスを見ればお分かりかと思います。技術に全振りしているのでコミュニケーションや人文学的要素が失われている危機感はかなりあります。
※英語も改善しようとしているもののまだまだ、高校の進学校レベルには満たないと思います。(自分はそんな英語も単位を落としかけるレベルで弱い)

エモふりかえり

感傷に浸るというより、こんなのやったっけ???という頭痛のほうが勝っているのですが…

インフラエンジニア的な面

とりあえず情報寄りの内容は、応用情報技術者の取得しかり、実務で活躍しています。
とはいえLinuxサーバーを実務レベルで使いこなせるようになったのは、2社目でLpicの勉強&実務やった後です。(在学中CentOSで自宅サーバを動かしていた時期もありましたが、まじでコピペレベルでした)

このエピソードだけふりかえっても、当時はコピペレベルや授業レベルでやっていたことでは実務レベルで使えることはないが、実務をやったことでできるようになったわけです。
この感覚は初学者の立場にかなり近い気がします。結局自分はどこでサーバー力を実務レベルに越境できたのか。この辺は未だに言語化しきれません。(新卒の会社はWindowsServerとネットワークが中心でしたしLinuxを実務で触るまで5年位ブランクが合ったわけです。その間1度Hyper-V上にCentOS建てようとして挫折したこともある)

例えるならばRPGのダンジョンで、座学中は1マス分しか周りが見えないし、マップも進んでいくにつれ消えていく。ただ何度かダンジョンに行くにつれ見える範囲も広がるし、マップもより遠くまで残っていく。隅々まで見ていき宝箱を探す余裕も出てきたり…そんな感じな気がします。
パーティーもクラスという大人数から、いても先輩エンジニアに変わり得られる経験値も違う的な。

数学周り

数学周りは、データ分析ないし機械学習するときに最近改めて出てくるのですが、これもまた微かにやった気がする内容で、解説サイトを見るとなんとなく記憶が蘇って来るパターンもあります。(ただ確率周りは離散分布まででその先は本当にやってないっぽい)

電子回路周り

社内では一応IoTデバイスを作っている面もあり、雑談の中で低周波ノイズ高周波ノイズの話があったりと過去の学習の記憶に引っかかるような話をすることがあります。
そんなこともあり、電子回路周りは改めてダンジョンに潜り記憶を呼び覚ましたい気持ちも生まれてくる~~~~
身近に「回路から Web までカバーするエンジニアリングを提供。」※2023セキュリティ・キャンプ講師とか言っているルーター芸人もいるわけで。

そこまで行かずとも、せっかくIoTデバイスを作っている会社にいるのだから、もう少し回路に強くなりたい気はしつつ、突き詰めないと先々のキャリアで活かしにくい領域でもあるのが悩みどころではある。(今後デバイスを扱う業界に興味があるかと言うと、そこ自体にあまり深いこだわりがなかったりもする)
一時期はAruduinoとかでLチカしたり、WiFiモジュール使ったりしたが、そこから先が続かなかったこともある。

ちなみに第二種電気工事士の内容は強電なので、弱電が中心の電子回路では被る部分もありつつも、三相回路など知らない領域もあったりはした。(覚えていなかっただけという可能性もある)

プログラミング周り(挫折含む)

これが実は厄介な部分がある。

まず現状は実務レベルのプログラミングは、Pythonやshellなどの100行前後のスクリプトならOK
プログラミングなのかはさておき、SQLはゴリゴリ書いているし、データベースは高度な設計でなければできる気がする
ただWebアプリケーション開発になるとできるとは言えない。ちなみにhtml,css,jsは手書きで最低限の趣味レベル。

高専では先述の通りC言語がベースで色々やりつつ、一部javaでオブジェクト指向について学習し、当時走りのAndroidアプリの開発を試みたりもした。卒研(と言えるかはさておき)ではRailsも触っていた。
新卒の会社ではインフラの部署に異動になる前の3ヶ月弱のみSmalltalkというjavaの前身のマイナーな言語が使われているパッケージシステムの改修を行ったっきりで、異動後はWindowsのbatを手直しする程度だった。その後shellやPythonのスクリプトは現職でようやく書けると言い切れる程度には触れた。
途中途中でWebアプリケーションを作ろうとRailsを再学習した時期があったが続いていない。

長くなったがどっかで挫折している。

おそらくC言語のポインタや構造体を多用するような課題が増えた時期から、今までクラス内で手短に課題を解いてのが、友人に手助けをしてもらわないと解けないようになってきた時である。
全体的に追いつくのが手一杯で順位が低く留年との戦いの中、唯一得意だと思っていたプログラミングが、得意じゃないという事実にぶつかり、最後5年生の選択授業コンピュータグラフィックスでOpenGLをやったのだが、自力ではうまく行かず完全に腰を折られてしまったまま、今に至る。

インフラエンジニアからWebアプリケーション開発ができないなんちゃってSREとなってしまった今、そろそろWebアプリケーション開発力を身に着けたいと感じている。
上司と話したところ、N予備校のプログラミング入門 Webアプリコースが現職で使っているNode.jsなので良さそうとのこと(スクール等々ではRailsが多い中、Node.jsの教材は少ないが、SQLかけるならRailsのActiveRecordは逆にとっつきにくいとのこと。確かにそうかもしれん。あとはSSRなのかCSRなのかとか。)
引っ越し諸々が終わる10月当たりから学び直ししたいと思っている。

Q.学校で情報工学を学んだほうがいいですか?

A.必要だと思ったときに、必要な領域を都度学べばいいと思います。(個人的見解)

文系出身のエンジニアとかでよくある問いです。逆の立場になれないので難しいところはありつつ、個人的にはそう思ってます。
自分の場合は、今回書いた通り学校で学んだ内容は3割位は実務で活躍する基礎があり、2割は出番がありそうな基礎、5割は出番がなさそう。(記憶にないレベル)という肌感です。

もちろん何かのタイミングでシナプスが繋がるように、知識が繋がっていくタイミングはあります。出番がありそうな領域は、一度やってる分思い出すことで、イチから学習するより早く扱えるようになる。という強みはあります。

Web系のエンジニアであれば、とりあえず基本情報や応用情報で全体的に抑えておけば基礎力として役立つと思ってます。これ以上先は気になった箇所の専門書を買って読むなどすれば良いのかなと。
良さげな大学のシラバス見ると、何をやってきたのかが見えるのでそれを参考に摘むのも良いのかもしれない。
突き詰めていった結果や、それでも気になるないし興味が強いようなら社会人学生や科目履修生などの選択肢が上がってくるような。

自分の学習特性を掴んでできることを増やしていく

結局はこれよ。

自分は仕事として役に立つ実感があったり、報酬があったほうが学ぶモチベーションがあるということに働きながら認識した。
在学中、勉強が得意(好き)で上位を取り大学編入した人もいれば、編入できそうだからもうひと踏ん張りで勉強していた人もいるし、適当でそこそこの人もいれば、自分のように頑張っているつもりでもギリギリだった人もいた。(ギリギリを下回り留年・退学していった人もいた)
またプログラミング等々は自分で独学しアルバイトする人もいたし、OSを自作する人もいた。
(コロナがなかった当時勉強だけが学校というわけでもなく、部活や、自分の場合はシェアハウスもやったり軽いイベンター的なこともやっていた)

モチベーションに加えて、学習方法も自分に合った特性を見つけることが大事である。

報酬アップなどのゴールが見えるからこそ、1年間に難易度の高い資格を複数取得できる人もいれば、学習→実践のサイクルでやっと1資格取れる人もいる。(これによってSESで案件変えながら資格も取りつつスキルアップするのがおすすめな人もいれば、転職せずにやれるだけ学習してから一気に希望の職に転職するのがおすすめな人もいる)
資格習得だけにフォーカスしても、費用を抑えて自分のペースでできる独学でやりたい人もいれば、費用をかけてでもスクールに入って講師や他の学習者からモチベーションを得て短期間勝負する人もいる。

学校以外では習得するのに必要な時間はある程度決まっている中で、学ぶ時間とお金は自分の特性や制約を見ながら上手く配分していくことが学習計画として必要である。

引き続き学び続けるはもちろんのこと、他の人の学びを後押しする機会も増えてきている。改めて今回書いた エモ 初心を忘れず、自分も他の人もできることを増やしていきたい。
(ちなみに冒頭で酒を飲みながらとか書きつつ、シラフで最後まで書いてます←元々家であまり酒を飲むタイプではない)