ジュニア開発者を指導する方法


99

このタイトルは少し広いですが、質問をきちんと尋ねる前に少し背景を説明する必要があるかもしれません。

私は同様の質問がされていることを知って尋ね ここで、既に。しかし、私の場合、私は誰かを指導するべきかどうか、またはその人がソフトウェア開発者になるのに適しているかどうかを尋ねていません。それは私の判断する場所ではありません。私はあからさまに尋ねられたことはありませんが、私と他の仲間のシニア開発者がここから始まる新しい開発者を指導することは明らかです。私はこれにまったく問題はなく、多くの場合、物事に対する新鮮な視点を与えてくれ、その過程で学習することになります。また、誰かが私に何かを教えるのに時間がかかるのは、私のキャリアの初めにどれほど有益だったかを覚えています。

私が「新しい開発者」と言うとき、彼らは大学を卒業したばかりから1年か2年の経験を持っているかもしれません。

最近、私自身とは異なる開発/プログラミングに対する態度を持っていると思われる人々がここから始めました。タスクを完了するのに十分な情報だけを抽出しますが、実際には学習しません。私は彼らと同じ問題を何度も繰り返していることに気付きます。私はこれの一部が人格的なものである可能性があることを理解していますが、彼らが私の翼の下にいる間に最善を尽くして巣から追い出すことは私の仕事だと感じています。

どうすれば十分な情報を伝えて、彼らは学習するが、問題を解決するほど多くの情報を提供できないのでしょうか?

多分:

抵抗が最も少ない道をたどり、本質的に、簡単な方法をとるのではなく強制的に学習させるように設計された質問に対する適切な回答は何ですか?

これらの質問はおそらくより一般的な教育上の質問であり、ソフトウェア開発とは特に関係ありません。

注:私は彼らが取り組んでいるタスクについては発言権を持っていません。管理者がタスクを完了します。非常に単純なバグ修正からアプリケーション全体を自分で起動することまで何でも可能です。これは決して理想的なものではなく、明らかにそれ自体の挑戦の挑戦を提示しますが、私はそれが別の質問のために残された最高のトピックだと感じます。ですから、私ができる最善のことは、目の前の問題を解決し、それをより簡単な問題に分解し、コミットログを確認して、犯した間違いを指摘することです。

私の主な目的は次のとおりです。

  • 彼らを助け、彼らがより自立し始めるために必要なツールを与えてください。
  • それらを正しい方向に導き、早い段階で悪い開発習慣を打ち破ります。
  • 私が彼らと過ごす時間を短くします(上記の性格タイプは、1対1の時間をより多く必要とする傾向があり、IMや電子メールではうまくいきません。一般的にはうまくいきますが、私がいつもやめることはできません。 m作業して、私の歩みを破り、瞬間の通知でエラーをデバッグするのを手伝います。私は自分のプロジェクトを完了する必要があります)

1
誰かが彼ら自身になりたいものになるのを助けることができるだけです 誘導されたい人を誘導します。
ダークナイト

14
ソフトウェア開発に特化したものではないことはたくさんありますが、それ良い教師になることです(たとえそれがあなたの主な仕事でなくても)。教育の文脈の中で、私高等教育のクロニクルで、成功の可能性は次の3つの役割を演じると起こりうると書いています:良いロールモデルであること、技術サポートとして行動すること(良い質問をする方法と場所を理解するまで) )、およびチアリーダー(患者および支持者)である。
jcmeloni

1
このトピックに関する多くの素晴らしいフィードバックがここにあります:Programmers.stackexchange.com/questions/137708/…–
KodeKreachor

「メンタリング」レトリックに賛成する理由は何ですか?「トレーニング」という言葉を使用します。これは「仕事のためのトレーニング」を説明するものであり、これは哲学的なものではなく、宇宙やすべての生命を見るあなたの方法です。(そして、あなたの会社は彼らに公式のものを与えることについてもっと考えるべきです)
-ZJR

3
そして..キューブがあなたのキューブからトイレへの道の途中にあることを確認してください...
vrdhn

回答:


121

かつてこの種の情報を含む質問がこの辺りにありました。そして、私に一番とどまったのはキーボードに触れないことでした

