経験の浅いプログラマーに支援を提供しませんか?[閉まっている]


57

ジュニアプログラマーが常に飛び込み、それらを教育しようとするのに助けが必要なとき、それは良い考えだと思いますか?または、彼らはあなたが彼らに与えるすべての「魚を教える」アドバイスを無視し、あなたがちょうどそれらをもたらした「魚」に焦点を合わせますか?間違いは学習するための最良の方法であると知って、常に自分で物事を把握させますか?または、あなたは彼らが非常に焦げてイライラし、スピードに出たいという欲求を失うことを恐れていますか?

いつあなたよりも後輩を助ける時期を選択し、いつ立ち止まって彼らに彼らの過ちを学ばせるかを選択しますか?


5
+1。とてもいい質問です。スプーン給餌は誰にも役に立たないが、その後、誰かをヒラメにさせることも大きな失敗である。
スティーブ

1
いつでも自分で何かをすることはできないことを忘れないでください。時には問題やエラーがあり、それを解決するために新鮮な心が必要です。そして、彼らがより多くの努力をしたいという欲求を失った場合、それは彼らが本当に教育を受けるに値しないでしょう。脳にスプーンで餌を与えることはできません。私はよく、教師が多くの理由で答えられないという質問をします。何らかの理由で、私は、常に空腹の好奇心があり、多くのことを知るまで仕事をしません。この種の学生に注意してください、彼らはあなたの時間だけを吸うのではなく、彼らの時間も吸うでしょう。明るい側では、私はもっと明快だ...
jokoon

1
コードを書かないでください。それらを見せてください。彼らに助言を与えます(彼らが聞きたいなら)。
カミルトムシク

回答:


51

私の仕事の1つで、私は学習と教育の両方をしていました(もちろんすべてを知っているわけではありませんが、私はいくつか以上を知っています)

しないでくださいすべてのコストで、キーボードの上に手を置きます。これは、あなたにとってもあなたが教えている人にとってもイライラさせられます。たとえ手順を追って説明しても、キーボードに手をかざすと、コードを渡して「これで解決する」と言うのと同じです。

私が学んだことで:

  • それらのコードを入力しないでください
  • 自分のレベルで教えるようにしてください(構文を理解している場合は、説明しないでください。これは単に退屈するだけで、代わりに使用するクラス/関数を教えます)
  • それらを無視したり、「自分で考え出そう」と言ったりしないでください。最終的に問題となるのは、問題が発生した3行のコードを除いて、後で問題が発生することです。現在、この問題を回避するために8つのファイルに50行が広がっています。
  • 自分で学ぶことを教えます。最善の方法の1つは、stackoverflowを使用するように指示することです。彼らが私に尋ねたら、私は時々、答えさえ知っていました。「まあ、私はこの質問をstackoverflowで尋ねるつもりです」と言います。質問へのリンクを提供します。コーヒーブレークを取り、いくつかの異なるコードを見てください。彼らが「だからどうやってその問題を解決するのか」と尋ねて戻ってきたとき、彼らにSOに関する質問を調べるように言ってください(あなたが与えたURLを使用して)。大衆は通常私よりも優れた教師であることがわかりました。
  • インターネットからコードをコピーして貼り付けて、なぜ機能しないのかを尋ねるときは、各行が何をするのかを説明してもらいます。できない場合は、使用されている関数/クラスを調査するように伝えます。必要に応じて、クラスと関数の説明を提供します
  • コードのレビューを実施して、問題が解決したかどうかを確認します。後で問題が発生するのを回避するだけではありません。
  • いいね 誰かがドキュメントなしでコードベースを始めようとしているとき、ソースコードを読むように言うだけではありません。問題の機能の概要を要約してください。または、さらに良いことに、ドキュメントの作成を開始します:)
  • 謙虚になりなさい。問題についてBSしないでください。わからない場合は、わからないと言って調べてもらいます。多くの場合、検索するキーワードを知るのに十分なドメインを知っているだけで、それらを与えるのに十分な助けになります。

