日本のWebエンジニアの大半が、変化に対応しきれなくなっている件について。

ボストンで脱出ゲームしたときの写真

先週書いた10年のツケを支払ったフロント界隈におけるJavaScript開発環境(2016年4月現在)。という記事がまずまずの反響を得たのですが、僕の予想とは異なり、「こんなに多くのツールやフレームワークを必要とする現状はおかしい」といった、状況批判の意見が多く集まりました。

はてブのコメントのスクリーンショット

Mediumなど海外メディアでは、もはやこの種のツールを組み合わせたフロントエンド開発が当たり前として受け入れらており、この半年間ほどは「実際にどの組み合わせがベストか」という議論が行われていました。そして、そういった議論もようやく落ち着きを見せ、おおよそ僕が書いたような組み合わせに帰結しつつあります。
そのため、まさか「フロントは変化が激し過ぎる」とか「保守が大変そう」などといったような、1年くらい前に言われていた意見が、いまだに多くを占めるとは、まったく予想していなかったというのが正直な意見です。ひと昔まえであれば、「面白そう」とか、「もっと便利なツールがあるよ」といったポジティブな意見が中心だった気がします。
確かに、これまでの開発環境と大きく異なるため、「まだまだ対応するのは難しい」という意見は良く分かります。しかし、「対応」と「キャッチアップ」は別であり、普通にキャッチアップをしていれば、この流れは不可逆であり「今後、元に戻ることはない」と確信していなのは、むしろヤバいと感じることでしょう。
しかし、はてブやTwitter、Facebookのコメントを見る限りでは、素人ではなく、現在Webの仕事をしている人ですら、「流れが早くてついて行けない」「もう少し様子を見ておいた方が良さそう」といった日和見な意見を述べており、「日本のエンジニアは大丈夫なのかな?」と僕は不安を覚えてしまいました。

なぜ、変化への対応がここまで遅いのか。

「なぜ、変化への対応がここまで遅いのか」という理由を考えてみて、「プログラミングが好きではない職業エンジニアが増えている」などが思い浮んだのですが、根本となる最大の理由は「英語しかドキュメントがない」ためだという結論に至りました。


この組み合わせが異常、というのはやってみると実際そんなことない。React と Redux 以外はただのツールなので、どれも半日あれば使いこなせるようになる

id:naoya さんもこのように言っていますが、僕もReactとReduxは慣れるのに時間がかかるものの、それ以外は、単なるメソッドや、ツールでしかないで、習得するまでたいして時間がかかるものではないと思います。なので、難しいという意見の大半は、おそらくまだ試していないのではないかと思います。
では、実際に試すと、どの程度の期間で習得できるものなのか、ちょうど良い例があるので紹介しましょう。

英語ができれば、プログラミング初心者でも4ヶ月で React + Redux + Electron でアプリが作れる。

Urai君の写真

Urai Masato君いう若者がいます。彼はTOEIC940点の文系大学生プログラマによるブログというブログを書いており、タイトルからも分かる通り、文系大学の学生で「英語はできるけど、プログラミングはまったくの素人」という学生でした。
そんな彼は、僕の友人が経営する語学学校サウスピークに去年の夏頃に留学し、TOEIC940点という素晴しいスコアをマークしました。そして、日本に帰国してから、就職まで時間があるのでプログラミングの勉強をしようと思ったとき、僕の友人に相談したのをきっかけに僕と出会いました。
僕は近年「プログラマは英語必須というけれど、プログラミングを覚えてから英語を勉強するよりも、英語を覚えてからプログラミングの勉強をした方が圧倒的に学習効率が良いのではないか」と考えていました。そんなとき、彼と出会った僕は、僕の考えを検証できる良い機会だと思ったので、彼に対して、次のような提案をしました。

  • 僕は直接教えずに課題を出す
  • 課題は英語で書かれた技術記事やチュートリアル
  • 課題をやったら必ずブログを書く
  • 僕はブログを見てフィードバックをする
  • 勉強したい分野があれば、僕に提案をする
  • 提案を見て、勉強した方が良い内容であれば、最適な英語の記事を紹介する

彼はこの提案に対して「ぜひ、やってみたい」と答えたので、去年の11月頃から「英語でプログラミングを学ぶと、どれくらいの早さで学習できるのか?」という実験がスタートしました。
その結果は、

という記事にまとめられていますが、主に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エンジニアプラン」は、それらとは違い、まずはスラスラと英文が読めるまで本気で英語を勉強してもらい、その後でプログラミングの勉強を開始します。これは、先に述べた通り、プログラミング学習には、英語を読めることが、圧倒的なアドバンテージを生むためです。

『英語ができない人』と『光速Webエンジニアプラン』の学習曲線イメージ図

このアドバンテージをイメージ図にしてみると上記のようになります。Aの場合は半年間の学習アドバンテージがありますが、英語をスラスラ読めるBでは、情報量に圧倒的な差があるため、個人差はありますが、Aの3倍のスピードで成長したとします。

そうすると、半年遅れにも関わらず、Bはプログラミングの学習を開始して3ヶ月後にAを抜き去ってしまいます。そして、新しい技術が増え続けるIT業界では、英語による情報の格差が縮まることはなく、逆に開く一方であるため、2年後、3年後には、とても比較ができないほどの差が生まれることになります。

このプラン詳細は、1年で最先端Webエンジニアになれる、サウスピーク光速Webエンジニアプラン【先着10名、5月末まで】をご確認ください。

1年で最先端Webエンジニアになれる、サウスピーク光速Webエンジニアプラン【先着10名、5月末まで】

最後に、4月9日に技術評論社から、僕も寄稿した仕事ですぐ役立つ Vim&Emacsエキスパート活用術という本が発売されましたので、興味のある方はぜひどうぞ。