要するに、後輩に彼らがやろうとしていることを達成する方法を教えてください、しかし彼らのためにそれをしないでください。

しかし、それに加えて、他のヒントもいくつかあります。

  • Google(またはその他の検索ツール)を奨励します。答えがオンラインで簡単に見つかることがわかっている場合は、答えを伝えるのではなく、調べるように伝えます。最終的にあなたは彼らに彼ら自身に教える方法を彼らに教えたい、そして彼らはあなたに依存するようにならないようにしたい。
  • 質問に答えるために自分を利用可能にします。利用できない、または中断したくない場合は、指定された時間まで質問を保持する必要があることを明確にしてください。
  • コードレビューを定期的に行って、彼らが正しい/間違っていることを伝えます。これをベストプラクティスを指摘する機会として使用します
  • ベストプラクティスから早めに始めてください。後で彼らの方法を試して変更するよりも、彼らに正しい方法を教えるために余分な時間をかける方が良いです。
  • 彼らがコードを書くことから始めさせるのではなく、彼らがやろうとしていることを計画/文書化することで、それらを早期に始めてください。
  • それらから学ぶことにオープンであること。彼らはおそらくあなたが学ぶよりも多くの時間を費やし、あなたが知らないことを学ぶ可能性があります。
  • 彼らが自分の過ちから学ぶのを助けます。間違いが発生するので、間違いは学習の一部であり、学習の機会として使用する必要があることを必ず示してください。

  • (以下のRuneFSから)彼らに何かをする方法を伝える代わりに、彼らが自分でそれを理解するのを助けようとします。これにより、問題を論理的に解決する能力が向上し、学習能力が向上します

  • (以下のRuneFSから)何が間違っていたのかを伝えるのではなく、それを改善する方法を伝えます。自分のやり方が彼らのやり方よりも優れている理由を必ず含めください。これは、彼らの自信を弱める代わりに自信を高めます。もちろん、彼らがあなたの話を聞いていないのなら、正しいやり方をするように言うことを恐れないでください:)

68
+1はキーボードに触れないでください。メンタリングの状況でそれを成し遂げるよりも何かをする方法を教えることの方が重要なこともありますが、それは本当に私のキーボードを盗む人々が絶対に嫌いだからです。
fire.eagle

3
既に言われていることは知っていますが、「キーボードに触れないでください」。非常に良い点です
トムスクワイアズ

3
これの多くは、ジュニア開発者にもっと賢い質問をするように教えているだけだと思います。このための素晴らしいリソース:catb.org/esr/faqs/smart-questions.html
TALlama

4
私はあなたのポイントの大部分に同意しますが、私はコーチと他の人々の開発の責任を持つ他の人々を教えるために非常に一生懸命努力している2つの部分があります。彼らに何かをする方法を教えてはいけません。彼らが自分自身でそれを理解するのを助け、彼らが間違ったことを彼らに伝えないで、彼らが代わりにどのように改善できるかを彼らに伝えてください。前者は自信を弱める代わりにそれを後押しすることができるので後者は彼らの学習を増やすからです
ルーンFS

1
@Jae:アドバイスは、メンターがジュニアのキーボードに触れないようにすることです。
ftr

21

私は約4年の経験があり、後輩開発者としての私の経験から、指導の面で私が望んでいたことをお話しできます。あなたが実際に私が始めたときにいた開発者のタイプを説明しているようです:)

基本的に、あなたは彼らに学ぶことを奨励したいのです。大学を卒業した後は、本を読んだり勉強したりする必要はないと思う人もいます。この種の態度は、ショートカットを探し、「それを成し遂げる」ことにつながります。
「実用的なプログラマー」になってもらい、読んでもらう。この本は、プログラミングが単なる仕事ではなく、クラフト/キャリアであることを理解するのに役立ちます。四半期ごとに読むための本をお勧めします。「知識ポートフォリオ」の構築を支援します(Pragmatic Programmerで説明されています)。私は、CS /プログラミングの本がたくさんあるSafari Books Onlineを強くお勧めします。

知識ポートフォリオを使用して、問題がある場合にどこを調べるべきかを知ることができます。どこを見るかを教えます。私自身も最近StackOverflowの有用性を発見しました(ご存知のように、ここで見たほうがGoogleよりも優れている)。

