私は少し不安定な立場にいます。
私は最近、ジュニア開発者を大学から直接プロジェクトに連れてきたクライアントのためにリモートで働いています。彼は物理的に彼らのオフィスで働いています。彼はコンピューターサイエンスを研究していたと思います(現時点では100%思い出せません)。
彼は2か月前に会社にいて、プロジェクトマネージャーによってアプリのテストと習得に着手し、この1か月ほどの間、小さなバグと機能が割り当てられました。
その時点で、彼はコードを1度だけコミットしたことがあり、それは私が基本的に彼に説明して書いたコードでした。 (私は彼がそれを機能させるために何日も費やした後、彼が機能するソリューションを見ることは有益だと思いました)。
私は彼といくつかの電話といくつかのペアプログラミングセッションを行ったことがありますが、彼はジュニア開発者にとってもそれほど難しいはずのない単純なJavaScriptコードにイライラしている日々を過ごしています。おそらくプログラミングは彼にとって良い道ではないかもしれないと私は考え始めていますが、彼が自分で解決策を見つけて改善するのを助けるのに役立つように、できる限りの努力をしたいと思います。
私がトレーニングとメンタリングを提供しなければならない立場になったのはこれが初めてです。離れていると、おそらくこれもはるかに困難になります。
彼が上達するのを助け、彼を動かすために私は何ができますか?
彼が学校に通った場所にもよりますが、彼は1か国語で非常に些細なことをするのに数ヶ月以上の経験がないかもしれません。それは修正できますが、努力する価値があることを確認してください。
彼が救われることができるかどうかを言う必要があるようです。
彼が半分妥当な解決策または悪い解決策を思い付くことができるが、適切な問題解決プロセスを考えることによって、彼はコードを学ぶことができます。彼が解決策を正しく考案するプロセスを通して考えることができない場合、おそらく彼はよりよく考える方法を彼に教えることができません。
また、経営陣が状況を理解していることを確認してください。そうしないと、新しい担当者が追いつくまでに2人の仕事をやがて始めることになります。
私は実際にはかなり前から非常によく似た立場にありましたが、今は開発者と少し進歩していると思います。結局それは恥ずかしがり屋の場合に限られると思いますが、私は彼に「コミットしてサーバーにプッシュする必要があるので、あなたが動けなくなった場合にあなたをよりよく助けることができます。プロジェクト」、そして彼はコミットし始めました。
士気を向上させるために、彼らが対処できる(つまり、自分のレベルより下の)責任を彼らに与えます。
彼らが決定を下して失敗するようにすることも重要です、それは学習と呼ばれます。アーキテクチャや設計の決定をほとんど行わず、彼らがどのように機能するかを確認する力を彼らに与えます。彼らが失敗したら、彼らにどのようにうまくできるかを伝え、そして彼らと一緒に座ります。
あなたが5分で彼らが5時間で行う仕事を5分で行うことがわかっているので、焦らないでください。彼らにやらせてください。
より小さな割り当てとより明確な目的を持つことで、彼らは失われている気分を減らし、目前の問題をよりよく攻撃します。もしそうなら赤ちゃんのステップ。
悲しいことに、すべての人が十分なイニシアチブを持っているわけではありませんが、イニシアチブを教えることができます。
「失敗させる」という議論は一部継続しますが、物理的にではなく常に到達範囲(IMなど)に留まります。 IMで彼らとつながっている場合は、正しい答えで答えることができる場合もありますが、他の場合は、彼らをぶら下げたままにして、忙しいふりをして(残酷、私は*邪悪なにやにや笑う*)、「brb 、google XHRとActiveX」、「google the compiler error」、または「google」...これを行うと、部分的には彼らを良い意味で愚かに感じさせ、自分で物事を研究することへの恐怖を徐々に緩めます。
彼らはFirebugについて知っていますか、Chrome Dev Tools ?.一般的なjsの落とし穴はどうですか?。彼らは良いjavascriptフレームワークを使用していますか?(例 MooTools )。彼の仕事をできるだけ楽しく生産的なものにする武器を彼らに与えるため。
あなたはいつもプロではなかったですよね?どのように学びましたか?それを覚えて、同じ道にそれらを置くようにしてください。
何か問題があるかどうかを尋ね、パフォーマンスが十分でないことを知らせます。個人的に私は人と直接話をするのが好きです、そして私は彼らに前もって言っているので、最も恨みがありません。
あなたが彼らに言わなければ、彼らは問題があることを知らないかもしれません。
私はジュニアプログラマーとこのような経験をしました。私はあなたに逸話を与えます、そして彼女のために働いたことが他の誰かのために必ずしも働くとは限らないという明白な警告とともに。
彼女の問題は、宿題のセットで合理的に求められるおもちゃのシステムではない、大学で何かを扱う必要がなかったことです。そのため、何十年も進化してきた実際のコードベースで実際の問題に直面したとき、彼女は本当にどこから始めればよいのかまったくわかりませんでした。
私たちのマネージャーは彼女に現実的な困難な問題を与えました、それは他のものへのあまり多くの依存関係を持っていなかったので、私は数日で終えるでしょう。彼女がそれに引っかかっているのを見ました。しばらくして、私は定期的に彼女のところへ行き、彼女に「提案が欲しいですか?」と尋ね始めました。 1〜2か月後、彼女はようやく故障し、私の助けを喜んで受け入れました。
私の「助け」は、彼女に問題を細かい部分に分解させることでした。毎日私は入ってきて、彼女と話し、彼女にその日の目標は何であったか尋ねます。常に彼女はいくつかの定義が不十分で大きすぎる作品を切り分けました。私にはそれが大きすぎるように聞こえたと彼女に伝えます。深刻な問題が発生しなければ、昼食で現実的にできることをやらせてもらいます。昼食後、私はそれがどうなっているかをチェックします。
一週間で彼女は順調に進んでいて、リズムを理解していました。さらに1週間後、彼女は与えられた問題に対して完全に許容できる解決策を提供しました。彼女は次の問題をうまく解決し、完全にうまくいきました。
私たちのマネージャーは実際には彼女の最初の悪いパフォーマンスを期待していたことがわかりました。私は彼が最終的に介入したのではないかと思いますが、彼は私がやっていることを見て、マネージャーよりも同僚から来る方が効果的だと考えました。
彼の経歴と彼がよく知っていることの詳細をご覧ください。彼がコンピューターサイエンスの学位を取得している場合は、おそらく何らかのコーディングを行ったと思われます(ただし、Javascriptではないかもしれません)。彼がよく知っている言語が何であれ、その言語に関して問題/解決策を説明できるかどうかを確認してください。彼が類似点を見ることができれば、物事がクリックし始めるかもしれません。
人々はさまざまな方法で学び、彼がどのように最もよく学ぶかを理解しようとします。これを直接の質問として、または彼の経歴について調査する一環として、彼が学校で楽しんで成功したプロジェクトの種類を調べ、それらがどのように構成されているか説明できるかどうかを確認できます。一部の人々はほとんど方向性のない問題を解決するように求められ、実験/試行錯誤を行うことによって最もよく学びますが、他の人々は段階的に示されることを望みます...
彼の経歴について尋ねるもう1つの利点は、彼が本当にプログラミングの仕事に適していないかどうかをよりよく判断できることです。明らかに彼は時間を与えられて改善するのを助けるべきですが、もし彼が結局は改善しないなら、彼が得意でない仕事に挑戦し続けようとすると、それはあなたたちの両方にとって悪いことです。
彼を助けて正しいことをしようとしているようです。
(また、彼と一緒に1週間ほど現場で作業するように手配することは可能ですか?)
それは彼が無能である、それは彼を保護しないでください-あなたはクライアントに好意を示していません。
辛くて申し訳ありませんが、それはビジネスです。学位を持つすべての人が優れたプログラマーになるわけではありません
とはいえ、あなたが彼を改善したい場合は、彼がコードカタに参加し、ローカルユーザーグループに参加し、コーディングコンテストに挑戦し、一般的にコーディングが適切であるか、彼が間違った職業を選んだことに気づくまでコーディングとコーディングを続けることを提案します
いかなる状況でも、この人があなたの責任になることを許可しないでください-それが実際にあなたの仕事でない限り
難しいもの。
残念ながら、一部の人々はプログラミングコースを自分の歯の皮で、多くの場合他の人の助け(およびコード)を受けています。そのため、どこから始めるべきかについての最初の手掛かりがなく、誰かが大学を卒業することは避けられません。 (ここで私は教育システムを少し非難するかもしれません、なぜなら私はcookie-cutterコードに過度に依存する傾向と、低レベルのプログラミングのいずれかを抽象化する傾向があると思うので-私は何かプログラミングのプロセス、つまりロジックの基礎を見つける。)
ここに行く:
ここには明らかに変数がたくさんあります(そして他のいくつかの良い答えがあります)が、ここにあなた自身に尋ねるいくつかの質問といくつかの考えがあります:
だから、本当に、これは期待、態度、適性、そして貢献に帰着するべきです。もし彼が彼が知る必要があることを学びそして拾うことができると彼が示すならば、彼はまた彼が立派な態度を持っているなら彼を維持する価値があるかもしれません。
重要なことは、彼は進歩と成長を示し、停滞したり、簡単に挫折したりしないことです。これは、忍耐といくらかの自己動機を必要とする役割です。
タフコール。彼が欠けている根本的な基礎を特定するようにしてください。
問題が発生している領域を特定するのに役立つように、混乱する直前に、彼が最後に上手く行っていたのはいつか、最後に彼が何をしているのかを本当に理解したのはいつかを尋ねます。それは彼が会社に入る前に彼が勉強したものかもしれません。
その領域のどこかに彼が理解していると彼が信じているものが彼の混乱の本当の原因であることがわかります。変数とは何か、プログラミングの意味すら理解していないほど基本的なことかもしれません。それを数回繰り返すと、彼は「明るく」なり始めるはずです。
別のアプローチは、彼が立ち往生しているさまざまなものを見ることです。次に、「三角形分割」して、一般的な分母が何であるかを見つけます。彼がすることは何の意味もないことに注意してください。次に、これらがどのように組み合わされるかを理解してみてください。あなたがパターンを見つけることができれば、それは彼が本当に理解していないことがそれが何であるかについてかなり良い考えを与えるはずです。
別の考えられる状況は、彼がアプリケーションが何をすることになっているのか、そしてその理由を理解していないことです。アプリケーションのデモとユーザーの視点からのいくつかのコンテキストは、実際に役立ちます。
彼が理解していないことがわかったら、彼を効果的に助けることができます。それまでの間、あなたはただいじり回して、幸運になることを望んでいます。
ただし、彼をデバッグすることは、顧客が支払うものではない可能性があることに注意してください。したがって、顧客との理解がない限り、自分の目標に遅れを取らないでください。
幸運を。