2016-04-10 曇りの日。
日本のWebエンジニアが、変化に対応しきれなくなっている件について。
|先週書いた10年のツケを支払ったフロント界隈におけるJavaScript開発環境(2016年4月現在)。という記事がまずまずの反響を得たのですが、僕の予想とは異なり、「こんなに多くのツールやフレームワークを必要とする現状はおかしい」といった、状況批判の意見が多く集まりました。
Mediumなど海外メディアでは、もはやこの種のツールを組み合わせたフロントエンド開発は当たり前のこととして受け入れらており、実際にどのツールの組み合わせがベストか、という議論がこの半年間ほど行われていました。そして、その議論もようやく落ち着きを見せてきており、おおよそ僕が書いたような組み合わせに帰結しつつあります。
そのため、まさか「フロントは変化が激し過ぎる」とか「保守が大変そう」などといったような、1年くらい前に言われていた意見が、いまだに多くを占めるとは、まったく予想していなかったというのが正直な意見です。昔であれば、もっと面白そうとか、もっと便利なツールがあるなどのポジティブな意見が多く集った気がします。
確かに、これまでの開発環境と大きく異なるため、「まだまだ対応するのは難しい」という意見は良く分かります。しかし、「対応」と「キャッチアップ」は別であり、通常のキャッチアップをしていれば、この流れは不可逆であり「今後、元へと戻ることはない」ということを確信していなのは、むしろヤバいと感じることでしょう。
しかし、はてブやTwitter、Facebookのコメントを見る限りでは、素人ではなく、現在Webの仕事としている人ですら、「流れが早くてついて行けない」「もう少し様子を見ておいた方が良さそう」といった意見を述べており、「日本のエンジニアは大丈夫なのかな?」と僕は逆に不安を覚えてしまいました。
なぜ、変化への対応がここまで遅いのか。
なぜ、変化への対応がここまで遅いのかという理由を考えてみたのですが、プログラミングが好きではない職業エンジニアが増えているなど、いろいろと思い浮んだのですが、根本となる最大の理由は「英語しかドキュメントがない」ためだという結論に至りました。
この組み合わせが異常、というのはやってみると実際そんなことない。React と Redux 以外はただのツールなので、どれも半日あれば使いこなせるようになる
id:naoya さんもこのように言っていますが、僕もReactとReduxは慣れるのに時間がかかるものの、それ以外は、単なるメソッドや、ツールでしかないで、習得するまで実際にたいして時間がかかるものではないと思っています。なので、難しいという意見の大半は、おそらくまだ試していないのではないかと思います。
では、実際に試すと、どの程度で習得できるのか、ちょうど良い例があるので紹介します。
英語ができれば、プログラミング初心者でも4ヶ月で React + Redux + Electron でアプリが作れる。
Urai Masato君いう若者がいます。彼はTOEIC940点の文系大学生プログラマによるブログというブログを書いており、タイトルからも分かる通り、文系大学の学生で、英語はできるけど、プログラミングはまったくの素人という学生でした。
そんな彼は僕の友人が経営する語学学校サウスピークに去年の夏頃に留学し、TOEIC940点という素晴しいスコアをマークしました。そして、日本に帰国してから、就職まで時間があるのでプログラミングの勉強をしようと思ったとき、僕の友人に相談をして僕と出会いました。
僕は近年「プログラマは英語必須というけれど、プログラミングを覚えてから英語を勉強するよりも、英語を覚えてからプログラミングの勉強をした方が圧倒的に学習効率が良いのではないか」と考えていました。そんなとき、彼と出会い僕の考えを検証できる良い機会だと思いました。
- 僕は直接教えずに課題を出す
- 課題は英語で書かれた技術記事やチュートリアル
- 課題をやったら必ずブログを書く
- 僕はブログを見てフィードバックをする
- 勉強したい分野があれば、僕に提案をする
- 提案を見て、勉強した方が良い内容であれば、最適な英語の記事を紹介する
彼はこの提案に対して「ぜひ、やってみたい」と答えたので、去年の11月頃から英語でプログラミングを学ぶと、どれくらいの早さで学習できるのか?という実験がスタートしました。
その結果は、
- 文系大学生がJavaScriptを始めて約一ヶ月経って思うこと
- 文系大学生がプログラミングを始めて2ヶ月経って思うこと
- 文系大学生がプログラミングを始めて3ヶ月経って思うこと
- 文系大学生がプログラミングを始めて四ヶ月経って思うこと
という記事にまとめられていますが、主にJavaScriptを中心に学習した結果、
- 1ヶ月目でGitの使い方、JSの基本文法、ES6の文法など
- 2ヶ月目でGitHubの使い方、Markdown、React、CoffeeScript、Atomパッケージの作成チュートリアル、gulp、browserify、Babelなど
- 3ヶ月目でJSON API、THE TWELVE-FACTOR APP、自作のAtomパッケージの公開、自作のNodeモジュールの公開など
- 4ヶ月目でOAuth認証、Redux、Electronによるデスクトップアプリケーション開発など
といった風に、本当にプログラミングをまったく書いたことのない状態から、4ヶ月でElectronを使ってはてなブログに記事を投稿できるデスクトップアプリケーションを自作するまでになりました。
僕が言うのもなんですが、これは異常に早いと言っても良いのではないでしょうか?僕は正直、危機感を覚えました。
ということです。記事を読む早さは、本当に僕がびびるくらい早く、例えば、ブラウザのレンダリングの仕組みを学んでもらおうと思ってConstructing the Object Modelという記事を与えると、半日もかからず読んで理解してしまう感じです。そんなわけで、学習課題を予想を大きく上まわるスピードで消化されたため、新しい課題を探すのがとても大変でした。
他にも、UNIX/Linuxコマンドを英語で学習すると、pwd は「Print Working Directory」の略など、そのまま英語の意味からコマンド名を覚えることができるため、こちらの学習も早かったです。
純粋な比較はできないので、僕がこれまで教えた経験からの判断になりますが、英語を先に学んでからプログラミングを勉強した方が、圧倒的にプログラミングの学習効率が高いという結論に至りました。
この経験は自分の中で新しい確信と素晴しい価値を生み出しました。そこで、Urai君のような若者をもっと育ててみたいと思い、サウスピークに相談してみたところ快諾を得たので、今年度からまったく新しくエンジニア育成プロジェクトをやってみることにしました。
英語でWebエンジニアリングを学ぶ、サウスピーク「光速Webエンジニアプラン」
世の中にはITブートキャンプと呼ばれる短期間でITスキルを学ぶサービスや、IT留学プランなる英語とプログラミングを同時に学ぶサービスがあります。
しかし、今回提案する「光速Webエンジニアプラン」は、それらとは違い、まずはスラスラと英文が読めるまで本気で英語を勉強してもらったあと、ようやくプログラミングの勉強を開始します。これは、先に述べた通り、プログラミング学習には、英語を読めることが、圧倒的なアドバンテージを生むためです。
プログラミング知識がゼロの状態から、「A. 英語ができない人」と「B. 光速Webエンジニアプランの人」の成長のイメージです。
Aの場合は半年間の学習アドバンテージがありますが、英語をスラスラ読めるBでは、情報量に圧倒的な差があるため、Aの3倍のスピードで成長していきます。
その場合、半年遅れにも関わらず、Bはプログラミングの学習を開始して3ヶ月後にはAを抜き去ってしまいます。そして、その後、新しい技術が増え続けるIT業界では、情報の格差が縮まることはなく、逆に開く一方であるため、2年後、3年後には、とても比較ができないほどの差が生まれることになるでしょう。
このプラン詳細は、1年で最先端Webエンジニアになれる、サウスピーク光速Webエンジニアプラン【先着10名、5月末まで】をご確認ください。