あなたは彼らと多くの時間を過ごすことができないように見えますが、ペアプログラミングは非常に役立ちます。それができない場合は、少なくともCodeCollaboratorまたは他の同様のツールを使用してコードレビューを行います。あなたが思っているほど時間はかかりません。

単体テストも非常に重要です。特に継続的インテグレーションと組み合わせると、悪い開発手法をすぐに明らかにすることができます。


10

単に彼に伝えるのではなく、主要な質問に戻って彼を答えに導きます(サーバー名や情報を保存するデータベースなどの基本的なことを彼に伝えることができます)。彼に答えを見つける方法を見せてください。

また、コードが間違っている場合は絶対に書き直さないでください。何が間違っているかを伝え、修正することを期待してください。期待通りの結果が得られます。あなたは彼をあなたに依存させることによって誰も助けません。

コードレビューも重要です。また、プログラムをペアリングする場合は、頻繁にキーボードを持たせてください。あなたが彼に何をタイプするかを伝えているとしても、彼はあなたがプログラムをしている間、あなたの隣に座っていることを学ぶよりもタイピングをすることからもっと学ぶでしょう。

アプリケーションがどのように構成されているかを示す典型的なソフトウェアの例をいくつか取り上げて、各行を1行ずつ説明し、各行が必要な理由とその機能を理解していることを確認します。彼がコーディング標準とコードの編成方法、そしてあなたが(会社として)なぜあなたがそうするのかを知っておくのはあなたの仕事です。

彼が提案する別の方法を持っている場合は、注意深く聞いてください。そもそも彼は正しいかもしれない。第二に、リスニングは、彼が示唆することが実用的でない場合、理解の彼の弱点がどこにあるかを教えてくれます。さらに、あなたが彼らに耳を傾けるなら、人々はあなたをより尊敬する傾向があります。彼が間違っているときは、主要な質問に戻って、なぜアイデアが間違っているのかを自分で確かめるようにします。彼が正しいことにさえ近づいたら、時々彼のアイデアを受け入れてください。あなたのアイデアは価値がないといつも言われるほど落胆することはありません。

彼の経歴について質問してください。彼はあなたが仕事をする機会がなかったいくつかのことを知っているかもしれません。もしそうなら、それらを使用する機会が出てきたら、彼の知識について彼に質問してください。

あなたのアプリケーションがまったく古い場合、おそらく新しい誰かが知る方法を持たないよりも、いくつかの卑劣な「落とし穴」があります。したがって、彼がこれらの落とし穴を1つ以上持っている領域で作業を始めたとき、コーディングの前にスピードを上げていることを伝え、コーディングの際に落とし穴に陥ったかどうかを確認することができます。

最後に、部分的に敬意を払うことで敬意を得ることができます。メンターをしているすべての人を丁寧に扱ってください。彼らを軽littleしたり、愚かだと感じさせないでください。敬意をもって接すれば、彼らはあなたの話をよく聞くでしょう。


1
私が自分で与えた答えとほぼ同じですが、私も付け加えます:間違いは学ぶための最良の機会を提供するので、あなたの後輩に間違いをさせてください。失敗は感情的な刺激を引き起こし、学習を促進する記憶連想をもたらす可能性が高くなります。そして、あなたのジュニアがより多くの質問をすることの失敗によって奨励されることを願っています。私はよく後輩に、失敗から学ぼうとしても最初は失敗しても大丈夫だと言います。テストとコードレビューを使って学習努力を導きます。
-S.ロビンズ

主要な質問をすることは、誰かを別のレベルに成熟させるために見つけた最高のテクニックの1つです。あなたの主な目標は、正しい答えにそれらを取得することはありませんが、それは、彼らがそれを見つけたときに正しい答えを認識できる場所にそれらを取得するのです(そのように、途中で間違った答えを破棄することができます。)

1
@ S.Robins、私は、あなたが陥った間違いのためにあなたがこのことを知っていることを指摘することも役立つことを発見しました。
HLGEM

