他の人にどのように教えたいか、そしてその結果、私は自分自身を学んだ

こんにちは、Habr! 過去1年間、e-Legion AcademyでAndroid開発者向けのオンライントレーニングプログラムに取り組んでいます。 猫の下で、私は教師になるというアイデアにどのように着いたのか、その過程でどのような困難に遭遇するのかを伝えています。









老後とビールについて



1年半前、私の元クラスメート、元同僚、友人と私は一人の人間でした、こんにちはGeor! -窒素でビールを飲み、私たちがどのように生活を整えるのかを考えました。 居住地や車の選択から子供や動物の名前まで、たくさんのアイデアがありました。 結局、彼らは老人のような悲しくて避けられない状態になりました。 どこで年をとり、何をするのでしょうか?



画像








家やベンチに座りたくなかったので、自分にできることを若い人たちに教え始めると思いました。 私たちはこのアイデアが好きで、私たちは教師と教師を思い出しました。 しかし、教師と一緒に学生時代と友人が来ました、そして、対話は異なる方向に流れました。 それから私は私の人生の2分の3で教えることは私を脅かさないと思った。 しかし、私は間違っていました。



従業員の募集について



ある時点で、私が働いている会社であるe-Legionは、iOSおよびAndroid開発者を訓練するためのオンラインスクールであるe-Legion Academyを立ち上げることを決めました。 コースはゼロから設計し、有益で関連性のあるものにする必要があり、それがすべてでした。 スタッフは、素材、つまり私たちの準備とプレゼンテーションを担当します。 実際のところ、教育プログラムは、e-Legionの主な活動と特異性が異なっていても、一種のプロジェクトです。



考え直すことなく、参加することに同意しました。 正直なところ、まったく考えていなかったので、教えたいと思いました。



私の頭の中の声について



計画段階は比較的単純でした。 プログラムの最初のブロックはAndroidプラットフォームの基盤、中央はアーキテクチャ、テスト、ライブラリ、最後の2ブロックはデザイン、カスタムビュー、Firebaseなどのサードパーティサービスです。 珍しいことではありませんが、複雑さはますます増大しています。



計画後、彼らは講義を録音するための資料を準備し始めました。 私の頭には、なんらかの理由ではっきりとは言い切れないという考えがありました。 これはしばらく続き、突然、コンテキストに関する資料を準備しているときに、頭の中で声を聞きました。 「あなたはノックできません!」



責任について



がらくたはできません。



とても感銘を受けたので、コンテキストをそのままにして、混乱しているかどうかを考えることにしました。 そして、私は次のことを考えました。 私は資料を準備し、それを多くの人々に届けます。 ほとんどの場合、これらの人々はプラットフォームに精通しておらず、私から受け取った情報は彼らにとって権威になります。 hatch化したばかりのアヒルの子のように、彼女は母親の前に現れて、彼を食べなかった最初の生き物を取ります。



これは責任を負います。 私は自分自身が確信できないことを言う余裕はなく、それは正確には真実ではありません。 そしてこれは、資料を準備する前に、自分でニュアンスを勉強する必要があることを意味します。 確かに、会話の中で彼らは私に言及し、論文が突然間違っていると判明した場合、それはどれほど不快なことでしょう。



コース自体に加えて、学生とのチャットを行ったり、質問に答えたり、タスクの正しい解決策を求めたりします。 正確な情報のみを伝えるというルールを自分で考えました。 何を答えるべきかを正確に知っていても、私は常に対応するオンラインリソースに行き、答えを確認してから答えてください。 またはリンクを投げます。 これはビデオ講義にも当てはまります-それらの中で、私は確かに知られていることだけを与えます。 もちろん、講義の方が簡単です。テキストはすでに準備されているので、読んでください。 しかし、任意のスピーチで、ライブコーディングセッション中の素材の説明で、私は汗をかかなければなりませんでした。



正しい名前について



何回も、私は同じ間違いを繰り返します-私は対話者に私の経験を投影します。 対談者が私ではないこと、私が読んだ本を読んでいないこと、私が見た映画を見ていないこと、出会ったコードに出会わなかったことを忘れます。 同僚の方が簡単です-詳細の一部、問題の一部を説明できます。また、彼ら自身の経験に基づいて、残りの部分を自分で把握します。 結局のところ、概念、状況、用語はニックネームで囲まれているため、危険です-ビューの無害な「ビュー」やランタイムパーミッションの「6次元のパーミッション」などのプロフェッショナリズム。 もちろん、部門の私たちは、共通のビジネスに長い間従事している人々のグループのように、お互いを理解しています。



これは学生ではそうではありません。 スラングは使えません。 学生が追加情報を見つけるのに問題がないように、正式に呼ばれているものに名前を付ける必要があります。 最初は、この瞬間に苦労しました。 その結果、私は別のルールを策定しました。これが純粋にアンドロイドのものである場合、翻訳せず、単に音訳を使用します。 執筆に関しては、ActivityやLayoutInflaterなど、元の英語のスペルをよく使用します。 概念がより一般的で広く普及している場合は、翻訳と元のスペルの両方を使用します。 たとえば、Buttonはボタンであり、アフリカではボタンでもあります。 これらのシンプルで明確なルールは、私のスピーチをきれいにしました。 これがどのように書かれ、発音され、翻訳されているかを正確に知っているとき、何かを「がらくた」と呼ぶ欲求は少なくなります。 そして、それは頭の中にも現れます。



頭の中の写真について



インタビューで候補者に質問をしたいのです。「Android開発に携わっていない人にコンテキストを説明してください」 いいえ、正しい答えはありません。