9
追加する「コードを入力しない」ための+1:Ctrl-Vを押すと、クリップボードの行数に比例する電気ショックが発生するようにキーボードを操作します。:)
インゴ

ワオ。私はこれほど多くの賛成票を得るとは思わなかったlol
Earlz

2
これが最も重要なことだと思います。「多くの場合、検索するキーワードを知るのに十分なドメインを知っているだけで、それらを与えるのに十分な助けになります。」-そこにいた(ジュニア)
JCasso

「自分で学ぶように教えてください。」、私は間違いなく同意します。
スティーブンムー

+1 SOの使用。さまざまな意見を得ることに加えて、回答は後でレビューするために記録されます。誰もがソリューションの知識を保持しているわけではありません。
クリス

27

ソクラテスの方法、すなわち、彼らに前向きな方向に考えさせる質問をする

[これは、問題が何であるかわからない場合でも役立ちますが、解決策はほとんどありません]


3
質問するための+1。これは驚くほど驚くべき教え方です。記事がどこにあるかは思い出せませんが、どこかで教師が質問だけで1年生のバイナリ加算と減算を教えました。
アールズ

-1質問に直接回答しない場合... メンタリングの根底にある問題への優れた回答を提供する場合:
+100 ...-ニュートピア

@Earlz、見つけたらリンクを追加してください。


22

私は彼らが建築するのを助け、そこで立ち止まることを学びました。適切なツールを選択し、一般的な設計を1つまたは2つの複雑な問題に合わせて作成し、それらを手放します。彼らが戻ってきて助言を求めたら、それを小さな塊で彼らに与えてください。そうでない場合は、それらをさせてください。

あなたは「焦げたとイライラ」について完全に正しいです。それらは、あなたがマイクロ管理するか、またはつまらないものであるなら、まさにそれです。最後に、同僚との友好的な仕事関係を確立するのに役立ちます。信頼と相互尊重を得るために費やした時間は、10倍以上になります。


1
一方で、私はかつてとても怠け者と働いていたので、APIのパラメーターを覚える必要があるたびに、自分で調べるのではなく私に尋ねます。夢中になった:彼らはmemcpyを他の誰と同じように調べることができた-彼らが望むなら。当時、マニュアルページのコピーを印刷していました。私は本を​​手渡し、「クリスケークのために自分で調べてください!」と言いました。
すぐに

1
@quickly、または「時間があるときにこの簡単なことをお手伝いします」そしてそれに戻って...後で...!

10

本当に早く物事を仕上げる必要があるとき、レンガの壁にぶつかったことがはっきりしているとき、そして助けなしに理解することを期待するのが明らかに不合理なとき、私は彼らを助けます。ただし、何かに時間を割いていない場合は、最初に試してみる方が良いでしょう。

「魚を教える」のではなく「魚」を取る限り、それを行う最善の方法は、人々の問題を解決ないことです。彼らにアイデアを与え、彼らにそれを実行させます。彼らがそれで走り、失敗したら、もっと助けてください。彼らが成功すれば、さらに良い。


6

彼らが優れたプログラマーであるなら、彼ら自身でそれを成し遂げる方法を見つけるべきです。現在、情報を見つけたり、特定の問題の解決策を見つけることが不可能に近い状況では、あなたがそれを理にかなっている限り、援助の手を貸すことは理にかなっているように見えます。スプーンで答えを与えないでください。

おそらく例として、私は18歳で、何年も独学で学んでおり、自分のコンパイラを含むいくつかのクレイジーなことを書いており、独学しています。私は本当に行き詰まっているものだけで助けを求めます(少なくとも1日間検索して実験してきましたが、役に立ちませんでした)。また、反例も提供したいと思います。プログラミングのクラスで、学生に、コンパイルさえしていないコードをデバッグするように頼まれたことがあります。

