入社後1週間の全体研修が終わり、今日から技術研修がスタートした。全体研修は基本的に話を聞くだけだったし、ある程度リラックスして話をきていたのだが、さすがに技術研修が始まるとぐっとスイッチが入る。
今日は座学で、一部ハンズオンなどもありつつも、基本的にはインプットの時間だったが、思った以上に実践的な内容で、面白かった。具体的には、
セキュリティ
docker
アーキテクチャ
DB設計
UI・UX
について講義を聞いた。具体例や、知らないことが色々出てきて全ての講義が面白かったが、特に面白かったのがdockerとアーキテクチャについての講義で、dockerについては、最低限必要なことーより進んだ知識 のバランスも良かったし、適宜ハンズオンもあったりしてで良い感じに脳みそに刺激を入れながら楽しくやれた。
dockerについては、内定者アルバイト期間中も見様見真似でやっており、そのせいで定期的に環境構築に手間取ってしまっている。それもあって、こういった講義で体系的に学習することができるのは貴重だなと感じる。一方で、これを最初から体系的に勉強したところで。。。と言うのもある。そう考えると、現在のAI環境における学び方の最適解は、AIを駆使しながらトライアンドでエラーで手を動かしてから、良きところで体系的な理解を挟み、もう一度手を動かすといった反復練習であると思う。AIのおかげで、手を動かすフェーズについて、一般人でもハードル低くスタートできるのは一つのメリットだと思う。
アーキテクチャについても面白くて、講義してくれた先輩エンジニアの方が話している感じ、かなりスマートだった。講義の内容としては、Controller→Service→Repository→Modelの4層構造でのレイヤードアーキテクチャが薄すぎず重すぎずちょうど良いアーキテクチャだというのが結論であった。ここら辺のアーキテクチャどうするか問題は宗教戦争なので一概には言えないが、曰く、WEB系のソフトウェア開発では基本的にDDDや厳密なクリーンアーキテクチャーEntityやResponse,RequestなどのDTO的なクラスを用いて多層化を行うーは基本的にオーバーであると言っていた。俺自身も、内定者アルバイトでの開発においては、初めは厳格なクリーンアーキテクチャで実装されていることに対して、「現場のコードってこんな感じなんだぁ(小並感)」と鵜呑みにしていたが、さすがに多少慣れてくると、サービスの規模に対してこのアーキテクチャは冗長すぎるとも感じるようになる。そう言う意味では、日頃の疑問の答え合わせみたいな講義内容だった。
また、講師の先輩が、前職では業務系サービスの基幹システムの開発に携わっていたこともあり、業務系が複雑で、物理世界の仕組みで動いているようなものについては、厳格なDDDで実装することが推奨されるケースとのこと。(確かに、WEBアプリケーションの大半は、ドメインがあるようでないとも言えて、と言うのも、これらはすごく大雑把な言い方をすると、全てデータをhogehogeしているのに過ぎず、物理的な手続きが介入しうるものはほとんど存在しない)
〜
まぁそんなこんなで、とても充実した技術研修1日目だった。これから1ヶ月は技術研修で、ひたすら開発に集中できるので、この期間を有効活用して、頭を完全にエンジニアモードに切り替えていきたい。やるぞ。あと、予定配属先に挨拶に行った。みんな暖かく迎え入れて嬉しかった。
〜
その後、研究室の同期と1.5hほど電話で話した。一つ気に食わない点としては、俺も仮にもエンジニアとして1年間アルバイトして給料もらっているのに、いまだに俺がエンジニアではない外様の人間として(彼の潜在意識下)で扱われていることに対してフラストレーションを感じた。まぁ実力不足なのは自分でも自覚している。とにかく頑張って成長して、彼と同じ目線でエンジニアとして会話できるように精進するまで。
〜