소프트웨어 엔지니어와 프로그래머의 주요 차이점은 무엇입니까? [닫은]


103

소프트웨어 엔지니어와 프로그래머의 주요 차이점은 무엇입니까?


1
Joel은 이미이 질문을했습니다. 이것은 대답하기 쉬운 질문이 아니며 명확한 대답이 있는지 확실하지 않습니다. 그러나 나는 Joel이 이미 그 질문을 제기했다는 것을 알고 있습니다.
Denaem

답변:


80

채용시 시스템 설계, 프로세스 정의, 기술 사양 작성, 고급 리팩토링 구현 등을 도와 줄 사람과 점검 목록에서 프로그래밍 작업을 완료하도록 도와 줄 사람을 구분합니다. . 전 당신을 소프트웨어 엔지니어 로, 후자를 프로그래머 라고 부를 수 있다고 생각합니다 .


10
(다른 직업을 위해) 두 사람이나 소프트웨어 엔지니어 만 고용하겠습니까?
Jaap

2
당신 전자를 소프트웨어 엔지니어라고 부를 수 있지만, 그렇지 않습니다. 브렌던이 애를 썼 듯이, 그것은 일반적으로 소프트웨어 아키텍트의 일입니다.
JᴀʏMᴇᴇ

131

교파 나 다른 교파를 시행 할 법적 틀이 없다고 생각하거나 적어도 내가 아는 바가 아니라고 생각하기 때문에 회사에 달려 있습니다 (예 : 용어 사용) "엔지니어"는 실제로 프랑스에서 상당히 규제되지만 "거의"사례에 허용되는 변형이 있습니다.

일반적인 추세는 다음과 같습니다.

  • 프로그래머의 위치는 보통의 하나 인 컴퓨터 프로그램의 코드를 생성하기 위해 고용 전문 . 그것은 당신이 있다는 것을 의미합니다 코드를 작성하는 방법을 알 수 있으며, 알고리즘을 이해 하고 사양에 따라 . 그러나 일반적으로 책임 측면에서 중지됩니다.

  • 개발자의 위치는 일반적으로 간주됩니다 프로그래머 위치의 슈퍼 타입 . 여기에는 동일한 책임 뿐만 아니라 소프트웨어 구성 요소를 설계 및 설계 하는 기능 과 이에 대한 기술 문서 (사양 포함) 를 작성하는 기능이 포함됩니다. 적어도 기술적으로는 다른 사람들 (그래서 프로그래머)을 이끌 수는 있지만 반드시 팀이 될 필요는 없습니다 (퍼지가옵니다 ...)

  • 엔지니어의 위치는 일반적으로 당신이 개발자 것을 의미 할 정도의 특정 유형이있다 , 일부 공학의 지식을 ,이고 시스템을 설계 할 수있는 (: 소프트웨어 구성 요소의 조합 / 함께 전체 소프트웨어 엔티티를 형성 모듈에서와 같이) . 기본적으로, 당신은 더 넓은 그림을보고 , 당신은 설계하고 설명 할 수있는 그것을하고 작은 모듈로 분리 .