基本的に、優秀なプログラマーであっても、若いプログラマーであっても、ほとんどの問題に対する解決策を実験および研究できるはずです。


9
仕事の始めに人々にアイデアを与えることは、たとえ彼らが高齢者であっても、生産性を大幅に向上させることがよくあります。私の経験では、ビジネス環境では、1日または2時間ではなく、1時間または2時間後に助けを求める方が良いでしょう。
jprete

5
しかし、あなたの時間を払っているのはあなたのクライアントだということを忘れないでください!ソリューションを研究するのに1日費やしたことに満足しているでしょうか。それは上級開発者に尋ねることで15分で解決できたでしょうか。
アダムハート

3
ビジネス環境では、それに応じて時間を配分する必要があると思います。一日はそれをカットしません。しかし、自分で問題を解決することは、あなたの問題解決スキルが向上するので、あなたにとって有益だと思います。最終的には、今すぐまたは後で支払うことができます。

1
@アダム、質問は上級開発者に尋ねるか、自分で尋ねるかです。これは、すべての学習プロセスの後です。

3

私はメンターしますが、彼らが私に彼らのために彼らの仕事をして欲しいなら、私は立ち去ります。通常、問題を解決する方法に関するいくつかのアドバイス、またはタスクの説明の言い回しは大いに役立ちます。Googleで使用する必要がある単語を伝えるだけでも十分に役立ちます。最大2分。


3

私は最近ポモドーロテクニックを使い始めました。その結果、現在のタスクに関する思考の流れを崩さずに質問に答えることができない場合、ポモドーロの終わりまで平均15分ほど遅れて回答を延期できるかどうかを尋ね始めました。私が発見したこれの興味深い副作用は、私が彼らの机に立ち寄って質問に答えると、彼らはしばしばそれをすでに自分で解決しているということです。そうでない場合は、その時点で、十分な注意を払う準備を整えています。

これは学校ではありません。彼らが最終的に自分で見つけることができる事実をすぐに提供するなら、それは不正行為ではありません。それどころか、彼らの時間を節約することはビジネス上理にかなっており、私の経験では、正しい方向に頻繁に小さなプッシュを与えるメンターと比較して、試行錯誤によってスキルはほとんど磨かれません。私は彼らが9つの間違った方法と1人の権利よりも、私の助けを借りて物事を行う10の正しい方法を学びたいです。

何かを簡単に検索できる場合は、その方法を教えます。一方、特定のバグの症状を調査するためにどのファイルを調査するかなど、経験からしか知ることができない場合は、説明のない答えを返すだけで何の問題もありません。

逆に、アーキテクチャガイダンスのようなより主観的なものには、常にその背後にある推論を伴う必要があります。1つには、ジュニア開発者が特定のタスクについて、あなたよりもずっと深く考えていることです。話し合うことで、結論に飛び付かないようにします。また、ルールが適用されない将来の状況にルールを盲目的に適用しないようにします。

同僚を助け続けることを断固として拒否した1つのケースだけを考えることができます。それは、数時間かけて何かを説明し、いくつかの例を調べた後でした。いくつかの非常に主要なヒント。その時点で、彼女はファンダメンタルズを真剣に再学習せずに仕事を続ける希望はほとんどありませんでした。


1

彼らが同じ質問を3回目にしたとき、私は彼らを助けるのをやめます。

私は彼らが最初に自分自身を助ける場合にのみ、彼らを助けるために喜んでいるだろうと彼らに伝えます。そこから別の池で魚を探して無料の餌を探しに行きます。その場合、通常はしばらくすると解雇されます。または、彼らはそれで働き、より多くのために戻ったときに大当たりします...それは同じというよりも学ぶべきものです!


1

コンテキストが重要だと思います。

応答時間が重要である重要な実稼働サポートの問題を扱っている場合、実際に多くのヘルプとともに多くの説明を提供し、彼らが問題を学習できるようにします。

