将来を見据えたウェブ・アプリケーションの構築:The Codestのエキスパート・チームによる洞察
The Codestが、最先端技術を駆使してスケーラブルでインタラクティブなウェブアプリケーションを作成し、あらゆるプラットフォームでシームレスなユーザー体験を提供することにどのように秀でているかをご覧ください。The Codestの専門知識がどのようにデジタルトランスフォーメーションとビジネス...
まず、コースそのものについて少し。コースが始まる前に、受講生には「プレワーク」という課題が与えられた。その課題には、Linuxのインストール、ターミナルを使いこなすこと、HTML、CSS、Gitの基礎などが含まれていた。
それから4ヶ月間、私たちは2週間ごとに集まり、一歩一歩Rubyの素晴らしい世界を発見していった、 ジャバスクリプト また、Devise、Pundit、Sidekiq、CarriewaveのようなRoRアプリケーション用の一般的なツールもある。
また、各生徒にはメンターがつき、生徒のやる気を引き出し、ミーティングの合間に生徒の作品をチェックする役割を担っていた。
講師として、3年間のRuby on Railsの経験、10年間のプログラミング全般の経験、そしていくつかの問題や練習問題のプレゼンテーションを準備して臨んだ。
以前、Linux管理の短期コースを受講した以外は、教える経験はなかった。受講生の中には、初めてプログラミングに触れる人もいれば、受講前に独学でCやRubyを学ぼうとした人もいる。
私は2つの決意をすることにした。忍耐強くなることと、必要であればすべてを説明することだ(「すでに説明したじゃないか」はなし)。最初の決意は時の試練に耐えたが、2つ目の決意は-明らかに-そうではなかった。毎日Ruby/Railsを使って仕事をしているし、その分野のスキルにはかなり自信がある。毎日Ruby/Railsで仕事をしているし、その分野のスキルにはかなり自信がある。
コースが始まってすぐにはっきりしたことのひとつは、すべてを説明することはできないということだ。物事の仕組みを掘り下げて発見するのが好きな私のような人間にとっては、とても悲しい現実だが、1回のミーティングという限られた時間の中では、教えられることや生徒が覚えていることは限られている。配列がメモリ上で実際にどのように表現されるのか、Deviseがどのように機能するのかを正確に知らなくても、とてもまともなRubyプログラマーになれることがわかった。
レッスンは土曜日と日曜日の午前9時から午後5時まで行われていた。教材を説明するだけでなく、関連する(あるいはそうでない)質問に答えたり、生徒が抱えるさまざまな問題を解決したりする準備が常に必要なのだ。
コーヒーはあなたの味方だが、最も重要なのは前述の忍耐力だ。コーディングをしたことがない人にとっては、プログラマーにとっては当たり前の概念(ループや型、変数など)を学ぶ必要があり、それはすぐにできるものではない。もしあなたがXX年間プログラミングをやっていて、数学が簡単だと考えていて、夜中に既知のプログラミング・パラダイムをすべて列挙できるのであれば、等号のどちらに変数名が入るのかよくわからない人の立場に立つのは難しいかもしれない。しかし、そうすることが重要なのだ。変数、ループ、配列のような基本的な概念はとても自然なものになり、どうしてすぐに理解できない人がいるのか理解するのは難しいが、「私たちプログラマー」にとっては見かけ以上に難しいものなのだ。
さらに、特にコースの最初の方では、これらの概念をよく理解できるように説明することが大変でした。私の考えでは、Rubyを学ばずにRailsを学ぶことは不可能です。確かにRailsには独自のパターンがあり、多くのことは最初に学ぶというより、むしろ覚えてしまうことができます。しかし、良心的なRoR開発者になるためには、RubyやOOP、SQLの適度な理解は必須だと思います。プログラミングを教えることと、Railsを教えることはまったく違います。Railsの場合は、ただ受け入れられたり信じられたりすることを期待できることが多いのですが(コールバックがどのように機能するのか、最初のうちは誰も知る必要はありません - 何ができるのかだけです)、プログラミングの概念はもっと詳しく説明されるべきです。
では、どうすればいいのか?
辛抱強く。
いつも同じことを繰り返しているように思われるかもしれないが、忍耐がいかに大切かはいくら強調してもしきれない。私の最も意欲的な生徒でさえ、あちこちで構文エラーをすることは知られている。それは通常の学習プロセスの一部であり、エラーが何であり、どう修正するかを示す以外に、教師がすべきことはない。やがて、彼らは自分で直すことを学ぶだろうが、それには1つや2つのエラーでは済まないだろう。
もうひとつ注意しなければならないのは、Rubyは見かけほど簡単ではないということだ。もしあなたがC/Java/Pythonの知識を持ってRubyを学び始めたとしたら、おそらくすべてがとてもきれいで素敵でシンプルに見えるでしょう。しかし、よく考えてみてください:
自己
のこと?時々使わなければならないことがあるんだ(例えば。 attr_writer
– self.variable = ...
)、しないこともある(attr_reader
– 変数
)、時にはできないこともある!(private def some_method
– self.some_method
はエラーを投げる)1TP63注射
単純にエラーを修正するだけでなく、自分の理解を実際に生徒に伝えるという問題がある。そのためには、多くの柔軟性が必要になる。アレイが単に要素の並べ替えられたリストであることに満足する生徒もいた。もっと視覚的なアナロジーを必要とする生徒もいた。例えば、物を置く場所に番号が振られた棚のようなものだ。私は、同じことを異なる方法で何度も説明していることに気づいた!
でも、前にも言ったように、すべてを説明することはできません。私がRailsのリレーションについて説明していたときは、どちらかというと「こうすると、あれもできる、これもできる。そうしたいんだね、すごいね」という感じでした。幸いなことに、誰もこれがどう機能するのか聞いてきませんでした。ジュニア開発者がリフレクションについて知る必要はないと思います。
私たちのコースの形式(隔週末にミーティングがあり、長期休暇がある)のため、週末と週末の間の期間を生徒にとって生産的なものにしなければならなかった。
同僚の何人かは、このコースの学生のメンターになってくれた。メンターの仕事は、週末のミーティングで課された練習問題を確認し、それをこなしながら発生する問題を手助けすることだった。学生たちはSlackを使ってメンターとコミュニケーションをとっていた。
私は2人の教え子の指導者だった。これは今までとはかなり違った教え方であり、落とし穴もたくさんあった。私が少し遅すぎたと気づいたことのひとつは、優秀なプログラマーは自立していなければならないということだ。Slackで常に利用可能であることは、私の時間を奪うだけでなく、そのような自立心を刺激するものでもなかった。
誤解しないでほしい--私が指導者として受けた質問の多くは妥当なものだったし、それに答えることは生徒の知識を広げることだった。しかし、"先生モード "になるのはとても簡単だ。今日の観点からすると、メンターの役割は、概要を説明し、有用なリンクを提供し、解決策を見つけるのに役立つような質問をすることだと思う。時折、説明することもあるかもしれないが、それが大半を占めることはないはずだ。
生徒はみな違う。大きな困難のひとつは、コースのペースを生徒全員に最も合うように調整することだった。生徒のバックグラウンドや、新しいアイデアを受け入れやすいかどうかの一般的なレベルが異なるため、ほとんど不可能な作業だった。
私たちの時間枠は9回のミーティング、2日×8時間で0からルビー・ヒーローになるまで144時間だった。この時間内にシラバス全体をこなすことが最重要で、それだけでもかなり速いペースを強いられました。最初の3つのミーティングはすべてRubyについてで、SQLのミーティングが1つ、RoRのミーティングが1つ、その間にJSのミーティングが1つありました。
教師として、私はいつも、自分が紹介する教材の一部を、誰が多かれ少なかれ理解しているかを知る必要があった。理解しているかどうかを尋ねるだけで十分なこともあれば、ちょっとしたテストをすることもあった。例えば、私は生徒全員にルビーの概念について自分なりの定義を送ってくれるように頼んだ。 クラス
, 自己
, 方法
, 変数
などをSlackに書き込む。特に不明な点があれば、もう一度戻って説明するようにしている。
結論から言うと、教えるということは思っていた以上に難しいことだった。とてもやりがいのある仕事でもある。それにもかかわらず、教えることは大変な仕事であり、その効果は教師だけに依存するものではなく、生徒自身の努力が学習においてより重要なのだ。このため、教えることは、成功も失敗もすべて自分のものにできるプログラミングとは大きく異なる。この違いを忘れてはならない。
物事を説明することで、その物事に対する理解も深まります。このように、教えることはあなたをより良いプログラマーにすることもできるのです。