그러나이 모든 것은 논쟁의 여지 가 있으며, 내가 말했듯 이 미국 / 영국 국가에서 내가 알고있는 법적 요구 사항은 없습니다 . 그러나 프랑스에서는 엔지니어링 스쿨 (Tirets d' Ingenieurs위원회 또는 이와 유사한 것으로 인정 된)에서 온 경우에만 "엔지니어"라고 부를 수 있습니다. 당신은 "엔지니어 학위"를 가지고 있다고 말할 수는 없지만, 공학과 기술의 영역에 속하는 학문을 공부했다면 "공학 학위"를 가지고 있다고 말할 수 있습니다.

일부 국가의 경우 비슷한 차이가있을 수 있습니다.

소프트웨어 엔지니어 타이틀로 돌아가서 ... 일단, 선생님 중 한 분이 우리 반에게 말씀 하셨는데 , 현재로서는 소위 "소프트웨어 엔지니어링"과 같은 것은 없습니다 . 엔지니어링 (건물, 차량, 하드웨어 등)은 설계와 생산의 모든 단계를 계획하고 필요한 리소스를 정확하게 예측할 수 있다는 의미이므로 생산 비용.

이것은 대부분의 "진정한"엔지니어링 분야에 해당됩니다. 물론 변동 사항이 있습니다 (예를 들어 재료의 가격은 시간이 지남에 따라 다를 수 있음). 그러나 매우 유한 한 이론적 모델 (디자인 및 계획)과 경험적 모델 (전자를 접근 가능한 제약 조건 내에서 거의 유지하기 위해) 프로젝트 종료 날짜 및 리소스 사용량을 예측할 수 있습니다.

소프트웨어의 주요 문제점은 아직 소프트웨어가 없다는 것입니다. 우리는 소프트웨어 엔지니어링을 목표로 삼고 싶지만 아직 실제로는 없습니다. 우리는 매우 유동적이고 역동적 인 환경, 프로젝트에 대한 매우 가변적 인 제약, 그리고 프로세스의 성숙도 부족으로 인해서. 물론 우리가 더 잘할 수 있다고 말할 수는 있지만 (하드 데이터에 대해 논쟁의 여지가 있지만) 60 년대 이후의 프로젝트에 불과했습니다 (이전 프로젝트는 실제로 하드웨어 전용 컴퓨터에 더 가깝기 때문에 실제 엔지니어링에 더 가깝습니다. ). 우리는 100 년이 넘는 기간 동안 자동차, 일반적으로 몇 천년 동안의 자동차, 그리고 더 많은 밀레니엄을위한 건물을 건설 해 왔지만 (세계 일부 지역에서 실제로는 아주 훌륭했습니다.) '

우리는 마감일을 정확하게 체계적으로 예측 하지 못하고 , 체계적으로 비용을 정확하게 예측 하지 못하며 , 내재적 및 외부 위험을 효율적이고 결정적으로 체계적으로 식별하고 완화하지 못합니다 . 우리가 관리 할 수있는 최선의 방법은 충분한 추측을 생성 하고 일부 버퍼를 수용하는 한편 사이클과 오버 헤드를 줄이기 위해 프로세스를 최적화하기 위해 최선을 다하는 것입니다.

그러나 아마도 엔지니어링이 그런 것 같습니다. 그리고 누군가가 "소프트웨어 엔지니어"에 대해 이야기 할 때 생각하고 목표로 삼아야합니다.

따라서 간단한 프로그래밍 루틴이나 응용 프로그램 개발의 고급 동작과 거의 호환되지 않는 것 같습니다.

여전히 모든 것은 추세의 문제입니다. 최근에 팀의 모든 사람들이 시니어 소프트웨어 개발자 (예, 자본은 우리가 특별하다고 느끼지 않기 때문에 자본은 특별하지 않습니까?) 인 수평 개발 팀을 갖는 것이 일반적입니다. 의견)과 기술 (uh-oh ...)과 책임 (지금은 PR 버즈와는 별개로 좋을 수 없습니다)을 그렇게 많이 구분하지 않습니다.

또한 때로는 습관의 힘이며 산업 문화와 전문 용어에 따라 다릅니다.. 임베디드 소프트웨어 생산을위한 더 많은 직책은 소프트웨어 엔지니어를위한 타이틀을 사용합니다. 대부분이 분야에서 하드웨어를 항상 어느 정도 다루어야 함을 의미하기 때문에 생산의 다른 측면과 생산하는 "시스템"의 다른 측면을 분명히 다루어야합니다. 비트가 안에 들어가는 것만이 아닙니다. 반면에, 금융 소프트웨어 생산 위치에서 엔지니어라는 용어가 실제로 사용되는 것은 아닙니다. 그것은 전임자 중 한 명이이 산업을 모방 한 진화 (예를 들어, 임베디드 엔지니어링이 자동차 엔지니어링의 근간을 찾음) 때문이거나 어느 정도의 신용 / 무게를 주려고하기 때문입니다.

그리고 안개 속에서 모든 사람을 풀어 주려면 "Software Development Engineer"또는 "Software Engineer in Test"와 같이 다른 타이틀을 혼합 한 다음 다른 도메인과의 더 미친 다리를 강조하는 다른 타이틀을 찾을 수 있습니다. "소프트웨어 아키텍트"와 "소프트웨어 아키텍쳐"가 어리석은 어휘 도둑질 방법에 대해 생각해보십시오. 그리고 출시 엔지니어, 변경 개발 관리자, 빌드 엔지니어 (필요한 사람도 있음)를 계속 유지하십시오. 때로는 단순히 "엔지니어"입니다.

