今日の(複雑な)Web環境向けにジュニアプログラマをトレーニングするにはどうすればよいですか?


39

現在、当社は、ほとんどの場合、Ruby on Rails WebサーバーとJavaのキオスクシステムからC / C ++の組み込みデバイス(標準Webブラウザーのインターフェースを含む)までのさまざまなRESTクライアントで構成されるアプリケーションを開発しています。チームを拡大する必要があり、優秀なシニアプログラマを見つけることができなかったため、会社とともに成長するジュニアプログラマのトレーニングに力を入れることにしました。

すでにRubyとRailsの本をいくつか提供し、いくつかのおもちゃプログラムを作成するように依頼しましたが、現在のWebプログラミングの学習曲線がいかに急勾配であるかを理解しています。

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

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

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


8
最後の段落の2番目は、過去15年間に発生した重要な変更に気付いていなかったようです。ジェネラリストプログラマーは実質的にいなくなっています。誰もが参照するすべての詳細を知るには、15年間業界にいなければなりません。あなたはより良い結果はあなたが非常に密接リストものの一つや二つ知っている専門家を訓練し、(あなたが必要とする多様な専門家のチームを作成する/見つけることがあり、その後 crosstrain)。あるいは、あなたのような15年の経験を持つシニアエンジニアを見つけますが、それは簡単なことではありません。
ジミー・ホッファ

参考までに、急な学習曲線は、何かを本当に素早く学ぶことを意味します。間違って使用すると、一部の人が混乱します:)
Alternatex

:私はここに最良の選択かわからないので、私はいつも「難しい」という意味として式を使用(英語は私の母国語ではない)が、ウィキペディアはそれが曖昧だと言うen.wikipedia.org/wiki/Learning_curveを :)
ロムロCeccon

回答:


39

多くの人はこの考えを好まないでしょうが、私はどこでもできると主張しています:プログラミング言語や環境に関係なく、経験がなく、顧客の実世界のバグ報告から出てくる保守タスクがあるかどうか少なくとも30〜40%(+)の時間、その種のタスクに割り当てられるようにしてください。「ここにバグレポートがあります。それを見て、解決してください。それが何であるかわからない場合は、経験豊富な同僚と通信して、グーグルで検索してください。」実際の問題に対する実際の作業、いいえ少なくともおもちゃ:おもちゃだけではありません。もちろん、多くの経験を積んだ人は、リリースされて顧客に出荷される前に、彼らが何をしていたかを見てください。新しい同僚が同僚や顧客から行ったことに対して正直なフィードバックを確実に受け取るようにします。これらのタスクは、負担をかけすぎないように慎重に選択してください。ただし、いつかは独立して作業を行いたいことを覚えておいてください。

バグ修正を行うことは、実際に実行されて関連性のあるコードで作業できるようにするジョブで学習することです(そうでなければ、バグレポートはありません)。

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

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

私は時々、大学から直接新しい開発者の仕事に就く人々と働く数年の経験があります。そして、私が見た最悪の結果は、通常、メンテナンスの経験が少なくともない人が新しいアプリケーション開発をするように頼まれたときでした。彼らが迷子になったと感じた場合、彼らは常に彼らがサポートを求めることができる誰かを持っていることを確認してください。


私も同じことをします。いい答えだ。
ロックラン

私は最初の年に欠陥を修正する仕事を始めました。私が他のプロジェクトに移ったとき、私は何してはいけないかを知っていたので、バグ修正がそれをはるかに良くしたと感じています。
ブランドン14年

8

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

しかし、彼らが有能であると仮定すると、最初のステップはクラスにそれらを送ることです。1週間のクラスの費用は、2,000〜3,000ドル(米国)です。ただし、教材を(できれば)理解しているインストラクターと、それらをスピードアップするために設計されたレッスンプランで、実践的な体験を提供します。本と「これを学ぶ」という指示を誰かに送ることは、それほど価値のあることではなく、もっと費用がかかる可能性があります(クラスの費用は、無駄なプログラマ週とほぼ同じです)。

ベースラインの知識が得られたら、それら連携します。隣の机に座って、少なくとも半分の時間をあきらめて、彼らがあなたのビジネスとあなたのやり方を理解していることを確認してください。はい、少なくとも最初は生産性が低下しますが、長期的にはチーム全体の生産性が向上します。また、コストについて考えてみると、後輩が1か月間間違ったことをしている場合、それはおそらくあなたの給料の半月に相当します。


4

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

そこから、各開発者は、Javascript、CSS、DAL、テンプレートジェネレータ、ルーティングなどの関連するサブジェクトに独自に取り組むことができるはずです。どのトピックを勉強するか(会社の最も差し迫ったニーズに基づいて決定できます)のガイダンスを提供し、それらを指導し、進捗を監視できます。開発者を一度に1つずつ、必要なスキルを理解した瞬間に実際の開発作業を進める機能を生成するシンプルなプロジェクトに移動します。

経験豊富な開発者の何人かを、ある種の指導プログラムとして見習いと組み合わせることができます。後任開発者向けのガイドラインを用意して、メンターを中断できる時期と期間を把握する必要があります。彼らのメンターは、実際のコードを書き始めるときに作業を監督できます。

非常に賢く、知的に好奇心が強く、自発的な若者を見つけることができれば、より良い時間を過ごすことができます。このプロセスが動作するのを見てきました。彼は専門家に大金を払いたくなかったので、それは私の以前の雇用主のアプローチでしたが、それは「シンクまたはスイム」のようなものでした(正式なトレーニングプログラムはありませんでした)。彼の最大の課題は、彼らに投資を回収するのに十分な時間滞在させることでした。他のどこかでより良い給料の誘惑が常にありました。

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