どうやらこの定義は私が思っていたものを意味しないので、上級開発者が何を意味するのか知りたいです。私は、自分たちをシニアX開発者またはシニアY開発者と呼ぶ22歳から23歳のこれらの10代を見続けています。私にとって、シニアは自分自身を「シニア」と呼ぶには、プログラミングで10年程度の経験が必要です。私はここでこれらの10代の若者の多くを見てきました(したがって質問)。私が間違っている?どうして?
次の場合、自分をシニアと呼ぶことができます。
ソフトウェア開発は他の分野とは異なり好奇心旺盛な生き物です。
時には、大学を卒業したばかりのパンクが、20年以上の「経験」を持つ退役軍人を中心に輪を走ることができます。プログラミングは奇妙な世界であり、コードは王様です。
2年以内に上記を達成する人もいれば、10年かかる人もいます。
「シニア開発者」と聞くと、プログラミングをマスターした人を思い浮かべます。システムを設計、コーディング、テストできる人を思い浮かべます。彼らは、システムアーキテクチャやコンポーネントの設計について話し合うことができます。彼らはデザインパターンを理解し、使用しています。この担当者はパフォーマンスのボトルネックを予測できますが、事前に最適化しないことを知っています。この担当者は、必要に応じて、非同期プログラミング、キューイング、キャッシング、ロギング、セキュリティ、永続性を活用します。尋ねられたとき、彼らは彼らの選択と長所と短所の詳細な説明を与えることができます。ほとんどの場合、それらはオブジェクト指向プログラミングとデザインを習得していますが、これはJavascript、F#、Schemeなどの絶対的な他の言語ではなく、強力でオブジェクト指向ではありません。彼らはリスク管理に長けており、最も重要なことは、前述のことを同僚に伝えることができることです。
習熟とは何ですか?一般に受け入れられているアイデアがあります。1つのスキルを習得するには、人間の体と心がスキルを把握して内部化するのに10,000時間の繰り返しが必要です。これはMalcolm GladWellの本 Outliers に詳しく書かれています。元の作者がフィールドをマスターすることについて話しているとき、彼は非常に競争の激しいフィールドのトップに到達するには10,000時間かかると言及していました。
Malcolm GladWellの外れ値の例は次のとおりです。
モーツァルト21歳の若さで彼の最初の協奏曲。最初は若く見えますが、彼は11歳の時から音楽を書いています。
ビートルズは当初敬遠されました。彼らはマスタードを持っていなかったので、別の作業を検討すべきだと言われました。彼らはドイツで3年間過ごし、さまざまな会場で約1200回プレイします。毎回5〜8時間です。彼らは私たちが知っていて今日愛するビートルズとして再び現れました。
そして最後に、20歳のBill Gatesがハーバード大学を中退してMicrosoftを設立しました。一部の人にとってこれはばかげているように見えるかもしれませんが、20歳のときに彼が若い人生のプログラミングのほぼ半分を費やしていたと考えています。 1975年には、世界でたった50人しか経験がありませんでした。彼の経験は、マイクロソフトの将来を予見する先見性を与えました。
Peter Norvigは彼のエッセイ「 Teach Yourself Programming in 10 Years 」で10,000時間のルールについても説明しています。
George Leonardの本 Mastery には、スキルを習得する方法の詳細が記載されています。スキルを何度も何度も練習する必要があります。繰り返しが多いほど、各繰り返しの違いに気づくようになります。この洞察によってのみ、あなたはより良くなることができます。
ソフトウェア業界の称号(ジュニア、ミッドレベル、シニア)は誤解を招きやすく、組織ごとに一貫性がありません。私は、シニアデベロッパーを5年以上の経験を持つ人物と定義した企業と協力してきました。体験の質については言及されておらず、5年間コンピューターの前に座っていただけです。これらの人々と協力して、彼らの多くはまだオブジェクト指向プログラミングを理解していませんでした-それでも彼らは上級開発者と見なされていました。
ソフトウェアエンジニアのスキルセットを測定するには、より客観的な方法が必要です。 John Haugeland はコンピュータープログラマーのスキルマトリックスを投稿しました。これは プログラマーのスキルレベル を測定する客観的な方法です。それ以外の場合は直感に任されます。
ソフトウェアエンジニアを見ると、ルミナリー、シニア、ミッドレベル、ジュニアの4つのスキル層があります。
Luminary(10+ years)は、スキルを習得し、それぞれの分野の改善に着手した人です。 Ted Neward 、 ncle Bob Martin 、Donald Knuth、 Oren Eini 、 Peter Norvig 、Linus Torvalds 。ルミナリーはあなたのスキルセットに基づいて変化します。
シニア(7〜10年以上、レベル3)は、特定のジャンルで過去10,000時間のプログラミングを費やした人です。設計パターンはよく理解されており、非同期プログラミング、キューイング、キャッシング、ロギング、セキュリティ、永続性を適切に活用しています。
シニアがLuminaryに到達しない可能性は十分にあります。著名人はしばしば話したり書いたりします。彼らは積極的に自分の規律に影響を与えようとしています。
中級(4〜6年、レベル2)は、日常のプログラミングを理解している人です。それらは独立して動作し、堅牢なソリューションを作成します。ただし、大規模または複雑なシステムの作成または保守の経験はまだありません。一般に、中レベルの開発者はコンポーネントレベルの開発に優れています。
ジュニア(1〜3年、レベル1)は、プログラミングの基本を理解している人です。彼らは、ソフトウェアエンジニアリングまたはコンピュータサイエンスの学位を持っているか、独学です。彼らのコードは継続的に見直されています。アルゴリズム、保守性、および構造に関してガイダンスが提供されます。
「いつあなたは自分を上級開発者と呼ぶべきですか?」-私がジュニア開発者を指導し始めたとき
私は同じ傾向に気づきました。先日の質問の1つは、2〜3年の経験を持つアーキテクトへの上級開発者に関するものでした。
どんぐりを木と呼ぶこともできますが、それが何であるかは変わりません。
唯一の論理的な結論は、「シニア」は別のことを意味するということです。
最近は単なる役職ですで、業界の相対的な経験については何も言わないかもしれません。
あなたは要点を逃しています。
シニアは何も意味しません。ジュニアは何も意味しません。タイトルは何の意味もありません。私の役職-アソシエイトビジネスシステムディレクター。私の責任-社内のソフトウェア開発からインフラストラクチャ、セキュリティ、顧客のWebサイトに至るまで、ITのすべてのものを管理します。私のソフトウェア開発経験-独学。私のネットワーク経験-独学。 IT分野における私の全体的な能力は、あなたの能力よりも悪い。
私の管理能力と指示能力-議論の余地はありますが、私の性格と個性が私に仕事を与え、私を成功に導きました。
タイトルは、能力や努力がすべてを意味することを意味しません。私は最高ではありません-そしてそれを信じることは傲慢になるでしょう。
タイトルについてのハングアップを忘れて、あなたの価値を証明してください!
最良の答えはDarknightによって与えられた だと思います。
次の点を指摘する必要があると思います。
2〜3年のプログラミング経験(共同作業+個人での作業)では、十分な数のプロジェクトを見て十分な量の問題に対処したことがあるだけでは不十分です。うまくいきません。物事を頭の中を通過させ、経験を振り返り、精神的により高いレベルの思考に移るには、時間が必要です。一晩で起こることはありません。
5から7年の練習(もう一度+一緒に個人的に)の下では奇跡は期待できないと思います。特定の言語やフレームワークで多くの経験を積むかもしれませんが、まだ新しいレベルの考え方にジャンプすることはできません。
もう1つは、個人の全体的な成熟度です。私の意見では、それは最初に30歳に近づきます。それ以前は、脳はより高いクロックレートで動作している可能性がありますが、メモリに十分なデータがなく、より大きな画像を見ることができないため、ジャンクを処理しています。私たちの一般的な生活経験は、私たちの考え方や働き方に微妙ですが現実のものを追加します。したがって、他の種類の仕事としてのプログラミングにも同様です。
シニアの私の個人的な受け入れ:誰か少なくとも27歳少なくとも7年間の実践それ以前は、個人的には懐疑的でした(ただし、まだオープンマインドですが、それは私にとってより多くの証拠になります)。
最近、Martin Fowlerによる優れたブログ投稿がありました。私がそれから取り除いたものは:
それはあなたが誰かのために働いている期間とは何の関係もありません。あなたは3年間働き、シニアデベロッパーになります。 6年後に何が起こりますか?あなたはシニアシニア開発者になりますか?
上級開発者はあなたを軽蔑したり、あなたより優れていると考えたりしません。それは非常に重要です。自分のエゴを邪魔してしまうと、困っています。
上級開発者は非難を通過しません。彼らは問題を予測し、前向きに対処します。
人々は上級開発者と協力したいと思っています。これは私にとって鍵です。私は人々に私と一緒に働き、彼らに私と一緒に働くことを楽しんでもらいたいです。
上級開発者は最も賢いエンジニアではありません。最も複雑な問題には対応していません。彼らのスキルセットはプログラミングだけではありません。彼らのコミュニケーション能力も同様に重要な役割を果たします。
上級開発者は見積もりが得意です。
上級開発者は常に自分が何をするかを気にします。彼らは、退屈なタスクは、他の潜在的にもっと興味深いタスクと同じ品質で完了する必要があることを理解しています。
明確にするために
私が上に挙げたスキルは、ソフトウェアエンジニアリングの基本的なスキルと実践に加えて、優れた上級ソフトウェアエンジニアが持つべきだと私が信じているものです。
あなたが多くのメンターを務め、ほとんどが最初にあなたに反対した後数年後にあなたに感謝したとき、あなたが命令するかもしれないどんなタイトルにも「シニア」を気軽に付け加えてください。
それまでは、「リード」はおそらくより説明的な用語です。
私にとって、「シニア」という用語は、人々とその恣意的な期待に対処する際の実践的な経験と知恵の集大成を意味します。このシナリオを考慮してください:
チームに16人のプログラマーがいて、それぞれが他のプログラマーと比べて1年以上の経験があります。つまり、16番目のプログラマーは16年以上の経験を持っています。バスが店に激突すると、最も経験豊富な8人のメンバーが悲劇的に殺されます。経験の半分を持っている人は今や上級開発者と見なされますか?私はそうは望みません。会社がボイドをすぐに、失った以上の才能のある人々と置き換えてくれることを願っています。
「 journeyman 」という用語をプログラミングに取り入れたくありませんが、その一部は当てはまります。 「シニア」という用語は、技術的な知識をはるかに超えているため、15年未満の経験を持つ人には言いたくないものです。
この「ジュニア/シニアデベロッパー」のタイトルは間違っており、誤解を招く可能性があります。これには実際の測定単位がないためです。私たちは、実務経験の少ない、または多いすべてのソフトウェア開発者です。ソフトウェア開発者のための階層を作成しようとしないでください。意味がなく、主な焦点である優れたソフトウェア開発チームに害を及ぼす可能性があります。
前の作品を振り返って、それがどんなにがらくただったかを理解するとき。そして、あなたはあなたが良くなっていることを理解していますが、まだ道のりがあり、その学習は永遠です。
時々私は他の職業を見て、なぜソフトウェアプログラミングがそれ自体を標準化しないのか疑問に思います。特定のレベルを取得するための承認された基準があるため、この質問は役に立ちません。それから私は「誰が死んで王を残したのか」という認識に至ります。
経験、教育、認定資格、称号は、プログラマーの能力をごく基本的に垣間見るためのものであることは誰もが知っています。あなたは自分が何をしているか知っているか、または知らないかのどちらかです。あなたはあなた自身の種類のにおいがするか、またはすることができません。
「WHAAAT ....ユニットテスト!!!!私は上級プログラマーです...コードをテストする必要はもうありません」
以前にそれを聞いた....したがって、彼は「ジュニア」に彼のバグを修正させ、それをテストさせる。
「私たちは建築家を雇うつもりです...いいえ、X氏ではありません。もっと年上の人、もうコーディングをしていない人が欲しいのです。」
インタビューの後半:
あなたはどのプログラミング言語に精通していますか?
ahem ...私はCOBOLとFORTRANを使用しましたが、現在はほとんどがMS Word、Excel、PowerPointです。
すばらしい...いつから始められますか?
スティーブンが言うように、本当にシニアは視点の問題、タイトルです。しかし、結局のところ、重要なのはあなたが書くコードですが、残念ながら多くの場合、スーツとネクタイはより大きな影響を及ぼします。具体的な成果(コード)で測定されなくなった場合は特に、階層の本質を納得させます。
他の人があなたを上級開発者と呼ぶとき。一つの定義はありません。会社から会社への変化。落ち着いた会社では、新入生の仕事が減り、学習曲線が遅くなります。新興企業では、新入社員は多くの責任を負い、短時間で多くのことを学ぶことができます。私はこれを直接体験しました。残念ながら、コードや作業の品質を調べて知識の深さを計算できるのは、他の経験豊富な人々だけです。そして、時間切れになったときに誰もが彼らの称号を手に入れると確信しています。
そして、あなたがそうしなければ、あなたは会社を変えます。 :-)
他の多くのタイトルと同様のタイトルです。ここのこれらの「十代の若者たち」は博士号を持っているかもしれませんが、それは必ずしも何も意味しません。しかし、それは明らかに彼らに高い給料を与えるでしょう。同じことがシニアデベロッパーまたはシニアアーキテクトにも当てはまります。またはシニアプロジェクトマネージャーなど.
そのことを考えると、長年の経験を経て自分のカードにそのタイトルを追加するよりも、同僚に「私たちの上級開発者」と呼ばれる方が良いです。 :-)
それ以外は、最低でも10年は必要だと思います(大学などの教育を含む)。
最近、1年未満の経験を持つCSの卒業生を探している求人情報を見ました。これは単なるタイトルだとしても、私には狂気のようです。一つには、それはタイトルの骨抜きを示唆しています。これらの投稿で見た2社には、本当の先輩を表す「スーパーシニア」のタイトルが付いていると思います。私が思うに悪い雇用戦略ではありません。タイトルはすべてではありませんが、2つの仕事の間で他のすべてが同じであるため、おそらく「マスターチーフデベロッパー」の肩書きを持つジョブを採用します。
「マスターチーフデベロッパー」(またはその上位のポジションが「シニア」またはそれ以外の場合)が実際に正当化される時点は、ピン留めするのが難しいですが。それを定量化することについてあまり客観的になることはできないと思います。大まかな式として、私は彼らが部屋で通常最高であり、部屋に少なくとも8人のプロの開発者が含まれている場合、彼らはシニアと呼ばれるべきだと私は言うでしょう。これは、シニアが最低でも87パーセンタイルであることを示唆しています。これらの開発者はおそらく最も経験のある開発者だと思いますが、その経験==「上級」、またはそれに近いとは絶対に言いません。同時に、7歳または8歳未満の真の先輩の数は非常に少なくなければならないのではないかと懐疑的ですが、それ以下の人がマスターになることは不可能ではありません。
私は22歳なので、確かに「マスターカテゴリになる可能性は低い」に分類されます。私はこれらの「1年の経験の10(または30)年」タイプのいくつかの周りにいて、正直に私が優れていると思って誘惑されますが、それらの人々は、たとえ彼らがまったく努力をしなくても、何十年も学習してきましたが、多分、純粋な浸透を通して、多種多様な主題について、おそらく私よりも多くの知識を得てきました。完全なプロジェクトライフサイクルについて、彼らほど多くを知ることはできません。私は、自分のプロジェクトよりも年上の人と一緒に仕事をしています。彼よりもその範囲のプロジェクトを維持することについて私がもっと知っていると本当に思うのは、私にとってかなりおかしいでしょう。
心に留めておくべきもう1つのことは、自分を22歳でシニアと呼び始めた場合、32歳はどうなるのでしょうか。あなたがすでにトップにいると想定するのは、将来に少し不快です。多くの人は、10,000時間のルールを参考にして、いつエキスパートになるかを決定します。アイデアが提案されているマルコムグラッドウェルの本では、専門家が単に最高のだけではなく、特定の役割を果たしていることは明らかです。初心者は決して最悪ではありませんが、それは能力よりも方法の説明です。初心者は奇抜なことをすぐに学ぶことができますが、多くの場合、最も一般的なことのいくつかを、専門家である人と同じくらい速く行うのに苦労します。専門家は、日常的なことを極めて正確かつ迅速に行うことができ、どの問題を探すかは問題を示している可能性がありますが、変化に対応したり、快適ゾーンの外にあるものを学んだりするのは困難です。それを念頭に置いて、私はまだ専門家になりたくありません。安定したドメインに落ち着く前にできる限り、できるだけ多くの新しい情報を吸収したいと思います。
それはお金と関係があるかもしれません。
一部の企業は、決められた給与プランに従っています。いくつかの与えられた規則のため、彼らはあなたを「開発者」のはしごの真ん中に置くことはできません。しかし、彼らは「上級開発者」のはしごの下にあなたを置くことができます。
個人的には、人が大学を出てすぐに上級の称号を与えられるのは奇妙だと思いますが、反対側では誰が気にしますか?私は10年ほど「開発者」として働いていますが、職場を変えると「先輩」の称号を手に入れても意味がありません。私はまだ新しいドメインの新入生です-少なくともしばらくの間...
本質的に「従来の技術面接」ではない少なくとも1つの面接セッションに基づいて就職するのは初めて(つまり、アーキテクチャ、概念、設計、会社の見方、経験などについて話します)
私の(限られた)経験では、ジュニア開発者は通常、インタビューの質問の標準的なバッテリーのパフォーマンスに基づいて純粋に採用され、シニア開発者は他のさまざまなやり取りに基づいて採用されます。
10年 ??冗談でしょう。では、10年をどのように定義しますか? 15歳でプログラミングを始めたが、25歳で留学生になったとしましょう。
業界はそのようには機能しません。さまざまな企業が、5〜8年の間はいつでも、シニアDev XまたはYと呼んでもよいと思います。組織の多くの年功序列は能力だけでは得られません。それは、個人が取っているイニシアチブと、彼が分かち合うことを望んでいる責任の種類と関係があります。ほとんどの場合、合理的なスキルと強いモチベーションを持つ人々は上級プロになります。
ところで22歳は10代ではありません;-)