그것이 실제로 대답은 아니지만 도움이되기를 바랍니다.

아, 그리고 그것은 당신의 새로운 회사가 새로운 타이틀로 당신을 유혹하려고하거나 그들이 실제로 타이틀에 관심이 없거나, 당신이 정말로 더 높은 직책을 가질 것이라는 것을 의미합니다. 알 수있는 유일한 방법은 작업 사양을 읽고 그들에게 말을 걸어 결국 기회를주고 스스로 판단하는 것입니다. 나는 이것이 후자의 선택이고 당신이 그것에 만족하기를 희망합니다 (그리고 잠재적으로 더 많은 돈을 벌 수 있음). ;)


12
"실용적인 프로그래머"라는 책은 또한 소프트웨어가 엔지니어링과는 다르다고 말합니다. 소프트웨어 엔지니어링에 대한 비유와 같은 집이나 마천루를 계획 할 수는 없지만 거의 사용할 수 없습니다. 그들은 소프트웨어가 원예와 비슷하다고 말합니다. 정원을 계획하고 식물을 심으십시오. 그런 다음 자라는 것을보고 잡초를 제거하고 새로운 식물을 심으십시오.
팔콘

6
"교사가 오늘 우리에게 소위"소프트웨어 엔지니어링 "과 같은 것은 없다고 말합니다. 엔지니어링이란 무엇인가를 설계하면 디자인과 제작의 모든 단계를 계획하고 정확하게 예측할 수 있습니다. 필요한 리소스 "를 참조하십시오. 그것이 쓰여지는 순간 그것은 사실이 아닐 수 있습니다. 건축과 마찬가지로 요구 사항을 알지 못하면 비용을 예측할 수 없습니다 (고층 빌딩 비용은 얼마입니까? 건물을 시작하기 전에 얼마나 높아야하는지 ...). 그러나 성숙한 소프트웨어 개발 그룹을 고려하면 나중에 비용 예측할 수 있습니다 .
MSalters

1
@MSalters : 물론,이를 바꿀 수 있습니다. 아키텍처와 마찬가지로 요구 사항없이 비용을 예측할 수 없습니다. 그러나 아키텍처와는 달리 잘 정의 된 요구 사항이 있더라도 (예상하기 어렵거나 변경이 가능한 경향이 있기 때문에 더 유동적이지만) 비용을 예측할 수 없습니다. 일반 엔지니어링에서는 매우 정확한 수준으로이 작업을 수행 할 수 있으며 현재 SE보다 특별한 상황에 대한 비용을 더 많이 식별 할 수 있습니다. 우리는 단지 (거의 거친) 추측 만합니다. 우리는 그것들을 만드는 데 점점 더 나아지고 있지만 여전히 추측이 많습니다.
haylem

3
@haylem : 이것이 소프트웨어 개발의 표준입니다. 그러나 CMM 레벨 4/5 회사에서 근무한 경우 비용 예측할 있으며 종종 95 % 신뢰 수준을 부여 할 수 있습니다. 그들은 자신의 소프트웨어 기반을 충분히 이해하고 있으며,로드 블록이 거의 없다는 충분한 요구 사항을 가지고 있습니다. 또한 처리 경험이 있으면로드 블록 비용이 저렴합니다.
MSalters

1
@ pcurry : 나는 이것을 "내 분류법"이라고 주장하지 않는다. 채용 담당자와 기업 급여에서 이와 같이 일반적으로 간주되며 CS ot IT 과정에서 자주 고려되는 방식이기도합니다. 그들은 서로를 쏘는 경향이 있습니다. 그래서 나는 (자체적으로) 프로그래머가 아닌 (소위) 소프트웨어 엔지니어가 채택한 견해를 분명히 열거 한 것 같습니다. 당신이 무엇을 부르든 상관없이 사람들이 당신을 중요하게 생각할 것입니다. 그리고 당신이 그런 종류의 것들에 관심이 있다면 그것은 중요합니다. 솔직히, 나는 개인적으로 하나도 상관없고 나를 바꾸지 않습니다.
haylem

81

소프트웨어 엔지니어 는 회사에서 일하는 사람들을 위해 소프트웨어를 작성하는 사람들을 "소프트웨어 엔지니어"라고 부릅니다.

프로그래머 는 소프트웨어를 작성하는 사람들을 "프로그래머"라고 부르는 회사에서 일하는 사람들입니다.

