SheCanCode
その答えは?
この2つの役割に公式な区別はなく、企業はそれぞれの経験や知識を活かして、ニーズに合った説明を定義しています。 さらに混乱させるのは、地域による違いや、教育による明確な違いです。
『Computer Science Degree Hub』によると、ソフトウェア開発者とソフトウェア エンジニアは、それぞれ別の役割を担っています。
「ソフトウェア工学は、ソフトウェアを作成するための工学的原則の適用を意味します。ソフトウェア エンジニアは、クライアントのニーズと適用可能な技術ソリューションを結びつけることによって、ソフトウェア開発のライフサイクルに参加します。
「ソフトウェア工学とは、ソフトウェアを作成するための工学的原則の適用である。
一方、ソフトウェア開発者は、プログラムの創造的な原動力となります。 ソフトウェア開発者は、開発プロセス全体に責任を持ちます。 クライアントと協力して理論的な設計をするのは彼らです。 そして、コンピュータ・プログラマーに、ソフトウェアを正しく動作させるために必要なコードを作成させます。 コンピュータプログラマーは、ソフトウェア開発者とともにテストを行い、問題を解決していきます。
Udacityは、ソフトウェア開発ライフサイクルのすべての段階において、プロジェクトのリーダーシップと技術的なガイダンスを提供することに同意しています。 開発者はコードを書く方法を知っており、意味のある製品を構築するために必要な技術的なスキルを持っている可能性があります。 ソフトウェア エンジニアは、要件を理解し、利害関係者と協力し、彼らのニーズを満たすソリューションを開発する体系的なプロセスに従います。 デベロッパーは、単独で仕事をする傾向があります。 ソフトウェア・エンジニアは、より大きなチームの一員である」
では、実際にはどうなのでしょうか。
ソフトウェア エンジニアのスキルと仕事内容
エンジニアは、複雑なシステムを管理できる、高度なソフトウェア開発者である。 完全に機能するアプリケーションを構築できるだけでなく、リファクタリングしやすく、自己記録しやすく、結果としてデバッグしやすい方法で構築する方法を知るのに十分な経験を持っている人です。
様々なプロジェクトにおいて、リーダー、コンサルタント、個人貢献者として積極的な役割を担っていただきます。 また、顧客や会社が戦略的目標を達成するために、新しいITの利用方法を特定し、導入する際に、分析的なアドバイスを提供しなければなりません。 また、リソースの管理、開発タスクの調整、技術的なプロジェクトプランの監督を行うことができなければなりません。 また、「痒いところに手が届く」ようなサービスを提供するために、「痒いところに手が届く」ようなサービスを提供するために、「痒いところに手が届く」ようなサービスを提供するために、「痒いところに手が届く」ようなサービスを提供するために、「痒いところに手が届く」ようなサービスを提供するために、「痒いところに手が届く」ようなサービスを提供します。 そのため、このような「痒いところに手が届く」ようなサービスを提供できるのです。
-
技術的な専門知識を持ち、幅広いプロジェクトで働いた経験がある
-
弾力性があり耐障害性のあるシステムを作るためのパターン設計に精通している
-
Gherkin, Cucumber, Ansibleなどのツールを使ったテスト自動化を使う
-
ITアーキテクチャ、大規模データストア、クラウド型システムを作成し保守する方法が分かっていること
ソフトウェア・エンジニアリング・エンジニアには、以下のことが期待されている。
-
Build scalable deployment pipelines, to support Continuous Integration and Continuous Delivery
-
They must be able to work effectively by themselves and with remote teams.
-
Senior software engineers must oversee complex systems analysis, design and development programs.
A Software Engineer role will typically involve:
-
Research, design, develop and test their software as well as compiling and distributing software over the network
-
Modify existing software is to resolve defects, to adopt a new hardware or improve its performance.
-
Analyze the user needs and assess software requirement including design feasibility and cost/time constraints.
-
仕様や設計に関して顧客と相談する
-
展開やインストールのためのシステムソフトウェアの調整
-
監督は技術者やエンジニアの仕事
Software Developer Skills and Job Description
ソフトウェア開発者は単にコードを書くことに責任を負うだけではなく、現行のシステムをレビューして、改善のためのアイデアを出し、その際に必要となる努力なども行う必要があります。
このように、「痒いところに手が届く」という言葉がありますが、これは「痒いところに手が届く」のではなく、「痒いところに手が届く」のです。
-
継続的にニーズとソフトウェア能力を比較する必要があるので優れた分析スキルも必要であると言えます。
-
Java、C#、C++、Python
-
GitHubなどのオープンソースツールの使用経験
-
優れたフィードバックとコミュニケーションスキル、細かい点への強い注意力、小さなミスが大きな問題を引き起こす可能性があるから
-
詳細志向は異なる開発段階の同時プロジェクト管理に役立つはずです。
-
不慣れな言語であってもコードの論理を理解する。
ソフトウェア開発者は、高い品質と一貫性を確保するために、欠陥の解決を含め、自分が行った変更を継続的に監視する必要があります。 その結果、割り当てられた仕事の間を常に行き来し、締切やスケジュールを管理しなければなりません。
ソフトウェア開発者とエンジニアの主な違いをまとめると、次のようになります。
開発者は実行します。
開発者は実行する。その才能はしばしば単一分野に集中する。 全体像を把握する必要がない。 そのため、ソフトウェア開発者は、ソフトウェア開発サイクルの一部であるコードの開発に主に焦点を当てます。
エンジニアは、工学の原理をソフトウェア開発に適用して設計・計画します。 常に「全体像」を意識し、様々な分野で才能を発揮する。 開発者としての役割も担いますが、エンジニアの本分はアーキテクチャにあります。
結局のところ、ソフトウェアエンジニアリングとソフトウェア開発の大きな違いは、後者がエンジニアリングを監督するのに対し、前者は機能的なプログラムを作成することに重点を置いている点です。
「ソフトウェア開発者」になるには、誰でもなれるということではなく、プログラミングの概念を少し知っていれば、「ソフトウェア開発者」になるための基礎はできているのです。
そして、そのような開発者は、パフォーマンスやスケーラビリティを分析することなく、コードを書くことになります。
ソフトウェア開発者またはエンジニアであれば、常に新しいことを学ぶことができ、多くの人がプロジェクトやクライアントに応じて2つの役割を切り替えています。
「ソフトウェア開発者」と「ソフトウェアエンジニア」の違いは、自分自身で判断することができます。