Skip to content

投稿

技術の習得:シニアソフトウェアエンジニアの必須スキル

2012年10月31日 • 7分で読める

技術の習得:シニアソフトウェアエンジニアの必須スキル

「シニアデベロッパー」と聞くと、プログラミングを習得した人を思い浮かべます。システムを設計、コーディング、テストできる人を思い浮かべます。システムアーキテクチャやコンポーネント設計について話すことができます。デザインパターンを理解し、使用します。この人はパフォーマンスのボトルネックを予測できますが、事前最適化をしないことを知っています。この人は適切な場合に非同期プログラミング、キューイング、キャッシング、ログ記録、セキュリティ、永続化を活用します。質問されれば、その選択の詳細な説明と長所と短所を説明できます。ほとんどの場合、オブジェクト指向プログラミングと設計を習得していますが、これは絶対的なものではありません。JavaScript、F#、Schemeなどの他の言語は強力で、本質的にはオブジェクト指向ではありません。リスク管理に長けており、最も重要なことは、前述のことを同僚に伝えることができることです。

習得とは何でしょうか?一般的に受け入れられている考えとして、任意のスキルを習得するには、人間の体と心がスキルを把握し内在化するために10,000時間の反復が必要だというものがあります。これはマルコム・グラッドウェルの著書『アウトライアーズ』で詳しく書かれています。

マルコム・グラッドウェルの『アウトライアーズ』の例をいくつか挙げると:

モーツァルトは21歳という若さで最初の協奏曲を作曲しました。最初は若く見えますが、彼は11歳から音楽を書いていました。

ビートルズは最初は敬遠されました。彼らには才能がなく、別の仕事を考えるべきだと言われました。彼らはドイツで3年間過ごし、異なる会場で約1200回演奏し、それぞれ5〜8時間の長さでした。彼らは今日私たちが知り愛するビートルズとして再び現れました。

そして最後に、ビル・ゲイツは20歳でハーバード大学を中退してマイクロソフトを設立しました。これは愚かに見えるかもしれませんが、20歳で彼は若い人生のほぼ半分をプログラミングに費やしていたことを考えてください。1975年、世界で彼ほどの経験を持つ人はおそらく50人程度でした。彼の経験は、マイクロソフトの未来を見通す先見性を与えました。

ピーター・ノーヴィグも彼のエッセイ「10年でプログラミングを自分で教える」で10,000時間の法則について論じています。

ジョージ・レナードの著書『習得』では、スキルを習得する方法について詳細に説明されています。スキルを何度も何度も練習しなければなりません。反復が多いほど、各反復の違いをより意識するようになります。この洞察があってこそ、より良くなることができます。

ソフトウェア業界の肩書き(ジュニア、ミッドレベル、シニア)は誤解を招きやすく、組織によって一貫していません。シニアデベロッパーを5年以上の経験を持つ人と定義する会社で働いたことがあります。経験の質については言及されておらず、単にコンピューターの前に5年間座っていたということだけです。これらの人々と働く中で、多くの人がまだオブジェクト指向プログラミングを把握していないにもかかわらず、シニアデベロッパーと見なされていました。

ソフトウェアエンジニアのスキルセットを測定するより良い、より客観的な方法があるはずです。ジョン・ハウゲランドはコンピュータープログラマーのスキルマトリックスを考案しました。これはプログラマーのスキルレベルを測定する共通の客観的な方法を提供し、そうでなければ主に直感に委ねられています。

ソフトウェアエンジニアを見るとき、私は4つのスキル階層を見ています:ルミナリー、シニア、ミッドレベル、ジュニア。

**ルミナリー(10年以上)**はスキルを習得し、それぞれの分野を改善することに着手した人です。例には以下が含まれます:テッド・ニューワードアンクル・ボブ・マーティン、ドナルド・クヌース、オレン・アイニピーター・ノーヴィグ、リーナス・トーバルズ。これはあなたのスキルセットによって変わります。

**シニア(7〜10年以上、レベル3)**は特定のジャンルでプログラミングに10,000時間を費やした人です。デザインパターンの強い理解があり、適切な場合に非同期プログラミング、キューイング、キャッシング、ログ記録、セキュリティ、永続化を活用します。

シニアがルミナリーに到達しない可能性は十分にあります。ルミナリーはしばしば講演や執筆を行っています。彼らは積極的に自分の分野に影響を与えようとしています。

**ミッドレベル(4〜6年、レベル2)**は日常的なプログラミングを理解している人です。独立して作業し、堅牢なソリューションを作成します。しかし、大規模または複雑なシステムの作成や保守の経験はまだありません。一般的に、ミッドレベルの開発者はコンポーネントレベルの開発が得意です。

**ジュニア(1〜3年、レベル1)**はプログラミングの基本を理解している人です。ソフトウェアエンジニアリングまたはコンピューターサイエンスの学位を持っているか、独学です。彼らのコードは継続的にレビューされます。アルゴリズム、保守性、構造に関してガイダンスが提供されます。

著者:Chuck Conwayはソフトウェアエンジニアリングと生成AIを専門としています。ソーシャルメディアで彼とつながりましょう:X (@chuckconway) または YouTube をご覧ください。

↑ トップに戻る

こちらもおすすめ