8
  • 開発者が私の助けを求めていることを常に確認し、忍耐が耐えられる以上に説明に深く入らないように細心の注意を払っています。みんなと同じように、私は自分の声の音が大好きです!
  • 私は彼らを平等に扱い、私が断言するのと同じくらい頻繁に彼らの意見を聞くようにします。
  • 彼らが正しいことをして、彼らに知らせてください。
  • 私は、自分の技術、職業、開発者、教育について、この正しいことをするときに常に何かを学びます。
  • 最初の教訓は常に、自分で試してみた時間が長すぎることを知るときです。多くの人が自分の答えを見つけることに誇りを持ち、輪になって貴重な時間を費やしています。

再:「彼らが正しいことをしているのを捕まえる」:私はこれに同意するかどうかわからない。それはあなたが常に彼らの肩越しに見ているか、少なくとも定期的に彼らをチェックしていることを意味するからだ。必要な関係があるかもしれませんが、メンターとプロテジェの関係はそれらの1つではないと思います。そして、「平等に扱う」というあなたの優れたアドバイスと矛盾します。
-ruakh

ルアック、あなたは素晴らしい点を挙げています。私が最初に自分でマネージャーになったとき(彼は私の指導者でしたが、彼はブルックリン出身でした...)、私はマネージャーに教えられました。より適切に:「彼らがしていることについて何か正しいことに気づいてください。」私はそれでリードします。必然的な「off by 1」問題がCプログラマーに出てきたとき、彼女のループ構造はコンパクトでコメントが充実していることに気付いた後、彼女にロジックを説明してもらいます。ありがとう。
トーマスマクナミー

ええ、はい、私はそれに乗っています。+1。:
ruakh

7

私はジュニア開発者であり、私のメンターはこれらのことを非常にうまく処理していると思います。一般的に、彼は何かをするためのいくつかの方法を教えてくれますが、その方法は教えません。それから私はそこに座って両方の方法を試してみて、どちらが問題に対する最もクリーンな解決策であるかを決めました。

また、もし彼が私に役立つかもしれない何かをしていたら、彼は彼が何をしているのか、そしてその理由を説明するためだけに私を呼ぶでしょう。

その結果、わずかな時間が私に費やされ、本質的に私は自分自身に正しい答えと物事を実装する方法を学ばなければならなかったことを意味しました。もちろん、私が立ち往生した場合、彼は助けてくれるでしょうが、これはほんの一握りの時間でした。彼と一緒に働いてわずか5か月後、おそらく大学のコース全体よりも物事の知識が増えました。

覚えておくべき重要なことは、私は単なる個人であり、これは私がどのようであり、彼がどのようであるかのために私にとってうまくいったことです。それはあなたとあなたの両方を助ける適切な構造を見つけることです。


5
+1人々が私に教えるのに時間をかけたからといって、大学でこれまで得られなかったよりも多くのことを仕事で学びました。
ジェームズ・コーリー

7

与えられたタスクに応じて、私はいくつかの異なるアプローチを取るように誘惑されるでしょう:

  • タスクを完了するために次に何を試みるかを尋ねます。これは、「何をすべきかわからない」から「まあ、これを試してみますが...」というカテゴリーから出発点に役立つかもしれない独自のアイデアを持っているという点でのアイデアを与えることができます。

  • 彼らが何をしたいのかを簡単に見て、ヒントを提供して、問題を理解するようにします。これは、「このコード行を削除するだけ」という答えを与えるのではなく、彼らがそこにあるものを見て、それがすべて必要であると提案することです。

  • 最初のカップルが機能しない場合は、問題を解決するために何をすべきかについての私の指示に従うようにしようと思います。これは進行の次のステップであり、どこから始めればよいのかわからず、ヒントが機能しない場合、これが次のポイントです。

  • 最後に、他に何も機能しない場合、私は彼らのために仕事をしますが、これは可能な限り回避しようとします。これは、誰かがオフロード作業の見方をする可能性があるため、システムを熟知している人のような問題が作成されるためですこのシステムのおかげで、私はとてもよく知っているようです。


+1何かを書くつもりでしたが、これは私のアプローチでそれを要約しています。
ジェイソンセブリング

5

