web-dev-qa-db-ja.com

今日の(複雑な)Web環境向けにジュニアプログラマーをトレーニングする方法は?

現在、私たちの会社は、ほとんどの場合、Ruby on Rails web server and bunch of different REST =クライアント、JavaのキオスクシステムからC/C++の組み込みデバイスまで(標準のWebブラウザーのインターフェイスに加えて)。チームを拡大する必要があり、優れた上級プログラマーを見つけることができなかったため、私たちは、会社と共に成長するジュニアプログラマーのトレーニングに力を入れることにしました。

すでにいくつかのRubyとRails本を書いて、おもちゃのプログラムを作成するように頼みましたが、私は今、学習曲線がどれほど急であるかを理解していますWebプログラミングの現在の状態です。

15年前にプログラミングを始めたとき、私はDelphiとSource Safeのみを使用し、最初から使用可能なソフトウェアを作成することができました。どちらもシンプルなツールであり、環境の内部構造を詳しく調べるのは簡単でした。ゆっくりとサードパーティのフレームワークを使い始め、CVS、SVN、そして最後にGitに切り替え、HTTP、JavaScript、CSS、RESTなどのように、今日のWebを構成する要素を学びました。長年の経験から、Ruby on RailsがDelphiについて過去に行ったように内部でどのように機能するかについてはよくわかりません。基本的な学習ブロックを、使用していたツールに接続できるようにするために重要です。

単一のフレームワーク(Rails)の使い方を学ぶには非常に多くのこと(Ruby、HTML、CSS、JavaScriptなど)があるため、私が採用しているプログラマーは、チームと統合して有用なものを作成するのに長い時間がかかるようです。 REST、テストケース、データベースアクセス(SQLはフレームワーク内に魔法のように構築されています!)、MVC、3つの異なるパッケージマネージャー(Ubuntu、gem、およびRubyのバンドルに最適)、ssh、git、Apache、およびPhusion Passengerをデプロイします。

ジュニアプログラマーと直接やり取りするのは初めてなので、迷っています。選択肢が非常に多いときに、今日のWeb開発のベストプラクティスについてジュニアプログラマーをトレーニングする最良の方法は何ですか?

39
Rômulo Ceccon

多くの人はこのアイデアを気に入らないでしょうが、私はできる限りこのことを主張しています。プログラミング言語や環境に関係なく、経験がない場合や、顧客の実際のバグレポートから生じるメンテナンスタスクがある場合あなたの場合、少なくともその時間の30〜40%(+)の間、そのようなタスクに割り当てられるようにしてください。 「ここにバグレポートがあります。それを見て、解決してください。それが何であるかわからない場合は、経験豊富な同僚とコミュニケーションをとって、ググってください。」実際の問題についての実際の作業noおもちゃ、少なくとも:おもちゃだけではありません。もちろん、多くの経験を持つ誰かが、リリースされて顧客に出荷される前に、彼らが何をしていたかを見ていることを確認してください。新しい同僚が同僚や顧客から彼がしたことについて正直なフィードバックを得ることを確認してください。これらのタスクは、負担がかからないように慎重に選択してください。ただし、いつか独立して作業を実行してもらいたいことを覚えておいてください。

バグ修正を行うことは、実際に実行され、ある程度の関連性がある(そうでない場合はバグ報告がない)コードで作業できるようにする仕事を学ぶことであり、多くの例ではそれを行わない方法を示します。

フォーカスは自動的に問題点に置かれます。彼らは実際に問題を引き起こしているそれらの詳細を学び始めます。また、最初から真に責任を負うことになります。これは(メンテナンス自体は魅力的ではありませんが)顧客/エンドユーザーの満足を得ることができれば、やる気を起こさせる可能性があります。彼らがしたことを経験することは、あなたの先輩によってより真剣に受け取られ、物事がうまくいかなかった場合の影響を彼らに知らせます、そうすれば、チームへの統合も簡素化し、彼らがお互いに自動的に話し合うようにもさせます。

ポイントはnotであり、最初の瞬間から生産的に設定します(これは次のようになります)。重要なことは、彼らが最初の瞬間から何か価値のあることをすることになっていることを彼らが知っていることを確認し、実際にリストを作成する必要なしに最も重要なことに集中することです。

私は時々働いて数年の経験があり、大学から直接新しい開発者の仕事にやってきた人と一緒にいて、私が目にした最悪の結果は通常、少なくともメンテナンスの経験のない人が新しいアプリケーションの開発を依頼されたときでした。迷子になった場合にサポートを依頼できる人が常にいるようにしてください。

39
Thomas

まず、実際に有能なジュニアプログラマーを採用したとします。これは必ずしも安全な仮定ではありません。特に、「私より経験の浅い人」にインタビューする上級プログラマーは基本的な無能を見落とす可能性が高いためです。

しかし、彼らが有能であると仮定すると、最初のステップはそれらをクラスに送ることです。 1週間のクラスでは、2,000〜3,000ドル(米国)かかります。ただし、教材を(うまくいけば)理解するインストラクターが実際に体験できるようになるでしょう。本を誰かに送り、「これを学ぶ」という指示を出すことは、それほど価値のあることではなく、それ以上の費用がかかる可能性があります(クラスの費用は、プログラマー1週間の浪費にほぼ等しい)。

彼らがベースラインの知識を得た後、彼らと一緒に働きます。隣接するデスクに座って、少なくとも半分の時間をあきらめて、彼らがあなたのビジネスとあなたのやり方を理解していることを確認します。はい、少なくとも最初は生産性が低下しますが、長期的にはチーム全体の生産性が向上します。また、コストについて考えると、ジュニアの人が1か月間無駄なことをすると、それはおそらく給料の半月分に相当します。

8
parsifal

彼らに求めているおもちゃのアプリケーションは、いくつかの基本的なCRUD機能を実装する必要があり、各開発者は独自のコードを書く必要があります。しかし、コードレビューでアプリケーションについて話し合い、ヒントを提供することができます。生産性の合理的な期待が可能である場合は、最初にMVCアプリケーションの全体的なアーキテクチャを理解する必要があります。

そこから、各開発者は、Javascript、CSS、DAL、テンプレートジェネレーター、ルーティングなどの関連するサブジェクトに独自に取り消すことができるはずです。学習するトピックに関するガイダンスを提供し(会社の最も差し迫ったニーズに基づくことができます)、指導し、進捗状況を監視できます。開発者を1人ずつ、実際の開発努力を前進させる機能を生み出す単純なプロジェクトに移動します。開発者は、必要なスキルの把握を示した瞬間に。

経験豊富な開発者の一部を、一種のメンタリングプログラムとして見習いと組み合わせることができます。後輩の開発者がメンターを中断できる時期とその期間を知ることができるように、利用可能なガイドラインがあるはずです。彼らのメンターは、彼らが実際のコードを書き始めたときに彼らの仕事を監督することができます。

非常に賢く、知的好奇心が強く、率先して行動する若者を見つけることができれば、より良い時間を過ごせるでしょう。このプロセスが機能するのを見てきました。それは私の以前の雇用主のアプローチでした。なぜなら、彼は専門家に多額の金を払うことを望まなかったからです。彼の最大の課題は、彼の投資を取り戻すのに十分な時間彼らに留まるようにすることでした。どこか他の所でより良い給与の魅力が常にありました。

4
Robert Harvey