Culture Entry

論説:設計者 vs エンジニア vs 開発者

2019-03-28

author:

論説:設計者 vs エンジニア vs 開発者

David J Eddy      
AWS認定(x4)、自動テスト/継続的インテグレーション/Delivery/デプロイ(CI/CDs)、クラウド、コンテナー、Dev(Sec)オペレーション、ソフトウェアエンジニア

設計者・エンジニア・開発者の違いは、言葉の意味合い的なものであるという人もいれば、ペダンチックだという人もいて、そんな事は考えるだけ時間の無駄だという人さえいます。ですが、私の考えは違って、そこには大きな違いがあると思います。これからその理由をご説明していきましょう。

単語の語源と意味Dictionary.comより)

設計者 (Architect)

建物を設計し、また多くの場合その建築を監督する人。
類義語:designer, planner, builder, building consultant, draughtsman
例:”the great Norman architect of Durham Cathedral”

動詞(コンピューター用語)

設計して作ること。
例:”few software packages were architected with Ethernet access in mind”

エンジニア (Engineer)

エンジン、機械、公共の建造物などを設計、建築、または保守する人。
類義語:designer, planner, builder, architect, producer, fabricator, developer, creator; inventor, originator, deviser, contriver, mastermind
例:”the structural engineer’s drawings”

動詞

設計して構築すること。(機械や構造など)
例:“the men who engineered the tunnel”

開発者 (Developer)

何かを開発する人または物。
例:”a property developer”

  • 特定の時間・速度で成長、成熟する人。例:”I was a slow developer”
  • 写真フィルムの現像に使用される化学薬品。

このように、設計者(コンピューター用語)は「設計」「制作」する人、エンジニアは「設計」「構築」する人、そして開発者は特定の時間・速度で成長、成熟する人、ということになります。「開発者 (Developer)」が人の状態を表す一方、他の2つは人の動作を表しています。

各用語に「ソフトウェア」を追加して、ウィキペディア先生が何と言うか見てみましょう。

ソフトウェア設計者とは、ハイレベルな設計を行い、ソフトウェアコーディング標準、ツール、プラットフォームなどの技術標準を決定する、ソフトウェア開発の専門家である。
ソフトウェア設計者 – Wikipedia
https://en.wikipedia.org/wiki/Software_architect

ソフトウェアエンジニアとは、ソフトウェアエンジニアリングの原則を、コンピュータソフトの設計、開発、保守、テスト、および評価に適用する人を指す。1970年代半ばより以前は、実際の職業に関係なく、ソフトウェア実務家は自分自身をコンピュータプログラマーやソフトウェア開発者と呼んでいた。
ソフトウェアエンジニアWikipedia
https://en.wikipedia.org/wiki/Software_engineer

ソフトウェア開発者とは、コンピュータソフトの研究、設計、プログラミング、およびテストを含む、ソフトウェアの開発プロセス面に関心を持つ人を指す。似た意味の言葉で、プログラマー、ソフトウェアアナリスト、ソフトウェアエンジニアなどがよく使われる。
ソフトウェア開発者 – Wikipedia https://en.wikipedia.org/wiki/Software_developer

このとおりウィキペディアによると、設計者は高度なデザインを行い、標準を設定し、そしてツールを選びます。その一方、エンジニアと開発者というのは、かなり近いものとされます。設計者がエンジニアや開発者とどう異なるのかを示す2つの例がありますので、この違いをはっきりさせましょう。

もしこれが何であるか知っているなら、あなたにとって良いことだ。
もしこれがどこから来たものか知っているなら、是非とも教えて頂きたいものだ。

エンジニア vs 開発者

Software Engineer Insider」には、この違いについて説明した(短いですが)素晴らしい記事が載っています。言い換えると、狭義の開発者というのは、コーディングに焦点を当てた言葉です。エンジニアというのは、クライアントの要求から最終的なデプロイまで、つまり製品のSDLC(開発ライフサイクル)の「全体像」、および「クライアントの要件」について理解している人を指します。

Jason McCrearyもまた、これを端的に述べています:

開発者
開発者とは、実行する人。彼らの才能はしばしば一つの分野に集中しており、「全体像」は必要とされない。

エンジニア
エンジニアとは、設計し、計画する人。「全体像」を常に意識しており、多岐に渡る才能を持っている。エンジニアは、開発者の役割も担うことができるが、その主な役割は設計である。

結論

私の意見は、上記の他にも多くの対話と、それよりもっと多くの研究により裏付けされ、次のような知見と合意に基づいて形成されたものです:設計者はハイレベルな設計やツールの選択を行う。エンジニアは科学的思考と方法論的プロセスを適用して構築する。開発者は、それが動作するようコンピューターのコードを書く。

あなたはどう思いますか?私はペダンチックの度が過ぎると思うでしょうか?それとも、そんな事はどちらでも構いませんか?あなたは設計者で、他の誰かがあなたをコーダーと呼ぶと侮辱されたように感じたりしませんか?

この記事は、著者の許可を得て翻訳しています。なお、原文はこちらです。

この記事が気に入ってくれたら、ぜひピックしてください!