私が仕事でここでやったことの1つは、内部Q&Aのフォーラム(PHPbb)を設定し、質問や回答に5分以上かかる場合は、フォーラムで質問と回答がありました。メリット:

  • ジュニア開発者に質問を明確に述べるように強制します。これにより、彼が答えを見つけた時間は言うまでもなく、それについてもう少し考えるだけで答えが容易になります。
  • ジュニア開発者は、すでに作成された同様の質問を検索することから開始する必要があるため、重複した質問を回避します
  • これは、将来の雇用や時間内に失われる可能性のある多くの小さなものを文書化するのに役立つ知識ベースの構築に役立ちます。

4

ここでトレンドに逆らい、あなたがジュニア開発者に自分自身で答えを見つける方法を学ぶように奨励しようとしないことを提案します。これは、「私はそれを持っているが、あなたにそれを与えるつもりはない」というゲームのように見えます。

代わりに、答えを見つける際にそれらとペアになります。とにかくグーグルで検索するので、一緒に座ってそれをしてください。彼らは、これが答えを見つける方法であることを理解します。

あなたが彼らと密接に仕事をすれば、彼らはIDEを適切に使う方法を手に入れるでしょう。データベースを正規化する方法。コードを乾燥させる方法...知っていることは何でも知っておく価値があります。

キーは次のとおりです。1-自分がどのように働いているかを見ることができるように、自分で利用できるようにします。そして2つ目- なぜあなたがしていることをしているのかを大声で言うこと。「このコードは繰り返されるので、リファクタリングします」「これらの3行で抽出メソッドを使用する」ではありません。


あなたがトレンドに逆らっているとは思わない。これは良いヒントです。彼らと協力して、問題を解決する方法示します(ただし、それを見つけるプロセスを示すために、答えを知らないふりをする必要があるかもしれません)。
ジョシュジョンソン

そして、明確にするために、私は知識を隠すつもりはありません。しかし、私が知っていることは(意識的または無意識的に)利用されていることが明らかになりました。そして、私たちが使用している技術の深い隠れた洞窟については話していません。私は、プリミティブとオブジェクト、またはインスタンス変数とローカルの違い、またはエラーが何であり、どこでそれを探し始めるかを正確に伝えるエラーメッセージについて話している。(参考までに、私の現在の生徒は5年間の職業経験があります。私は不合理だとは思いません。)
ジョシュジョンソン

4

私はジュニアプログラマーを一度だけ訓練する必要がありました。それは私が構築したシステムを維持するのを助けることでした。目標は、最終的にシステム全体を彼に引き渡すことでした。

彼が私を遮った短い期間の後、私は彼を火の中に放り込みました。私は彼にケースを割り当て、それらが完了することを期待しています。もし彼が問題を抱えていたら、私は彼に問題が何であったか、そして彼がどこを見ていたかを説明してもらうでしょう。それから私は彼に最も一般的な言葉でアドバイスし、次にどこを見るか。(どのアプリ、おそらくどのモジュールを見るかなど)。私は彼をからかうことは決してありませんでしたが、私は仕事をすることも決してしませんでした。指示のみを提供します。それでも問題が解決しない場合は、肩をすくめて「コードのトレースを開始」と言います。そして、私がそれを言うたびに、彼はうんざりするだろう-彼が退屈な運動に参加していることを知っている。それは彼に夢中にさせた。なぜなら、もし私がお尻から降りて助ければ10分でおそらく問題を見つけることができると知っていたからだ。

数年後、彼はより大きなものに移り、今では自分の後輩を訓練しています。そして、彼のお気に入りの話は、私が彼に「コードをトレースする」ようにいつも言う方法であり、それらのコードトレースの練習が彼を彼が今日のプログラマーにするために重要だった方法です。


3

簡単なGoogle検索で解決できるとわかっている質問をするたびに、ドキュメントまたは関連記事を見つけて、質問している人にそれを伝えます。

どこを調べればよいかを知ることは重要なスキルであり、新しい開発者が考えるよりも難しい場合があります。彼らは彼らが何を探しているかさえ知らないかもしれません、そして、これはあなたが彼らを助ける必要がある場所です。

記事やドキュメントを手に入れると、他の開発者にすばやく答えを求めるのではなく、ソリューションについて読むように強制します。

これにより、次のことが実現します。

  • ベテランの開発者の負担を軽減します。
  • 新しい開発者に強制的に学習させる。
  • すべての幸福。