期限がそれほど敏感でない場合、複雑さがドライバーになります。もちろん、スキルレベルの適切なタスクを割り当てるだけで初心者を大いに助けることができますが、それが研究を通して解決できるものであれば、正確な答えを与えずに彼らを導くことは素晴らしいアプローチです。

彼らが他の場所を見て簡単に答えられる質問をするなら、私は彼らに彼ら自身の仕事をするように操縦します。これらの方針に沿って、かなりローテートなプロセスまたはソリューションがあり、それを奴隷にすることの価値がほとんどない場合、チェックするのに便利なウィキがない場合はあなたを恥じます。

ビジネスに固有のドメイン知識を移転することになると、私は言葉を刻みません。できるだけ早く直接講義します。初心者は、後で来るすべてを支援するためにそれを必要とします。ビジネスについてあまりに早く、または簡単に教育されるようなことはありません。私はかつて、ある種のトリックを1時間かけてプレイして、答えを導き出そうとした上司がいました。私は真新しく、まだアプリやビジネスについて何も知らず、生産サポートの問題に対処していました。「なぜあなたは&#@ $!#@&(* $%!ゲームをしているのですか?請求書を出そうとしているユーザーは答えを待っています!」


1

あなたが彼らを助ける前に彼らに尋ねなければならない最初のことはあなたがこれについて調査したことだと思いますか?「はい」の場合、彼らが見つけたものを尋ね、正しい方向に向けます。それを調査することはしばしば過小評価されますが、私が学んだベストプラクティスの1つであり、必要な情報を見つけることで自分で学習する力が得られます。

問題がより複雑な場合は、何をすべきかを伝えるのではなく、いくつかのアイデアを共有するようにして、問題にアプローチできると思うかどうかを尋ねます。

彼らが手がかりを持っていない場合、すべての詳細を明かすことはせず、試してみるのに十分な解決策を説明する非常に基本的なレベルに分解してみてください。アルゴリズムフローチャートなどの非常に有用なツールがあります

結論として、学習プロセスに干渉することなくそれらを導くようにしてください。常に彼らがあなた依存するように彼らを助けるのを常に助けて、それから割り当てられます、それはあなたの時間をとり、逆効果です。


1

私は彼らが知っておくべきシンタックスのような単純なことを手伝うことを避けます;あるいは彼らが知らなければ彼らは自分で理解できるべきです。もっと複雑なものであれば、一度説明してもかまいません。

プロセスの説明や、組織/プロジェクトのコーディング標準などの説明に関しては、3つのストライキルールを使用します。彼は物事を3回以上説明する必要がある場合、私は本当に人が足の不自由だと思います。実際、これも私たちの評価の基準の1つです。

多くは学習者に依存しています。私は彼らが自分でいくつかのものを拾うことを期待しています。「この問題に直面して、A、B、Cの方法を試しましたが、問題を解決できませんでした」と思われる場合は、私は彼らを助けます。彼らが単に「この問題に直面している」と思いついて何もしなかった場合、私は彼らに本に戻って解決策を探すように頼みます。


1

初心者プログラマーとして(主にPerlとSQLを使用して現在の仕事で約9か月、a)Perlの知識がなく、b)この仕事の前にSQLを数か月いじっていた)プログラミングの質問をするとき、私がこれまでにやったこと、または機能していない(そしてデバッグするのが難しい)場合、バグがあると思います。可能な場合、私は釣り方を学ぼうとしました。


1

次の状況では支援を停止します。

  • Google / Stackのチャネル化に使用されている場合
  • 適切なドキュメントとコメントを提供し、それらがRTFMステージをショートカットしている場合
  • 彼らが汚い、コメントなしであるならば、「私は今これをハックして、後でそれに戻って来ます」と&£>!$

適切なドキュメントを提供していない場合、または作成したツール/クラスを使用している場合、それらを支援するのは私の責任です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.