最近あるところで新人にRuby on Rails教育のテキストを使い新人Webエンジニアの教育を行いました。新人に向けたRuby on Rails教育ではRuby言語、Ruby on Railsに加えいろいろな知識を加えて教えていますが、並べてみるとたくさんあります。
私は大学でコンピュターサイエンス、プログラミングを学び、就職してからUnix、SQL、TCP/IPは学び。Web系を始めた時点でHTML/CSSやWebフレームワークを学びました。その時点でJavaScriptはありましたが、まだおまけ程度でした。クラウドやDockerなどありませんでしたが、それらが登場し流行ってきたらその都度勉強して来たので、たくさんの知識を学んだという記憶はありませんでした。
現在Webエンジニアに要求される知識
現在、Webエンジニアに要求される知識は以下のようなものがあると思います。得意不得意はあると思いますが大抵のエンジニアは以下の知識があると思います。
- プログラム言語、たとえばRuby, PHP, Java
- 良いコードの書き方
- ライブラリー(パッケージマネージャー)、たとえばGems, npm, pip
- Webフレームワーク、たとえばRuby on Rails
- HTML/CSS
- JavaScript (Ajax)
- フロントエンド・フレームワーク、たとえばReact, Vue, jQuery
- SQL(RDB)
- 設計技術、たとえばデータモデリング
- コンピュターサイエンス
- Webアプリの脆弱性(セキュリティー)
- テスト駆動開発 (TDD, BDD)
- Git (GitHub)
- Unixの知識
- TCP/IPやプロトコルの知識
- Dockerの知識
- クラウドの知識、たとえばEC2, S3, RDS …
- サーバーレスの知識、たとえばAWS Lambda, Firebase
- ログ等(ビッグデータ)の分析(データサイエンス?)
- 機械学習(AI)
インフラ寄りの知識は、チームに詳しい人がいれば無くてもなんとかなるかも知れませんが、概念や簡単な使い方は知っている必要があると思います。 また、設計寄りの知識やコンピュターサイエンスの知識はなくても、最低限の実装はできるかもしれませんが、良いコードを書くためには必要だと思います。
私自身はデータサイエンスやAIは知識がありません。機械学習(AI)はそろそろ学ばなくてはと思っています。
EY-OfficeのRuby on Rails入門 + α で教えている内容
EY-OfficeのRuby on Rails入門の標準コースでは以下を教えています
- プログラム言語: Ruby
- 良いコードの書き方
- ライブラリー(パッケージマネージャー): Gems
- TCP/IPやプロトコルの知識: HTTPプロトコルのみ
- JavaScript (Ajax): ごく簡単なもの
- Webフレームワーク: Ruby on Rails
- テスト駆動開発 (TDD, BDD): RSpec
- Webアプリの脆弱性(セキュリティー)
新人等向けの場合は以下を追加する事がおおいです
- SQL(RDB)
- 設計技術、たとえばデータモデリング
- Git (GitHub)
- Unixの知識
また、オプションとしてフロントエンドを組み合わせる事もあります
- フロントエンド・フレームワーク: React
これらを一週間(5日間)で教えるのは、かなりボリュームがあると思っています。受講者の印象もたくさんの知識を浴びてアップアップという感想も良くききます。
近々にはDockerやクラウドを教えるオプションを追加する必要があるのかな? と思っていますがかなりの量ですね。
まとめ
現在、Ruby on Railsの研修の要望はほとんど来ません。Ruby on RailsというフレームワークやRuby言語の学習コンテンツ(書籍、オンライン研修・・・)はかなり充実しきたからだと思います。
しかし、Web系プログラマーになるには言語やフレームワークの知識だけではなく、いろいろな基礎が必要になると思います。
たとえば以下のような内容を教えるコースを作ると良いのかな? と考えています。
- 良いコードの書き方
- Webアプリケーションのアーキテクチャ入門
- Webアプリケーションフレームワーク
- SPA
- サーバーレス
- 。。。
- SQL(RDB)入門
- 設計技術、データモデリング入門
- Webアプリの脆弱性(セキュリティー)
- Git (GitHub)
- Unixの入門
- TCP/IPやプロトコル入門
- Docker入門
- クラウドの入門