特に、彼らが学びたいように思えない場合、彼らに厳しい愛を与える必要があります。答えを与えないで、正しい方向に向けるようにしてください。


3

あなたが持っている実際の課題の一部を与え始め、彼のコードを使えるようにするためにすべてを作ることをお勧めします。言い換えれば、自分の代わりとして彼を訓練します。

このようにして、あなたはジュニアと仕事をする時間を割り当てることに専念し、彼は「現実の生活」を見ることができるようになります。実際の課題に取り組み、活発なフィードバックを聞くことにより、彼はpをかなり速くスピードアップすることができます。


1

私は過去にさまざまな科目を教えてきましたが、私が最も驚いたことは、ほとんどの人が問題解決スキルを持っていないことです。つまり、彼らに正確な解決策を示した場合、彼らはそれを認識したり、それが必要だと言われたりした場合、後で再利用することができます。

しかし、そのような人生の状況はほとんどありません。あなたの仕事が、ツールCでウィジェットAをウィジェットBに貼り付ける「メンタルファクトリ」でない限り、いくつかのアイテムが必要になります。

  • スキルとツールのツールボックス
  • 問題解決方法

たとえば、私が投稿したこの回答を見てください。それは多くの人が持っていない問題解決方法をカバーしています。大学はCompSciプログラムの誰にもこれを教えませんでした。あなたはすでにそれを知っているか、自分で理解しました。

ジュニア開発者が問題を解決する方法を理解したら、そのためのツールセットが必要です。

  • デバッガー(大学はこれに言及したことはありません)
  • プロファイラー
  • テキストエディタ
  • シェル(および関連するユーティリティ)
  • リソース(書籍、Google、SO、マンページ)

ジュニア開発者に不足しているものを特定すれば、改善に役立ちます。一部の人々は自分の問題を解決する方法を学ぶことに本当に興味がなく、単に彼らに手渡された「明白なステップバイステップ」ソリューションを望んでいることに注意してください。これらは良い開発者ではありません。

うまくいけば、あなたはそれらのどれも持たないでしょう。そうした場合、どれだけの時間を費やしても、すべてが自分自身を助けるわけではないことを理解してください。それは努力を必要とし、彼らのためにそれをするように頼むことは簡単です。それは福祉の問題に似ており、経済理論によって説明されています。

啓発された自己利益は、人々があらゆる与えられた状況で最も有利なオプションとして彼らが見るもの取ると言う。彼らが見るものであることに注意してください。私は、最も重要なことは自給自足で学習していると考えています。だから、私は自分で物事をします。しかし、他の人は、期限までに作業コードを提供するだけでよいと考えるかもしれません。そこで、彼らはそうするための最も費用のかからない方法を探します。彼らに「景品」を提供することにより、彼らは目標を達成するために最小限の労力を費やす必要があります。その松葉杖を取り外すまで、彼ら成長しません


1

あなたが説明する組織は私の組織とは大きく異なります。私は後輩の仕事に追われており、それを判断するのが私の役割だと考えています。だから多くは異なっています。

とにかくあなたにアドバイスしたいことの1つは、特に最初の2週間に頻繁に彼らの机を訪れることです。最初の週に1日3回のように、徐々に減少します。

この方法で送信しようとするメッセージは、彼らの生産性に関心があるということです。私は彼らが動けないことを確認します。私は彼らが規則に従っていることを確認し、車輪を再発明しないでください。できるだけ頻繁にコミットするように教えます。漸進的に開発することを学び、漸進的に設計について考えてください。

私の最悪の悪夢は、開発者が毎日、機能を実行するのにあと1日だけ必要だと言うことです。数週間後、作成者が最初からハッキングされた複雑すぎる設計になります。追加のリクエストされていないバグのある機能は、遅延を補うためにミックスにスローされます。これは、それらが設計の無料の副作用であったためです。

多くの開発者がこのアプローチに傾いていると思います。compexのタスクを自分で任されている場合、自分でできることを証明しようとするのは自然な反応です。しかし、それは間違った反応です。品質はチームワークであり、学習が早ければ早いほど良いです。


1

他の答えは非常に良いですが、私はこの一文にコメントしたかったです。

