重複の可能性:
いつ自分を上級開発者と呼ぶべきですか?
私はシニアプログラマーのオファーをよく目にします。経験則では、1年になるには3年間働く必要があるということです。期間はあまり意味がないので、上級プログラマーに正確に何が期待されますか?彼は何ができますか?追加の質問として、開発者はいつジュニアと見なされるのをやめますか?
ソフトウェア開発には、コードをクランキングするだけではありません。
これは次のようになります:責任
ジュニア開発者はまだ言語とフレームワークを毎日学習しているため、これに焦点を当てる必要があります。メンター(または少なくとも経験豊富な同僚)は、彼(特に設計上の決定)を導き、定期的に(そして彼の仕事だけでなく)確認し、正しい方向に微調整し、時にはパスをスムーズにするのを助けることが期待されます(たとえばトリッキーな作業をしたり、構成/展開を処理したりします)。
一方、シニア開発者は自律的であることが期待されています。つまり、上司は実装する機能を彼に渡して、完全に彼に任せます。上級開発者はいつヘルプやレビューを求めるべきかを知っているからです。上級開発者は、タスクをいつ完了するかを上司に伝えることができ、実際にその責任を負う必要があります。
したがって、違いは言語の専門知識ではなく、経験(全般)と信頼性にあります。
難しい、難しい質問。私が熱心なジュニアよりも信頼できないシニア開発者という肩書きを持つ多くの人々を知っているという事実には助けられません。確かに、私はそれに値するよりもずっと長くそのタイトルを保持してきました。
しかし、私がそうあるべきだと私が思うように、ここに線があります:
ジュニア開発者には、メンターシップが必要です。だからといって、シニアがピアレビューを必要としないわけではありません。それは危険な態度です。しかし、昨日同じ質問をしない限り、ジュニアからの質問は馬鹿げていると考えるべきではありません。
ジュニア開発者は、開発のプロセスや開発の背後にあるビジネスニーズではなく、開発に集中する必要があります。ただし、シニアはこれらの事柄に関与し、それらについて学ぶ必要があることを認識しておく必要があります。
ジュニア開発者は、シニアの仕事ほど責任を負うべきではありません。繰り返しますが、これはメンターシップに戻ってきたと思います。常に彼の上に誰かがいて、彼の仕事をチェックし、問題が発生した場合は責任を負うべきです。
ジュニア開発者はそこにいなかったし、それらすべての間違いを犯した。これは、彼が何度も何度も出てくる落とし穴やEdgeケースに精通することができないことを意味します。技術的なインプットが「この状況についてあなたは考えましたか?」
上級開発者の主な役割は、メンタリングとガイダンスです。
それは、あなたがどれほどプログラマーが上手であるかということではなく、アイデアを伝え、チームメンバーを彼らの仕事を通してどの程度うまく導くことができるかについてです。知識と経験だけでは、必ずしも優れたメンターやガイドになるとは限りません。しかしもちろん、価値ある衝動を与えるには両方が必要です。
ジュニア開発者とは、チームに貢献するためにガイダンスとメンタリングを必要とする人です。ピア間のメンタリングと交換の基本的な違いは対称性です。
期間はあまり意味がないので、上級プログラマーに正確に何が期待されますか?
とりわけ、良い判断。
外部から上級開発者を雇うと、他の会社が良い判断を下す費用を支払いました。
上級開発者は、何が機能し、何が機能しないかを知っている必要があります。すべての問題を解決する方法は20通りありますが、彼/彼女は最適なルートを知っている必要があります。また、特定のテクノロジーに関する明らかな技術的熟練度。ただし、上級開発者も上級問題解決者として相互に関連付けられる必要があります。
プログラミングは他のどの職業とも変わりません。
まず、3年は「ジュニア」と見なされなくなるには十分な時間だと思います。しかし、私が3年の経験を持つ人を「上級」開発者と見なす方法はありません。構文以外にも学ぶべきことがたくさんあるので、3年間で詳しく説明することはできません。単一のフレームワークに慣れるために、さまざまな問題に十分に触れるだけで3年かかると思います。したがって、たとえばWPFを3年間使用している場合は、上級のWPF開発者になることができます(これらの3年間に同じ一連の狭いタスクを実行していなかった場合)。しかし、上級の「全体的な」開発者はいません。
私にとってシニア開発者とは、機能を要件から配信まで実行できる人のことです。彼または彼女は、ジュニア開発者にもガイダンスを提供できるはずです。このようなことをするには何が必要ですか?標準の基幹業務、多層、データベースバックアップアプリケーションの場合、これにはUI、クロスサーバー通信、データアクセス、およびSQL(またはそのルートに行く場合はO/RM)の知識が含まれます。
WPFとWCFを同じ3年間広範囲に使用している場合は、学習を同時に行うことができるので、2つのスキルに精通することができます。しかし、一度に学ぶことができることもたくさんあります。また、すべては、あなたが学んでいるときにどのような種類のトレーニング/メンターシップを受けているかにも依存します。
壊れたレコードのように聞こえるわけではありませんが、それを Dreyfus Model of Skill Acquisition に戻します(ここで、多くのことを言及しています)。初心者から熟達するのに反復は十分ではありません。あなたは徐々に挑戦している挑戦スキルを含む応用練習をしなければなりません。たとえば、WPFでは、基本的なユーザーコントロールの作成から始め、最終的には完全にテンプレート化されたルックレスコントロールの作成に移ります。
開発者のスキルレベルを決定するいくつかの要因があります。時間のみが最も重要でない指標です。
例:
Ruby on Rails)でプログラミングを始めたとき、3週間後に最初の小さなWebサイトがあり、さらに3週間後に顧客向けのプロトタイプがあり、さらに6週間後にオンラインで完全に機能するWebサイトがありました。時間私が働いた会社の経験豊富なRails開発者は、物事を正しくするための大きな助けとなりました。言語とフレームワークを学ぶことは最小の部分でしたが.
Railsでの数ヶ月の経験の後、Railsコミュニティ(メーリングリスト、フォーラム...)との恒久的な連絡先)私はRails裏返し。私はすべての「ベストプラクティス」を知っていました。それを実行する方法だけでなく、何かを行うための最良の方法を知っていました。重要なすべてのツールを知っていて、利点を比較し、これには、特定の状況下でのこれらのツールの欠点があります。これには、データベースでの全文検索、セキュリティ、オンライン決済システム、REST、CRUD、バージョン管理、およびその他すべてのWebビジネスの流行語など、Webプログラミングのさまざまな領域での経験が含まれます。
そのため、お客様から、特定の機能を実装できるかどうかを尋ねられたとき、私はそれについて何ができるかを伝えることができました。代わりに、可能な場合は、私が見なければならないことを伝えました。使用できるツールと、自分のコードを作成するために必要な費用を知っていました。
新しいプログラマーが何かを実装した場合、SQLインジェクションなどのセキュリティリスクを指摘できたでしょう。もし彼が機能を実装したいなら、私は彼にどんなツールを使うべきか、そしてRailsコミュニティの他の開発者がそれらを信頼できると見なしたのか、あるいは彼が問題を予想しなければならなかったのかと彼に話しました。
言うのは難しいです。一方では、シニア開発者は、シニアの称号を取得するのに十分な長さの会社でx年働いた人物です。 「シニア」開発者の称号を持つ何人かの人々は、私が私の最初の年の仕事をしたことに感銘を受けました、そして彼らのコードはゴミの完全な蒸し山でした。しかし、彼らにはx年の経験があったため、会社はシニア開発者に彼らを雇いました。それでも彼らはソフトウェアの設計を気にせず、1つまたは2つの巨大なメソッドに大量のifステートメントを投入し、厄介な変数名を入力して、それを実行しました。次に、それが非常に複雑であるため、デバッグするのは悪夢でした...私の現在の会社にも、ASP.NETページのコードビハインドですべてのコードをスローし、同じものを複製する、一緒に仕事をしている上級開発者がいます各個別のページのコード。
他の会社では、上級開発者は、UIデザイン、オブジェクト指向設計、優れたコーディングプラクティス、時間の見積もり方法などを知っていることが求められます...中レベルの開発者としての役割さえ得られなかった会社がありました。オブジェクト指向のスキルは弱すぎました。私の以前の開発の両方の役割では、上級開発者は実際にオブジェクト指向設計を行っていませんでした。私が本から読んだソフトウェアレイヤー/ドメインレイヤー/オブジェクト指向設計について知っている唯一のこと。全体的にずっとそれを練習しなければならず、それに熟練したシニア開発者は、まったく経験のないものよりもはるかに優れています。
ストーリーの教訓は全体として、走行距離はさまざまだということです。 1年の経験x回であっても、x年の経験を持つだけの役割を持つ人もいます。企業によって規格は異なります。私は、シニア開発者が優れた、クリーンで、よく設計された、保守可能なソフトウェアを作成し、そこでシニア開発者の役割に取り組むことが期待される場所を見つけたいと思います。そうすれば、私はx年の経験を持つ人だけでなく、実際のシニア開発者になります。シニアの称号を得た人。残念ながら、スキルに関係なく、シニア= x年の経験がある場所はたくさんあります。
しないを知って、時間を費やしてください。