도 있습니다 개발자 , 또는 소프트웨어 개발자 . 이들은 각각 "개발자"또는 "소프트웨어 개발자"를 위해 소프트웨어를 작성하는 사람들을 부르는 회사에서 일하는 사람들입니다.


26
이 답변은 실제로 재미 있지 않다는 점에 유의해야합니다.
Jer

15

따라서 "소프트웨어 엔지니어", "프로그래머"및 "개발자", "코더"가 있으며 "SOA 전문가"를 잊을 수 없습니다.

이 용어는 이전 직책에서의 직무뿐만 아니라 실제 역할과 같이 자신의 이력서에서 의미있는 말을 할 수없는 사람들을위한 마케팅 용어입니다.

구인 광고에서 그 차이는 HR 담당자와 다릅니다.

결론 : 모든 사람은 "코드를 사용하여 훌륭한 직원을 만드는 방법"에 대해 스스로 취해야하며 그러한 기술을 그러한 직책과 연관시키는 것을 좋아합니다.

무엇을해야합니까? 구인 광고는 필요한 기술에 대해 설명해야하며 CV는 응시자의 경험 세부 정보를 설명해야합니다.


10

차이점이 없습니다. 그들은 같은 것입니다. 그러나 회사는 해당 용어를 사용하여 공식적인 직무 설명을 가질 수 있으며 해당 용어에 대해 회사 고유의 의미가있을 수 있습니다.


8

프로그래밍은 코드에 관한 것입니다. 소프트웨어 엔지니어링은 최종 제품에 관한 것입니다.


3

그것은 회사가 어떻게 직책을 정의하는지에 달려 있습니다. 소프트웨어 엔지니어에게는 더 많은 디자인 결정 기회가있을 수 있지만 개발자는 UML 다이어그램을 제공하고 프로그램을 작성할 수 있습니다.

그러나 제목을 기반으로 사람들이 자신이하는 일이나 경험이있는 사람을 알 수 있도록 실제 세트 정의가 없습니다.

내가 건축가 / 개발자 였을 때, 제목은 컴퓨터 과학자 였지만, 처음 두 사람이 쉽게 정의되지 않았기 때문에 대부분의 사람들은 프로그래머가하는 일을 알고 있기 때문에 사람들에게 내가 프로그래머라고 말할뿐입니다.

제목이 중요한 경우 엔지니어보다 개발자의 소리가 높으므로 새 제목을 수락하십시오.


3

내 경험으로는 다음과 같은 "공식적인 차이"가 없다고 생각합니다.

  • 일부 회사는 소프트웨어 엔지니어와 소프트웨어 개발자를 사용하여 동일한 것을 언급합니다. 그들은 단지 그들이 좋아하는 용어를 사용합니다.
  • 다른 사람은 다른 내부 위치에 두 용어를 사용하지만 역할은 회사마다 다릅니다! 어떤 경우에는 기능에 차이가있을 수 있습니다 (소프트 엔지니어는 시스템의 유지 관리 및 개선 작업을 수행하는 반면 개발자는 회사 제품을 작업 할 수 있음). 엔지니어는 실제로 Q & A에 의존합니다!

또한, 변화하는 패션 용어도 있습니다 ... 먼저 용어는 "프로그래머", "소프트웨어 엔지니어"그리고 이제는 "개발자"인 것으로 보입니다 ...

작업 설명을 읽거나 특정 회사의 누군가에게 읽는 것이 좋습니다


3

일부 관할 구역에서 "엔지니어"는 P. Eng을 보유한 전문 엔지니어가되어야합니다. 자격 증명 중 그러나 다른 지역에서는 몇 년 전 워싱턴 주에서 일했던 "소프트웨어 디자인 엔지니어"와 같은 차이가 없을 수 있습니다.


2

소프트웨어 엔지니어는 예를 들어 5 년에서 16 년 사이에 개발하는 데 많은 시간이 걸리는 시스템에서 작업하는 경향이 있습니다. 프로그래머들은 이러한 코딩의 고정 관념을 가지고 있고 다른 것은 없습니다. 그러나 그것은 실제로 당신이 일하는 조직과 위에서 설명한 HR이 어떻게 역할을 마케팅하는지에 달려 있습니다. 그들은 본질적으로 같은 것입니다. 제목이 동의어이므로 너무 붙지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.