最近および過去に、開発/プログラミングに対する態度が私のものとは異なり、私には和解するのが難しいと思われる人々がここから始めました。彼らはタスクを完了するのに十分な情報を抽出するように見えますが、実際にはそこから学ぶことはありません。

ほとんどの人は、何かをする方法を知りたいです。この態度は、新しいことを学び、仕事をする方法を学ぶことに圧倒されたとき、最初はうまくいきます。

まれに、何かが行われた理由を知りたい人がいます。これらは、管理が困難な場合でも、スマートマネージャーが望む人々です。

一部の人々は、よく支払われるようにコーディングしています。他の人は喜んでコーディングのお金を受け入れます。デザインとコーディングに情熱を持っている人と仕事をする方がずっといいです。私にとって残念なことに、それはかなりまれでした。少なくとも、スタックオーバーフローが見つかるまで。


1

ジュニア開発者向けにこのすべてのメンタリングを行うことを期待して興奮している人々のために、注意すべきこと:経営陣が何が起こっているのかを確実に理解してください。

一般に、他の人を教えるのは大変です。集中と集中、計画と努力が必要であり、何よりも時間がかかります。どんなアプローチをとっても、真剣なやり方で教えたり指導したりすれば、あなたの時間に食い込んでしまいます。

  • 上級開発者がトレーニング義務を負うことを期待して、経営陣が経験の浅い開発者を雇用する場合は、それが明確であることを確認してください。時間枠を確認し、開発スケジュールがトレーニングに費やされた時間と労力を反映していることを確認してください。合意された時期に、メンタリングの成功を評価するための計画が経営陣にあることを確認してください。(もちろん、彼らが教育と指導を必要とする開発者を雇っているが、経営陣がそれを計画していない場合、それは明らかに深刻な問題です。)

  • すべての人が優れた教師または指導者であるわけではありません。また、全員が望んでいるわけでもありません。私は無愛想または苦い音をするつもりはありません。私教えることが大好きです。しかし、すべての人が(自分の才能にも関わらず)上手になることを期待するのも馬鹿げているし、誰もがそのプロセスを楽しむことを期待することもできません(簡単ではないことを思い出してください)。さらに、あなたがメンタリングを楽​​しんでいない上級開発者である場合、またはあなたが教師やメンターに自分が悪い選択であると本当に感じている場合は、それらの職務を行うことを伴う計画が、重大な欠陥。一方、指導やメンタリングが得意になりたい場合は、それもコミュニケーションする必要があります。

  • 教育とメンタリングが上級開発者の集団全体で不均等に負担される場合は、製品開発の成果が認識されるのと同じ方法で、それらの割り当てが企業にとって価値のあるものとして認識されるようにしてください。


1

私にそれを見てみましょう。

基本的に、私がよく習うのは:

  1. トピックの正式な紹介が行われます。誰か(はい、人)が新しい概念に関して私が持っているすべての質問に答えなければ、私は決して新しいことを学ぶことができません。完了したら...
  2. 本を入手してください。私の指導者として、あなたはまったく同じ本を持っていなければならないので、「ねえ、第4章、72ページ、パラグラフ6で何を意味するのか...」と言うことができます。約。本を手に入れたら、私はより独立し、本当に質問するだけです。その後私は...
  3. 一緒にプロジェクトを開始します。これはプロセスの最も重要な部分です。ここから、ベストプラクティス、アルゴリズム、難しい(ただし有用な)言語機能などについて教えてください。

さて、あなたはあなたが自分の面倒を見るプロジェクトを持っていると言っていました、そして、あなたにはいつも時間があるわけではありません。それがStackOverflowに恵まれた理由です。彼らが彼のコードのデバッグを喜んで手伝ってくれると確信しています。そこで話題にならない質問については、彼はここで質問することができます。

とはいえ、彼とは定期的に仕事をしなければなりません一般的な「タイムライン」は次のとおりです。

  • 1ヶ月。基本的な構文を知っている必要があります。コーディング時はまだ独立していません。
  • 3ヶ月。この時点で、彼は手の甲のような構文を知っている必要があり、簡単な問題を簡単に解決できるはずです。彼ははるかに独立しており、まだまだ完全ではありません。
  • 6ヶ月。彼らは、他のすべてに加えて、ベストプラクティス、共通アルゴリズムなどを知っている必要があります彼は、SOから少し助けを借りて、自分でプロジェクトを作成できるはずです。