トレーニングプログラムの準備を始めたばかりのときに、このコンポーネントやクラスが必要な理由がよくわかっていることに気付きましたが、内部からどのように構築されるのかはまったくわかりません。 理解できますが、なぜSDKコードまたはライブラリを調べなければならないのですか? 「私は消費者です(デベロッパーですが)、必要ありません」と思いました。 しかし、私は間違っていました。



Androidにはコンポーネントがあります-サービス、それはインターフェースに直接関係しない操作に使用されます。 たとえば、音楽を再生します。 インターフェイスとの通信の欠如は、サービスがバックグラウンドで機能するという神話を引き起こします。 しかし、これはそうではありません。 サービスはメインスレッドで開始され、それをブロックし、その結果、ANRを呼び出します。 また、SDKでのバックグラウンド作業のために、着信インテントを順番に処理するIntentServiceがあります。 そして、すべての意図を完了した後、彼は自分自身を完了します。 Android開発者なら誰でも知っているはずです。



IntentServiceで作業したとき、私は線を描きました。 行はサービスの開始で始まり、サービスの終了で終わります。 シンプルでわかりやすく、便利です。 起動したサービスに新しい意図がどのように組み込まれるかを想像する必要があったときに、この居心地の良い写真が崩壊したのは今だけです。 それを提示する方法は? 矢印をどこに添付しますか? スタックがあるべきですか? これはこれ以上先に進むことができないことが明らかになりました。 線がぼやけすぎて、IntentServiceが何であるかを不適切に示しています。



ソースに登ってみると、HandlerThreadとHandlerThreadのペアの簡単な画像が見えました。 プレーンなHandlerThread! そして、すべてが適切に配置されました。インテントは順番に処理されます。これは、MessageQueueでは順番に配置されるためです。 さらに、それぞれの新しいインテントはメッセージでラップされ、サービス開始番号-startIdが示されます。 インテントの処理後、このstartIdの転送でstopSelf()メソッドが呼び出され、最後のサービス呼び出しと等しい場合、サービスは終了します。 私の頭の中で、すべてがパズルのようになった。



画像








これはIntentServiceだけに適用されません。 SDKのクラスの内部を見ると、多くの利点があります。 抽象的な線や矢印はなく、メカニズムの完全な理解のみ。 より正確で、当て推量が少なくなります。 心配が減り、自信が増します。 より多くの知識、より少ない混乱。 しかし、私はがらくたはできません、覚えていますか?



学生について



プログラムの作業を開始したとき、「これらのコースは誰のためですか? 誰が私たちと一緒に勉強しに来るのでしょうか?」私は長い間答えを考える必要がありませんでした-これらはJava、OOP、開発パスを始めたばかりの専門大学の学生、または別の方向から再訓練したいプログラマーに少し不満を言う人です。 したがって、実際には、プログラムにはフレームワークの基本も含まれています。



コースを修了した後、最終的に誰が成功するかを考えることは、はるかに興味深いです。 学生が頭の中で保持する知識。 または彼がどのように仕事を得るか。 彼が電話を取り出してインタビュアーに伝える方法を想像します:「見て、これは私のアプリケーションです、私はそれを書きました!」インタビュアーは電話を拾い、ボタンを突く、アニメーションに驚いて、このまたはその機能の実装について質問します。 学生には責任があります。 彼らは楽しいプロの会話をしています。 そして、HRは感銘を受け、満足しており、生徒を雇う用意ができています。 成功です。 しかし、このインタビューと他の学生の別の100のインタビューに命を吹き込むには、資料に取り組み、より良く、より充実した、より正確にする必要があります。



最終結果のビジョン-インタビューの学生-は、仕事に集中し、ギャップを残さないようにします。 ただし、本当にしたい場合は、独立した学習のために常にいくつかのトピックを提供することができます。これにより、学生は情報を求めます。 控えめに。



私の後に残るものについて



それを読んだ後、Android開発コースは完全に私のメリットであるという印象を受けるかもしれません。 なんてナンセンスだ! 単独で、私は決してそのような量の仕事を引っ張ることはなかっただろう。 私たちはたくさんいますが、私の同僚であるMaratのタイタニックな仕事に感謝します。 サンクトペテルブルクに来たら、私は窒素です。



一般的に、教師であることは良いことです。 教えるとき、自分で勉強します。 生徒はクールで、コースにお金を払ったという事実だけでなく、やる気もあります。 モバイル開発者になるために、彼らは本当に新しい職業を学びたいと思っていることがわかります。 もちろん、プロセスは高速ではありませんが、基本を掘り下げて申請を提出するのに9か月かかります。 そして1つではありません。 だから私はこの困難な問題で彼らを助けることができてうれしいです。



授業で最も難しい部分は、正確で理解しやすい言葉遣いを選択することでした。質問を最小限に抑え、歪みなく生徒に考えを伝えることができました。 私はまだ正しい言葉を選ぶことを学んでいます。 そして、私は混乱しないことを学んでいます。 これらのスキルは、少なくとも数日間は取得できません。



教材の準備中に、さまざまなプログラムを見ました。たとえば、UdacityでのGoogleのコースは、上品なスピーカーのパフォーマンスを研究しました。 私は非常に多くのドキュメントとチュートリアルを読み直したので、Android開発に関するウィキペディアを歩いているように感じます。



主なもの-経験と知識を学生と共有することはとてもクールでした。 以前に私の仕事の結果がアプリケーションのリリースと修正されたバグのみに関連していた場合、私は今、私たちのコースのおかげで他の人々がどのように発展するかを見ます。



要するに、 接続してください!



All Articles