上記に加えて、誰かを独立させる最も簡単な方法は、彼らに学ぶのが難しいトピックを与え、彼らにインターネット以外の何の助けも与えないことです。彼は自分で学ぶことを余儀なくされ、彼は自分のもの知るでしょう

彼があなたが彼に知りたいことを知った後、彼を自由設定してください。彼が出て行って、彼が学びたいことを学ぶことを許可します(あなたは彼にその言語で働き続けたいといつも言うことができます)。

これがお役に立てば幸いです!ところで、彼にこれを読んでもらいましょう:10年でプログラミングを教える


0

学習の低レベルと高レベルを区別します。知識、理解、またはアプリケーションに関連するものであれば、答えをすぐに出して、次にどのように検索できるかを簡単に説明するだけで問題ありません。これは学校でもないし、不正行為でもありません。彼らはあなたに永遠に頼りません。最初の1週間または2週間は他のことをするつもりはないので、そうしなくても困りません。

最初の数週間後、この種の質問で頻繁に中断される場合は、pomodoroタイマーを使用し、pomodoroが終了するまで質問に答えないでください。検索対象を知っているので、Googleは簡単です。彼らはしばしばそうしないので、もしあなたが何かをグーグルで検索する必要があるなら、どの検索語を使用するかを教えてください。

問題が分析、合成、または評価に関連している場合は、トピックにもっと時間を費やします。ここで、意思決定の背後にある推論を提供し、同じ結論に到達できるようにします。これは、デザインとスタイルの問題で最もよく起こります。特定のデザインを使用するように伝えるだけでなく、最初の選択よりも優れている理由を示します。彼らに間違いをさせ、自分の間違いを直させます。


0

私の個人的なヒーローであるランディ・ポーシュに言及している人はここにはいません。

プログラミングを実際に行ったり、教えたり、指導したりする人にとって(あるいは有意義な生活を送りたい人にとっても)有益だと思います。あなたおよび/またはあなたの同僚は、私が持っているように、これらの講義を見る価値があるかもしれません


-4

私は、ジュニア開発者として、問題に出会ったらすぐに答えを得て、それがどのように解決されたかを理解することに時間を費やす方が良いと感じています。

支払った。私の雇用主は私に学習費を支払うことを期待していません。私は一日の終わりに仕事をする予定です。作業環境で時間を無駄にせずに解決策を見つけようとします。それは私が時間内に拾うもので、できればすぐに私がやることが得意であればすぐに。



13
ジュニアプログラマーとして雇われた日よりも決して良くならないなら、あなたは雇用主にとってあまり価値がありません。

10
マックス、あなたはくだらない雇用主がいない限り、間違っている。優秀な雇用者は、仕事で、または会議やクラスにあなたを派遣することによって、学ぶためにあなたに支払います。現在の態度を維持する場合は、ジュニア開発者から抜け出すことを期待しないでください。ジュニア/シニアのようなタイトルは、あなたが何かをしてきた時間に基づいて配られません。同じことを長い間やってきたが、学ばなかったとしても、あなたはまだジュニアと見なされます。
アンディ

5
@MaxSan問題は、上級開発者がスプーンフィードを提供することはめったにないということです。インターンをフルタイマーとして雇い入れたのは、彼らが自分で解決策を考え出すことができなかったからです。あなたがそれを理解しようとするのにいくらかの時間を費やすこと、そしてあなたが助けを求めるために来るのに合理的な時間を費やしたときだけに期待しています。シニアとして、あなたは他の誰にもできない問題を解決することを期待されるでしょう、そして、あなたがスプーンの餌であるならば、あなたはそれをすることができないでしょう。
アンディ

6
「プレート上の」ソリューションが必要な場合は、ジュニア開発者としての地位を失うことはありません。あなたに与えられた完全なソリューションから学ぶことはあるかもしれない可能性が、それは確かではありません効果。それが脳の仕組みです。ソリューション自体だけでなく、ソリューションへの道を体験すれば、他の誰かが提示したソリューションを研究するだけでなく、多くのことを学ぶことができます。
ペルディアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.